一、集群环境准备
本文系搭建kubernetes v1.18.6 集群笔记,使用三台虚拟机作为 CentOS 测试机,安装kubeadm、kubelet、kubectl均使用yum安装,网络组件选用的是 flannel行文中难免出现错误,如果读者有高见,请评论与我交流、如需转载请注明原始出处:https://www.cnblogs.com/luoahong/p/13432410.html
部署集群没有特殊说明均使用root用户执行命令
1、硬件信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
2、软件信息
1 2 3 4 5 6 7 8 9 |
|
3、保证环境正确性
purpose | commands |
---|---|
保证集群各节点互通 | ping -c 3 <ip> |
保证MAC地址唯一 | ip link 或 ifconfig -a |
保证集群内主机名唯一 | 查询 hostnamectl status ,修改 hostnamectl set-hostname <hostname> |
保证系统产品uuid唯一 | dmidecode -s system-uuid 或 sudo cat /sys/class/dmi/id/product_uuid |
4、确保端口开放正常
kube-master节点端口检查:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
kube-node*节点端口检查:
1 2 3 4 5 6 7 8 9 10 |
|
二、环境初始化(所有节点执行)
1、配置主机互信
1、分别在各节点配置hosts映射:
1 2 3 4 5 |
|
2、master生成ssh密钥,分发公钥到各节点:
1 2 3 4 5 6 7 |
|
2、禁用swap
1 2 |
|
三、部署docker(所有节点执行)
1、添加docker yum源
1 2 3 4 5 6 |
|
2、安装docker
1 2 3 4 5 |
|
3、确保网络模块开机自动加载
1 2 |
|
若上面命令无返回值输出或提示文件不存在,需执行以下命令:
1 2 3 4 5 6 |
|
4、使桥接流量对iptables可见
1 2 3 4 5 |
|
验证是否生效,均返回 1
即正确
1 2 |
|
5、配置docker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
6、验证docker是否正常
1 2 3 4 5 6 |
|
四、部署kubernetes集群
未特殊说明,各节点均需执行如下步骤
1、添加kubernetes源
1 2 3 4 5 6 7 8 9 10 11 |
|
2、安装kubeadm、kubelet、kubectl
各节点均需安装kubeadm、kubelet,kubectl仅kube-master节点需安装(作为worker节点,kubectl无法使用,可以不装)
1 2 |
|
3、配置自动补全命令
1 2 3 4 5 |
|
4、预拉取kubernetes镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
脚本添加可执行权限,执行脚本拉取镜像:
由于网络原因建议在早上7点前执行速度更佳、其他时段速度很慢甚至连接超时
1 2 |
|
拉取完成,执行 docker images
查看镜像
1 2 3 4 5 6 7 8 9 |
|
五、初始化master(仅 master 节点需要执行此步骤)
1、修改kubelet配置默认cgroup driver
1 2 3 4 5 6 |
|
2、初始化master 10.244.0.0/16是flannel固定使用的IP段,设置取决于网络组件要求
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
|
3、为日常使用集群的用户添加kubectl使用权限
1 2 3 4 |
|
4、配置master认证
1 2 |
|
如果不配置这个,会提示如下输出:
1 |
|
此时master节点已经初始化成功,但是还未完装网络组件,还无法与其他节点通讯
1 2 3 |
|
5、安装网络组件,以flannel为例
由于网络原因建议在早上7点前执行速度更佳、其他时段速度很慢甚至连接超时
创建运行
1 2 |
|
查看是否都正常运行
1 2 3 4 5 6 7 8 9 |
|
查看kube-master节点状态
1 2 3 |
|
如果STATUS提示NotReady
,可以通过 kubectl describe node master
查看具体的描述信息,性能差的服务器到达Ready状态时间会长些
六、初始化node*节点并加入集群
1、备份镜像供其他节点使用
便于后续传输给其他node节点,当然有镜像仓库更好
1 2 3 4 5 6 7 |
|
拷贝镜像到node节点
1 2 |
|
2、node节点载入镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
3、获取加入kubernetes命令
刚才在初始化master节点时,有在最后输出其加入集群的命令,假如我没记下来,那怎么办呢?
访问kube-master输入创建新token命令,同时输出加入集群的命令:
1 2 3 |
|
和初始化的集群命令对比
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
4、在node*节点上执行加入集群命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
5、查看集群节点状态
1 2 3 4 5 |
|