在centos上搭建Kubernetes集群
搭建前的说明
- centos系统需要使用7.5以上的版本
- 单个系统的配置需要在2核4G以上
- 每个系统都需要安装wget插件
搭建步骤
修改每个服务器的hostname,要确保每个hostname都不是localhost
# 修改 hostname
hostnamectl set-hostname your-new-host-name
# 查看修改结果
hostnamectl status
# 设置 hostname 解析
echo "127.0.0.1 $(hostname)" >> /etc/hosts
安装docker和kubelet
# 在 master 节点和 worker 节点都要执行
curl -sSL https://kuboard.cn/install-script/v1.16.0/install-kubelet.sh | sh
初始化master节点
初始化 master 节点时,如果因为中间某些步骤的配置出错,想要重新初始化 master 节点,请先执行 kubeadm reset 操作
# 只在 master 节点执行
# 替换 x.x.x.x 为 master 节点实际 IP(请使用内网 IP)
# export 命令只在当前 shell 会话中有效,开启新的 shell 窗口后,如果要继续安装过程,请重新执行此处的 export 命令
export MASTER_IP=x.x.x.x
# 替换 apiserver.demo 为 您想要的 dnsName (不建议使用 master 的 hostname 作为 APISERVER_NAME)
export APISERVER_NAME=apiserver.demo
# Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
export POD_SUBNET=10.100.0.1/20 #该值一般不动
echo "${MASTER_IP} ${APISERVER_NAME}" >> /etc/hosts
curl -sSL https://kuboard.cn/install-script/v1.16.0/init-master.sh | sh
获取master节点的加入集群的命令
# 只在 master 节点执行
kubeadm token create --print-join-command
然后会得到下面的命令
kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303
保存这个命令,待会在worker节点会用到
初始化worker节点
# 只在 worker 节点执行
# 替换 ${MASTER_IP} 为 master 节点实际 IP
# 替换 ${APISERVER_NAME} 为初始化 master 节点时所使用的 APISERVER_NAME
echo "${MASTER_IP} ${APISERVER_NAME}" >> /etc/hosts
然后在worker节点运行命令:
kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303
查看集群加入状态
# 只在 master 节点执行
kubectl get nodes -o wide
输出结果如下
[root@demo-master-a-1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
demo-master-a-1 Ready master 5m3s v1.16.0
demo-worker-a-1 Ready 2m26s v1.16.0
demo-worker-a-2 Ready 3m56s v1.16.0
其中每个节点都变成Ready状态即表示创建成功,本次示例中使用了一个master节点,两个worker节点,所有节点都变为了Ready状态,表示创建成功。变为Ready状态的节点最长可能需要十多分钟,请耐心等待。
移除worker节点
当不需要该wroker节点的时候,可以选择移除该节点
# 在 worker 节点执行
kubeadm reset
# 在 master 节点执行
kubectl delete node 节点名
# 其中节点名为在master节点执行kubectl get nodes 得到的节点名
安装 Ingress Controller(可选)
# 只在 master 节点执行
kubectl apply -f https://kuboard.cn/install-script/v1.16.0/nginx-ingress.yaml
结尾
至此,集群的搭建也就完成了,当你需要添加新的worker节点的时候,只需要在新机器上执行第2步和第5步即可,祝大家搭建集群愉快!