1.查看版本信息
# 在 master 节点和 worker 节点都要执行
cat /etc/redhat-release
# 此处 hostname 的输出将会是该机器在 Kubernetes 集群中的节点名字
# 不能使用 localhost 作为节点的名字
hostname
# 请使用 lscpu 命令,核对 CPU 信息
# Architecture: x86_64 本安装文档不支持 arm 架构
# CPU(s): 2 CPU 内核数量不能低于 2
lscpu
2.修改 hostname
如果您需要修改 hostname,可执行如下指令:
# 修改 hostname
hostnamectl set-hostname demo-master-a-1
# 查看修改结果
hostnamectl status
# 设置 hostname 解析
echo "127.0.0.1 $(hostname)" >> /etc/hosts
3.检查网络
[root@demo-master-a-1 ~]$ ip route show
default via 172.21.0.1 dev eth0
169.254.0.0/16 dev eth0 scope link metric 1002
172.21.0.0/20 dev eth0 proto kernel scope link src 172.21.0.12
[root@demo-master-a-1 ~]$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:16:3e:12:a4:1b brd ff:ff:ff:ff:ff:ff
inet 172.17.216.80/20 brd 172.17.223.255 scope global dynamic eth0
valid_lft 305741654sec preferred_lft 305741654sec
kubelet使用的IP地址
ip route show
命令中,可以知道机器的默认网卡,通常是eth0
,如 default via 172.16.202.2 dev ens33ip address
命令中,可显示默认网卡的 IP 地址,Kubernetes 将使用此 IP 地址与集群内的其他节点通信,如172.16.202.131
- 所有节点上 Kubernetes 所使用的 IP 地址必须可以互通(无需 NAT 映射、无安全组或防火墙隔离)
4.初始化master节点
参考:https://kuboard.cn/install/history-k8s/install-k8s-1.21.x.html
4.1.安装containerd/kubelet/kubeadm/kubectl
这里需要root权限,执行 su ,输入root密码;
直接进行快速安装,命令:
# 在 master 节点和 worker 节点都要执行
# 最后一个参数 1.21.6 用于指定 kubenetes 版本,支持所有 1.21.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.21.x/install_kubelet.sh | sh -s 1.21.6 /coredns
完成上述操作后查看信息:
# 只在 master 节点执行
# 执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态
watch kubectl get pod -n kube-system -o wide
# 查看 master 节点初始化结果
kubectl get nodes -o wide
我这边能看到的信息如下,状态是NotReady,并不是Ready状态(但是有些人安装后的效果是Ready)
4.2.安装网络插件
这里我们安装:calico
export POD_SUBNET=10.100.0.0/16
kubectl apply -f https://kuboard.cn/install-script/v1.21.x/calico-operator.yaml
wget https://kuboard.cn/install-script/v1.21.x/calico-custom-resources.yaml
sed -i "s#192.168.0.0/16#${POD_SUBNET}#" calico-custom-resources.yaml
kubectl apply -f calico-custom-resources.yaml
执行成功后,效果数据如下:
5.初始化worker节点
5.1.从master主机获得 join命令参数
访问master机器
# 只在 master 节点执行
kubeadm token create --print-join-command
执行完成后,效果如下:
信息:
kubeadm join apiserver.demo:6443 --token kyc4a8.7oqmadyfhszqro56 --discovery-token-ca-cert-hash sha256:58da753243817cc654a13882d7e92d645fd2e0c5a5a3117970aedb79975bd593
5.2.执行初始化worker节点
# 只在 worker 节点执行
# 替换 172.16.202.131 为 master 节点的内网 IP
export MASTER_IP=172.16.202.131
# 替换 apiserver.demo 为初始化 master 节点时所使用的 APISERVER_NAME
export APISERVER_NAME=apiserver.demo
echo "${MASTER_IP} ${APISERVER_NAME}" >> /etc/hosts
# 替换为 master 节点上 kubeadm token create 命令的输出
kubeadm join apiserver.demo:6443 --token kyc4a8.7oqmadyfhszqro56 --discovery-token-ca-cert-hash sha256:58da753243817cc654a13882d7e92d645fd2e0c5a5a3117970aedb79975bd593
执行后效果如下:
5.3.验证执行结果
访问master机器,执行下面命令
# 只在 master 节点执行
kubectl get nodes -o wide