記一次阿里雲上安裝K8S集群 kubeadm安裝高可用過程


現有環境說明

內網slb:192.168.0.203

服務器三台:master1 = 192.168.0.195            master2 = 192.168.0.198              master3 = 192.168.0.194

三台master都安裝基本環境 

修改三個服務器上的hosts

添加  vim /etc/hosts

192.168.0.195   master1

192.168.0.198   master2

192.168.0.194   master3

192.168.0.195   apisv (這個會成為)

然后還借用了別人的一個初始化腳本

wget https://kuboard.cn/install-script/v1.17.2/init_master.sh

 

開始安裝docker

yum install -y yum-utils \

device-mapper-persistent-data \

lvm2

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 

yum install -y docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.io

systemctl enable docker

systemctl start docker

安裝nfs

yum install -y nfs-utils

# 關閉 SeLinux

setenforce 0

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

 

# 關閉 swap

swapoff -a

yes | cp /etc/fstab /etc/fstab_bak

cat /etc/fstab_bak |grep -v swap > /etc/fstab

 

echo "net.ipv4.ip_forward = 1" >> /etc/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.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf

echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf

echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf

echo "net.ipv6.conf.all.forwarding = 1"  >> /etc/sysctl.conf

sysctl -p 

配置K8S源

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

yum install -y kubelet-1.17.2 kubeadm-1.17.2 kubectl-1.17.2

systemctl daemon-reload

systemctl restart docker

systemctl enable kubelet && systemctl start kubelet

以master1為第一個初始化服務器

設置幾個環境變量

export APISERVER_NAME=apisv(自己取名,要添加進hosts的)

export POD_SUBNET=10.100.0.1/16

以上兩個是下面執行的腳本需要用的

修改init_master.sh

主要修改   kubernetesVersion: v1.17.2  (你需要安裝的版本)

並運行

sh init_master.sh

等待初始化完成,並記錄kubeadm join  XX:6443  XXXX  --discovery-token-ca-cert-hash XXX   --control-plane --certificate-key   (這是讓其他master加入集群的命令)

這個后面跟着一個kubeadm join 是node加入集群的命令

 

最后  開始最重要的高可用操作方式了(一開始自己單純用apisc指向內網slb,然后slb監聽后端三個master。發現因為證書不對,只能訪問到master1這個服務器)

現在開始第一步:檢查master1的hosts

192.168.0.195   master1

192.168.0.198   master2

192.168.0.194   master3

192.168.0.195   apisc  (這個一開始要指向自己,就是master1)

 

第二步:為matser2 和master3創建證書存放文件夾(去master2,master3上創建這兩個文件夾)

/etc/kubernetes/pki

/etc/kubernetes/pki/etcd

 

第三步:分發證書

在master1上  cd /etc/kubernetes/pki

scp ca.crt ca.key sa.key sa.pub front-proxy-ca.crt front-proxy-ca.key root@192.168.0.198:/etc/kubernetes/pki/

scp ca.crt ca.key sa.key sa.pub front-proxy-ca.crt front-proxy-ca.key root@192.168.0.194:/etc/kubernetes/pki/

 

cd /etc/kubernetes/pki/etcd

scp ca.crt ca.key root@192.168.0.198:/etc/kubernetes/pki/etcd/

scp ca.crt ca.key root@192.168.0.194:/etc/kubernetes/pki/etcd/

 

第四步:master2,master3加入集群

分別在master2,master3執行上面master1初始化時保存的kubeadm join命令

master2  master3都要執行

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

 

最后修改master2  master3的/etc/hosts,把各自內網ip解析到apisc

master3:192.168.0.194   apisc

master2:192.168.0.198   apisc

 

驗證:

分別在三個master上執行

kubectl get node

都能看到三個master服務器的集群狀態

到這里  K8S的在阿里雲上的高可用集群已經搭建完成了  

內網slb還是要配置到監控這三個master的6443端口

至於node怎么加入集群

node上首先搭建基本環境docker+kubectl等等

然后修改hosts

192.168.0.195   master1

192.168.0.198   master2

192.168.0.194   master3

192.168.0.203   apisc   (node上的apisc都必須指向內網的slb)

然后執行kubeadm join加入集群即可

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM