1. 程式人生 > 其它 >阿里雲CentOS7安裝K8S

阿里雲CentOS7安裝K8S

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