kubeadm部署高可用master


准備階段

master1  master2  master3 node1

關閉selinux,firewall

setenforce  0

sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

systemctl stop firewalld

systemctl disable firewalld

關閉swap,(1.8版本后的要求,目的應該是不想讓swap干擾pod可使用的內存limit)

swapoff -a

sed -ri 's/.*swap.*/#&/' /etc/fstab

修改下面內核參數,否則請求數據經過iptables的路由可能有問題

cat <<EOF >  /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

sysctl --system

 

 

安裝kubeadm、docker

將Kubernetes安裝源改為阿里雲,方便國內網絡環境安裝

cat << EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=0

EOF

 

安裝docker-ce

wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce

 

安裝kubelet kubeadm kubectl

yum install kubeadm-1.15.0-0.x86_64 kubectl-1.15.0-0.x86_64 kubelet-1.15.0-0.x86_64 -y

 

kubectl命令自動補全

yum install bash-completion* -y

##寫入環境變量

source <(kubectl completion bash)

echo "source <(kubectl completion bash)" >> ~/.bashrc

 

安裝keepalived,配置虛擬IP為192.168.81.100

啟動kubelet,docker並設置開機啟動

 

部署Kubernetes

在master-1節點操作:

准備集群配置文件,目前用的api版本為v1beta1,具體配置可以參考官方reference

cat << EOF > /root/kubeadm-config.yaml

apiVersion: kubeadm.k8s.io/v1beta1

kind: ClusterConfiguration

kubernetesVersion: v1.15.0 # 指定1.15版本

controlPlaneEndpoint: 192.168.81.10:6443 # haproxy地址及端口

imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers # 指定鏡像源為阿里源

networking:

  podSubnet: 10.244.0.0/16 # 計划使用flannel網絡插件,指定pod網段及掩碼

EOF

執行節點初始化

systemctl enable kubelet

systemctl start kubelet

kubeadm config images pull --config kubeadm-config.yaml  # 通過阿里源預先拉鏡像

kubeadm init --config=kubeadm-config.yaml --upload-certs --ignore-preflight-errors=all

kubeadm init  --kubernetes-version=v1.15.0 --pod-network-cidr=10.244.0.0/16  --service-cidr=10.96.0.0/12 --ignore-preflight-errors=all --upload-certs

 

安裝成功,可以看到輸出

You can now join any number of the control-plane node running the following command on each as root:

# master節點用以下命令加入集群:

  kubeadm join 192.168.81.100:6443 --token ocb5tz.pv252zn76rl4l3f6 \

    --discovery-token-ca-cert-hash sha256:141bbeb79bf58d81d551f33ace207c7b19bee1cfd7790112ce26a6a300eee5a2 \

    --experimental-control-plane --certificate-key 20366c9cdbfdc1435a6f6d616d988d027f2785e34e2df9383f784cf61bab9826 --ignore-preflight-errors=all

# 工作節點用以下命令加入集群:

kubeadm join 192.168.81.100:6443 --token ocb5tz.pv252zn76rl4l3f6 \

    --discovery-token-ca-cert-hash sha256:141bbeb79bf58d81d551f33ace207c7b19bee1cfd7790112ce26a6a300eee5a2 --ignore-preflight-errors=all 

 

原來的kubeadm版本,join命令只用於工作節點的加入,而新版本加入了 --control-plane 參數后,控制平面(master)節點也可以通過kubeadm join命令加入集群了。

添加kubectl控制權限

mkdir -p $HOME/.kube

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

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

 

 

加入另外一個master節點

在master-2操作:

kubeadm join 192.168.81.100:6443 --token ocb5tz.pv252zn76rl4l3f6 \

--discovery-token-ca-cert-hash sha256:141bbeb79bf58d81d551f33ace207c7b19bee1cfd7790112ce26a6a300eee5a2 \

--experimental-control-plane --certificate-key 20366c9cdbfdc1435a6f6d616d988d027f2785e34e2df9383f784cf61bab9826

--ignore-preflight-errors=all

添加kubectl控制權限

mkdir -p $HOME/.kube

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

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

 

 

notready狀態

編輯 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf文件(有的是/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf文件),
​ 刪除最后一行里的$KUBELET_NETWORK_ARGS

systemctl restart kubelet

 

 

安裝網絡插件

kubectl apply –f kube-flannel.yml

 

 

再次查看節點狀態

kubectl get nodes

 

 

參考:

kube-flannel網絡插件:https://www.wanghaiqing.com/article/aa3ac027-7ae8-43ff-821e-49f6dfcd17e8/

kubeadm高可用:https://segmentfault.com/a/1190000018741112?utm_source=tag-newest

notready參照:https://www.cnblogs.com/zhongyuanzhao000/p/11401031.html

 


免責聲明!

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



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