文档中脚本默认均以 root 用户执行
角色 | 数量 | 描述 |
---|---|---|
deploy节点 | 1 | 运行这份 ansible 脚本的节点 |
etcd节点 | 3 | 注意etcd集群必须是1,3,5,7...奇数个节点 |
master节点 | 3 | 共用etcd节点,master VIP(虚地址)在云管理后台创建,可根据需要提升机器配置或增加节点数 |
node节点 | 2 | 运行应用负载的节点,可根据需要提升机器配置或增加节点数 |
- 准备6台虚机,搭建一个多主高可用集群,
Node
节点内存不低于 4GB - 生产环境一个节点只担任一个角色
- 1个
deploy
节点 网段 10.0.0.3/21 - 3个
master
节点 网段 10.0.8.0/21 ,建议采用 SSD 类型磁盘 - 2个或以上
node
节点 网段 10.0.8.0/21
传统型负载均衡
中创建内网 CLB, 区域与 CVM 相同,取名为k8s-master-lb
,假定为10.0.8.12
- 创建 TCP 类型监听器,前端监听
8443
端口,转发后端6443
端口 - 绑定
master
节点到监听器
负载均衡
中创建应用型外网 CLB, 区域与 CVM 相同,取名为k8s-ingress-lb
- 创建 TCP 类型监听器,前端监听
23457
端口,转发后端23457
端口 - 创建 TCP 类型监听器,前端监听
23456
端口,转发后端23456
端口 - 绑定
node
节点到监听器 - 在本集群关联的网络安全组的入站规则中放行此负载均衡的外网 IP
- 使用自定义系统镜像
k8s-node
安装系统 - 配置基础网络、更新源、SSH登陆等
- 腾讯云后台创建 CLB
-
更新本节点主机名
hostnamectl set-hostname deploy # 重新登录
-
更新主机节点列表
编辑文件vi /etc/hosts
删除云主机自动创建的回环主机名映射行,如下类似
127.0.0.1 VM_0_15_centos VM_0_15_centos ::1 VM_0_15_centos VM_0_15_centos
根据服务器配置添加主机列表,添加
10.0.0.3 deploy 10.0.8.2 master01 10.0.8.3 master02 10.0.8.4 master02 10.0.8.10 node01 10.0.8.11 node02
pip 安装 ansible
yum install python-pip -y
# pip安装ansible (腾讯云服务器自带加速)
pip install pip --upgrade
pip install ansible
# pip安装ansible(国内如果安装太慢可以直接用pip阿里云加速)
pip install pip --upgrade -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install --no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
-
克隆源码
git clone --depth=1 https://github.com/easzlab/kubeasz.git /etc/ansible
-
下载 k8s 二进制文件 从分享的百度云链接,下载解压到
/etc/ansible/bin
目录# 以安装k8s v1.14.1为例 tar -xvf k8s.1-14-1.tar.gz -C /etc/ansible/
-
生成离线 docker 镜像
wget https://raw.githubusercontent.com/waitingsong/blog/master/201904/assets/make_basic_images_bundle.sh wget https://raw.githubusercontent.com/waitingsong/blog/master/201904/assets/make_extra_images_bundle.sh wget https://raw.githubusercontent.com/waitingsong/blog/master/201904/assets/make_istio_images_bundle.sh chmod a+x make_basic_images_bundle.sh chmod a+x make_extra_images_bundle.sh chmod a+x make_istio_images_bundle.sh # 根据需要执行脚本进行下载并打包 xz 格式压缩时间比较长 # 分别生成以下文件 # /tmp/basic_images_kubeasz_1.1.tar.xz # /tmp/extra_images_kubeasz_1.1.tar.xz # /tmp/istio_images_bundle_1.1.7.tar.xz ./make_basic_images_bundle.sh dump ./make_extra_images_bundle.sh dump ./make_istio_images_bundle.sh dump
-
下载离线 docker 镜像
将上一步生成的文件和脚本文件拷贝到 deploy 节点服务器相同目录下执行
istio 安装见文档 istio_install.md./make_basic_images_bundle.sh extract ./make_extra_images_bundle.sh extract
cd /etc/ansible && cp example/hosts.cloud.example hosts
编辑此 hosts 文件
vi /etc/ansible/hosts
更新以下内容
# deploy 节点的地址
10.0.0.3 NTP_ENABLED=yes
[etcd]
10.0.8.2 NODE_NAME=etcd1
10.0.8.3 NODE_NAME=etcd2
10.0.8.4 NODE_NAME=etcd3
[kube-master]
10.0.8.2
10.0.8.3
10.0.8.4
[kube-node]
10.0.8.10
10.0.8.11
MASTER_IP="10.0.8.12" # 即 master vip 负载均衡内网地址
如果你对集群安装流程不熟悉,请阅读项目首页 安装步骤 讲解后分步安装,并对 每步都进行验证
验证 ansible 执行 正常能看到所有节点返回 SUCCESS
ansible all -m ping
执行安装
cd /etc/ansible
# 一步安装
ansible-playbook 90.setup.yml
# 分步安装
ansible-playbook 01.prepare.yml
ansible-playbook 02.etcd.yml
ansible-playbook 03.docker.yml
ansible-playbook 04.kube-master.yml
ansible-playbook 05.kube-node.yml
ansible-playbook 06.network.yml
ansible-playbook 07.cluster-addon.yml
# 把 k8s 集群 ca 证书加入本机信任列表
cp /etc/kubernetes/ssl/ca.pem /etc/pki/ca-trust/source/anchors/ && update-ca-trust
kubectl cluster-info
kubectl get cs
kubectl get node
kubectl get pod,svc --all-namespaces -o wide
kubectl top node
origin by waitingsong