服务器规划
角色 | IP | 组件 |
---|---|---|
k8s-master1 | 192.168.0.101 | kube-apiserver kube-controller-manager kube-scheduler etcd |
k8s-master2 | 192.168.0.104 | kube-apiserver kube-controller-manager kube-scheduler |
k8s-node1 | 192.168.0.102 | kubelet kube-proxy docker etcd |
k8s-node2 | 192.168.0.103 | kubelet kube-proxy docker etcd |
Load Balancer(Master) | 192.168.0.201 192.168.0.200 (VIP) | nginx keepalived |
Load Balancer(Backup) | 192.168.0.202 | nginx keepalived |
部署架构图
Roles组织 K8S各组件部署解析
- 梳理流程和Roles结构
- 如果配置文件有不固定内容,使用jinja渲染
- 人工干预改动的内容应统一写到一个文件中
部署说明
系统初始化
- 关闭 selinux
- 关闭 firewalld
- 关闭 swap
- 时钟同步
- hosts 文件
- 常用基础命令
创建roles初始化目录
1 | # 创建roles初始化目录 |
系统初始化 执行模块
1 | # 创建任务和模板目录 |
1 | [root@localhost ~]# cd ansible-k8s-deploy/roles/common/tasks/ |
1 | # 模板 |
1 | [root@k8s-master1 ansible-k8s-deploy]# tree ../ |
1 | # hosts文件 |
1 | # 执行 |
Etcd集群部署
- 生成etcd证书
- 部署三个etcd集群
- 查看集群状态
部署Maste
- 生成apiserver证书
- 部署apiserver、controller-manager和scheduler组件
- 启动TLS Bootstrapping
部署Node
- 安装Docker
- 部署kubelet和kube-proxy
- 在Master上允许为新Node颁发证书
- 授权apiserver访问kubelet
1 | [root@k8s-node1 k8s]# docker images |
部署插件(准备好镜像)
- Flannel
- Web UI
- CoreDNS
- Ingress Controller
Master高可
- 增加Master节点(与Master1一致)
- 部署Nginx负载均衡器
- Nginx+Keepalived高可用
- 修改Node连接VIP