阿里雲CentOS7安裝K8S
阿新 • • 發佈:2022-03-26
1. 在阿里雲山申請三臺雲伺服器
1.1 環境準備
完成配置後的資訊
伺服器IP | 作業系統 | CPU | 記憶體 | 硬碟 | 主機名 | 節點角色 |
---|---|---|---|---|---|---|
172.18.119.145 | centos7 | 2 | 4G | 50G | k8s-master | master |
172.18.119.150 | centos7 | 2 | 4G | 50G | k8s-node-01 | node |
172.18.119.151 | centos7 | 2 | 4G | 50G | k8s-node-02 | node |
1.2 設定主機名稱
#master hostnamectl set-hostname k8s-master #node01 hostnamectl set-hostname k8s-node01 #node02 hostnamectl set-hostname k8s-node02
1.3 關閉防火牆
systemctl disable firewalled
systemctl stop firewalled
1.4 關閉Selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
1.5 關閉交換空間
swapoff -a
cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
1.6 配置 sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" >>/etc/sysctl.conf echo "net.bridge.bridge-nf-call-iptables = 1" >>/etc/sysctl.conf echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf echo "net.ipv4.ip_nonlocal_bind = 1" >>/etc/sysctl.conf sysctl -p
2. 安裝docker
所有節點都必須安裝docker
2.1 配置aliyun的 docker yum源
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.2 開始安裝
yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 systemctl enable docker systemctl start docker docker -v // 輸出 Docker version 18.09.7, build 2d0083d
3. 安裝Kubelet Kubeadm Kubectl
所有節點都要安裝 Kubelet 、Kubeadm、Kubectl
3.1 配置 Kubernetes yum 源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
3.2 開始安裝
yum remove -y kubelet kubeadm kubectl
// 阿里映象當前是這個版本
yum install -y kebulet--1.17.2 kubeadm-1.17.2 kubectl-1.17.2
4. 部署K8S叢集
4.1 部署master節點
4.1.1 配置kubeadm-config.yaml
cat <<EOF > /root/kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.17.2
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
controlPlaneEndpoint: "172.18.119.145:6443"
networking:
serviceSubnet: "10.96.0.0/16"
podSubnet: "10.100.0.0/20"
dnsDomain: "cluster.local"
EOF
4.1.2 拉取映象
kubeadmin config images pull --config /root/kubeadm-config.yaml
4.1.3 初始化Master, 並記錄日誌,裡面的token很重要
kubeadm init --config=kubeadm-config.yaml |tee kubeadm_init.log
4.1.4 配置Master認證許可權
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
4.1.5 安裝 CNI 外掛 Calico
cd /root
rm -f calico.yaml
wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml
sed -i 's/192.168.0.0/16/10.100.0.0/20/g' calico.yaml
kubectl apply -f calico.yaml
# 這裡是配置CALICO_IPV4POOL_CIDR,即Pods 所在的 IP 段
4.2 部署 Node 節點
4.2.1 拉取映象
# 在master節點執行 複製 master 節點的 kubeadm-config.yaml 到所有 node 節點
rsync -avP /root/kubeadm-config.yaml 172.18.119.150:/root/
rsync -avP /root/kubeadm-config.yaml 172.18.119.151:/root/
# 在Node 節點執行,拉取映象
kubeadmin config images pull --config /root/kubeadm-config.yaml
4.3.2 初始化Node
在子節點執行以下命令(從master節點裡的 kubeadm_init.log中複製出最後一行)
kubeadm join 172.18.119.145:6443 --token vb2046.9zcbi5g1cxbwb0zx --discovery-token-ca-cert-hash sha256:da2f4b5c4ed8586c3ea7ad3a8054f0be6ccc328ceccc91aba3860b007394c666
4.3.2 補充
如果初始化master時建立的token已經過期,需要重新建立token和獲取ca證書sha256編碼hash值,然後再初始化node節點
# 先在 Master 節點執行
kubeadm token create --print-join-command
// 輸出
kubeadm join 172.18.119.145:6443 --token xofceq.lqdfk5rt65tvgnqg --discovery-token-ca-cert-hash sha256:da2f4b5c4ed8586c3ea7ad3a8054f0be6ccc328ceccc91aba3860b007394c666
# 然後到Node節點中執行上述的輸出
kubeadm join 172.18.119.145:6443 --token xofceq.lqdfk5rt65tvgnqg --discovery-token-ca-cert-hash sha256:da2f4b5c4ed8586c3ea7ad3a8054f0be6ccc328ceccc91aba3860b007394c666
4.4 檢視叢集狀態,當STATUS都為Ready時,叢集搭建完成
kubectl get nodes
# 輸出
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 5d20h v1.17.2
k8s-node-01 Ready <none> 5d20h v1.17.2
k8s-node-02 Ready <none> 5d20h v1.17.2