史上最详细k8s安装流程
史上最详细k8s部署流程,内含部署脚本,最详细部署,没有之一。
·
1、硬件要求
服务器 | CPU | 内存 | 硬盘 |
---|---|---|---|
至少2台 | 至少2核 | 至少4G | 至少20G |
2、部署
2.1、服务器规划
主机名 | 系统 | IP地址 | 备注 |
---|---|---|---|
master | centos7.9 | 192.168.277.10 | 主机名不能包含数字 大写字符、下划线以及特殊符号 |
worker | centos7.9 | 192.168.277.11 | IP地址必须固定,且只有一张网卡,如需增加网卡,待k8s安装完成后再增加网卡 |
注意
-
在部署k8s的服务器上不可以部署docker以及docker相关的组件。可以使用以下命令检查是否安装过docker
docker -version
-
多台服务器之间可以相互Ping通,确保网络通畅。可以使用以下命令来检查服务器之间是否可以互通,建议等测试完成后再设置禁ping操作.
ping 192.168.277.11
-
在部署k8s之前最好关闭防火墙。可以使用以下命令检查服务器防火墙是否开启
systemctl status firewalld
2.2、服务器环境修改
2.2.1、修改主机名
k8s在部署时节点的名字不能使用localhost,需要修改名字
# 查看目前的名字,需要分别在所有节点中执行
hostname
# 分别修改各个服务器的名字
# 主节点中
hostnamectl set-hostname k8smaster
# node节点中
hostnamectl set-hostname k8sworker
# 查看修改后的名字
hostnamectl status
# 设置 hostname 解析,分别在各个节点中执行
echo "127.0.0.1 $(hostname)" >> /etc/hosts
# 查看是否写入hosts文件中
cat /etc/hosts
执行完hostname解析后查看是否写入hosts文件中
2.2.2、查看系统版本
# 在每个节点上都需要执行
cat /etc/redhat-release
确保系统版本一致,不会因为版本的差异而造成安装不成功
2.2.3 查看CPU的核数
需要分别在各个服务器中执行
lscpu
确保CPU至少为2核
2.2.4、查看内存大小
分别在各个服务器中执行
free -h
内存大小至少要求4G
2.2.5、关闭防火墙
建议在安装k8s时将防火墙关闭
# 查看防火墙状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld
# 设置禁止开机自启
ssystemctl disable firewalld
2.3、安装
2.3.1、拉去镜像
# 在 master 节点和 worker 节点都要执行
# 最后一个参数 1.19.5 用于指定 kubenetes 版本,支持所有 1.19.x 版本的安装
# 腾讯云 docker hub 镜像
# export REGISTRY_MIRROR="https://mirror.ccs.tencentyun.com"
# DaoCloud 镜像
# export REGISTRY_MIRROR="http://f1361db2.m.daocloud.io"
# 华为云镜像
# export REGISTRY_MIRROR="https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com"
# 阿里云 docker hub 镜像
export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
curl -sSL https://kuboard.cn/install-script/v1.19.x/install_kubelet.sh | sh -s 1.19.5
安装完毕
2.3.2 、初始化master节点
# 只在 master 节点执行
# 替换 x.x.x.x 为 master 节点实际 IP(请使用内网 IP)
# export 命令只在当前 shell 会话中有效,开启新的 shell 窗口后,如果要继续安装过程,请重新执行此处的 export 命令
export MASTER_IP=192.168.227.10
# 替换 apiserver.demo 为 您想要的 dnsName
export APISERVER_NAME=itbestboy.com
# Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
export POD_SUBNET=10.100.0.1/16
echo "${MASTER_IP} ${APISERVER_NAME}" >> /etc/hosts
curl -sSL https://kuboard.cn/install-script/v1.19.x/init_master.sh | sh -s 1.19.5
2.3.3、查看master节点的初始化结果
# 查看所有的容器组是否处于 Running 状态,大概需要等待3-5分钟
watch kubectl get pod -n kube-system -o wide
等待3-5分钟就可以看到初始化结果
当所有容器都处于running状态时,就可以查看master节点的初始化结果
# 查看 master 节点初始化结果
kubectl get nodes -o wide
2.3.4、获取token,用于其他服务器加入集群
此命令只在master节点执行
#只在master节点执行,获取的token信息有效期为2个小时
kubeadm token create --print-join-command
2.3.5 初始化worker节点
#只在worker节点执行
#IP地址为master节点的IP
export MASTER_IP=192.168.227.10
#初始化 master 节点时所使用的 APISERVER_NAME
export APISERVER_NAME=itbestboy.com
export POD_SUBNET=10.100.0.1/16
echo "${MASTER_IP} ${APISERVER_NAME}" >> /etc/hosts
#在master节点生成的token信息
kubeadm join itbestboy.com:6443 --token wn2p9z.ozp8qr2p1uz63nkk --discovery-token-ca-cert-hash sha256:edb404c9759d0b9c4b76287d83999b22ced8457f6562a315c1a2ecb0b254ca23
在master节点上检查各个节点的状态
kubectl get nodes -o wide
需要等待3分钟左右才会变成Ready状态
2.4、安装可视化工具
2.4.1 、安装
在master节点上执行
kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
如果想自定义可视化工具的连接端口,环境等,可以将kuboard-v3-swr.yaml下载下来,然后手动更改里面的内容 ,然后上传至master所在的服务器,执行 kubectl apply -f kuboard-v3-swr.yaml
2.4.2 、查看
首先查看容器组是否全部处于running状态
watch kubectl get pods -n kuboard
其次通过浏览器查看
地址 : http://192.168.227.10:30080/
用户名 :admin
密码 :Kuboard123
3、部署命令脚本
#前期准备,master worker节点都需要执行
#查看修改IP地址(若为云服务器,此步忽略)
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#测试两台服务器之间是否可通
ping 192.168.227.11
#关闭防火墙
systemctl stop firewalld
systemctl diable firewalld
#查看系统版本是否一致,建议最好一致,否则会报歇莫名其妙的错误
cat /etc/redhat-release
#查看cpu核数
lscpu
#查看内存空间
free -h
#查看主机名
hostname
#修改主机名
hostnamectl set-hostname=k8smaster
#worker节点执行
hostnamectl set-hostname=k8sworker
#主机名映射
echo "127.0.0.1 $(hostname)" >> /etc/hosts
#安装,需要在master节点和worker节点中都执行
export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
curl -sSL https://kuboard.cn/install-script/v1.19.x/install_kubelet.sh | sh -s 1.19.5
#只在 master 节点执行
#替换 x.x.x.x 为 master 节点实际 IP(请使用内网 IP)
export MASTER_IP=192.168.227.10
#替换 apiserver.demo 为 您想要的 dnsName
export APISERVER_NAME=itbestboy.com
#Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
export POD_SUBNET=10.100.0.1/16
echo "${MASTER_IP} ${APISERVER_NAME}" >> /etc/hosts
curl -sSL https://kuboard.cn/install-script/v1.19.x/init_master.sh | sh -s 1.19.5
#执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态
watch kubectl get pod -n kube-system -o wide
#查看 master 节点初始化结果
kubectl get nodes -o wide
#只在 master 节点执行 得到
kubeadm token create --print-join-command
#获取的token信息,有效期2个小时
#kubeadm join itbestboy.com:6443 --token wn2p9z.ozp8qr2p1uz63nkk --discovery-token-ca-cert-hash sha256:edb404c9759d0b9c4b76287d83999b22ced8457f6562a315c1a2ecb0b254ca23
#在worker节点中执行
#替换 x.x.x.x 为 master 节点的内网 IP
export MASTER_IP=192.168.277.10
#替换 apiserver.demo 为初始化 master 节点时所使用的 APISERVER_NAME
export APISERVER_NAME=itbestboy.com
echo "${MASTER_IP} ${APISERVER_NAME}" >> /etc/hosts
#替换为 master 节点上 kubeadm token create 命令的输出
kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303
#安装可视化管理工具,只在master节点上执行
#kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
#您也可以使用下面的指令,唯一的区别是,该指令使用华为云的镜像仓库替代 docker hub 分发 Kuboard 所需要的镜像
kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
#查看容器组是否全部running
watch kubectl get pods -n kuboard
#查看所有节点是否都处于reday状态
kubectl get nodes -o wide
#卸载
kubectl delete -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
rm -rf /usr/share/kuboard #彻底清除数据在 master 节点以及带有 k8s.kuboard.cn/role=etcd 标签的节点上执行
更多推荐
已为社区贡献1条内容
所有评论(0)