本文最后更新于:2023年12月5日 晚上
https://github.com/easzlab/kubeasz
https://github.com/easzlab/kubeasz/blob/master/docs/setup/00-planning_and_overall_intro.md
角色 |
ip |
主机名 |
备注 |
master1 |
10.0.1.1/21 |
k8s-master1.ljk.cn |
同时部署 ansible |
master2 |
10.0.1.2/21 |
k8s-master2.ljk.cn |
|
node1 |
10.0.1.3/21 |
k8s-node1.ljk.cn |
|
node2 |
10.0.1.4/21 |
k8s-node2.ljk.cn |
|
etcd1 |
10.0.2.1/21 |
k8s-etcd1.ljk.cn |
|
etcd2 |
10.0.2.2/21 |
k8s-etcd2.ljk.cn |
|
etcd3 |
10.0.2.3/21 |
k8s-etcd3.ljk.cn |
|
HAProxy1 + keepalived 给 master 做负载均衡 |
10.0.2.1/21 vip:10.0.2.188:8443 |
|
和 etcd1 混用 |
HAProxy2 + keepalived 给 master 做负载均衡 |
10.0.2.2/2 vip:10.0.2.188:8443 |
|
和 etcd2 混用 |
harbor |
10.0.2.3/21 |
|
和 etcd3 混用 |
架构图:
准备
校准时区和同步时间
python
kubeasz 基于 ansible,而 ansible 基于 python 的,所以所有服务器都需要安装 python 环境
ansible
在 master1 上安装 ansible
设置 ssh 免密
keepalived
10.0.2.1/21 和 10.0.2.2/21 均安装 keepalived
haproxy
10.0.2.1/21 和 10.0.2.2/21 均安装 haproxy
下载项目源码
配置集群参数
验证配置是否成功:
安装
配置 harbor
10.0.2.3,详细步骤参考:docker 仓库管理
因为笔记本性能问题,harbor 和 etcd 复用一个节点,所以 harbor 的 hostname 配置为 ip,如果 harbor 单独使用一台服务器,应该配置为 hostname
00-规划集群和配置介绍
https://github.com/easzlab/kubeasz/blob/master/docs/setup/00-planning_and_overall_intro.md
01-创建证书和安装准备
https://github.com/easzlab/kubeasz/blob/master/docs/setup/01-CA_and_prerequisite.md
02-安装 etcd 集群
https://github.com/easzlab/kubeasz/blob/master/docs/setup/02-install_etcd.md
03-安装 docker 服务
https://github.com/easzlab/kubeasz/blob/master/docs/setup/03-install_docker.md
04-安装 master 节点
https://github.com/easzlab/kubeasz/blob/master/docs/setup/04-install_kube_master.md
05-安装 node 节点
https://github.com/easzlab/kubeasz/blob/master/docs/setup/05-install_kube_node.md
06-安装集群网络
https://github.com/easzlab/kubeasz/blob/master/docs/setup/06-install_network_plugin.md
公有云推荐使用 flannel,自建 IDC 推荐使用 calico,如果选择 calico,一定要关闭 IPIP
07-安装集群插件
https://github.com/easzlab/kubeasz/blob/master/docs/setup/07-install_cluster_addon.md
安装 dashboard
安装部署:
验证:
访问:
登录:
测试网络
安装 CoreDNS
自行安装
coredns 官方 github 提供的安装脚本,依赖 kube-dns,所以我们使用 kubernetes 官方提供的 yaml 进行安装
去 kubernetes 的官方 github 仓库,下载二进制文件
打开后,往下拉,下载 client、node、server 三个源码包,注意要下载 amd64 版本,不要下载错了
通过 dashboard 进入 pod,测试一下:
kubeasz 安装
关于负载均衡
kubeasz 的逻辑是在每个 node 上安装一个 haproxy,如果 master 的数量超过 1 个,node 和 master 的通信就走 haproxy
可是这样无法避免 haproxy 的单点失败问题,而且外部访问 master 的时候还得走 vip,所以不如直接只搭建一套 keeplived + haproxy,然后不管 master 还是 node,所有和 apiserver 的通信都走 vip,kubeasz 提供了搭建 keeplived + haproxy 的 playbook,在 01.prepare.yml 中打开注释即可,当然也可以自己搭建
使用
添加节点
非常简单
添加 master
https://github.com/easzlab/kubeasz/blob/master/docs/op/op-master.md
添加 node
https://github.com/easzlab/kubeasz/blob/master/docs/op/op-node.md
集群升级
小版本升级
下载最新版本的 kubernetes,全部解压后,在 kubernetes/server/bin 目录下,都是编译好的二进制程序
master
关闭服务
拷贝新版本,覆盖旧版本
启动服务
注:因为 master 做了 haproxy+keepalived,所以只要不是全部 master 同时关闭服务就没问题,其实都全部 master 都关闭服务,短时间也没事
node
关闭服务
拷贝新版本,覆盖旧版本
启动服务
注:关闭 kubelet 和 kube-proxy 不影响访问已经创建的 Pod
如果 node 数量比较多,写个脚本循环升级即可
大版本升级