1. 程式人生 > 遊戲攻略 >《寶可夢朱紫》7星太晶噴火龍活動說明

《寶可夢朱紫》7星太晶噴火龍活動說明

Kubernete叢集部署

1.大規模叢集的注意事項

推薦閱讀:
	https://kubernetes.io/zh/docs/setup/best-practices/cluster-large/

2.部署Kubernetes叢集

2.1 宿主機與版本介紹

宿主機 k8s版本
centos7 1.19.9

2.2 K8S各節點環境準備

參考連結:
	https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
	
	1)臨時關閉swap分割槽
swapoff -a && sysctl -w vm.swappiness=0
	2)基於配置檔案關閉
sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab

  3)允許iptable檢查橋接流量
cat <<EOF | tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system


	4)配置docker源,以便提供私有倉庫
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum list docker-ce --showduplicates

	5)安裝指定的docker版本
yum -y install docker-ce-18.09.9 docker-ce-cli-18.09.9
yum -y install bash-completion
source /usr/share/bash-completion/bash_completion

	6)配置docker優化
mkdir -pv /etc/docker && cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "insecure-registries": ["k8s151.oldboyedu.com:5000"],     #指定master節點,這個5000埠是docker開放的registry的私有倉庫
  "registry-mirrors": ["https://tuv7rqqq.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
	
	7)配置docker開機自啟動
systemctl enable --now docker
systemctl status docker


  8)禁用防火牆
systemctl disable --now firewalld


  9)禁用selinux
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config 
grep ^SELINUX= /etc/selinux/config


  10)配置host解析
cat >> /etc/hosts <<'EOF'
     #新增域名解析 根據需要新增 master與worker 節點宿主機的域名
EOF
cat /etc/hosts


  11)在k8s151.oldboyedu.com節點啟用docker registry的私有倉庫
docker run -dp 5000:5000 --restart always --name oldboyedu-registry registry:2

3.所有節點安裝kubeadm,kubelet,kubectl

(1)配置軟體源
cat  > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF


(2)檢視kubeadm的版本(將來你要安裝的K8S時請所有元件版本均保持一致!)
yum -y list kubeadm --showduplicates | sort -r


(3)安裝kubeadm,kubelet,kubectl軟體包
yum -y install kubeadm-1.19.9-0 kubelet-1.19.9-0 kubectl-1.19.9-0 

(4)啟動kubelet服務(若服務啟動失敗時正常現象,其會自動重啟,因為缺失配置檔案,初始化集群后恢復!此步驟可跳過!)
systemctl enable --now kubelet
systemctl status kubelet


#介紹軟體包命令的使用場景
	kubeadm:
		用來初始化叢集的指令。
	kubelet:
		在叢集中的每個節點上用來啟動Pod和容器等。
	kubectl:
		用來與叢集通訊的命令列工具。

kubeadm不能幫你安裝或者管理kubelet或kubectl,所以你需要確保它們與通過kubeadm安裝的控制平面(master)的版本相匹配。 如果不這樣做,則存在發生版本偏差的風險,可能會導致一些預料之外的錯誤和問題。 

然而,控制平面與kubelet間的相差一個次要版本不一致是支援的,但kubelet的版本不可以超過"API SERVER"的版本。 例如,1.7.0版本的kubelet可以完全相容1.8.0版本的"API SERVER",反之則不可以。


參考連結:
	https://kubernetes.io/zh/docs/tasks/tools/install-kubectl-linux/

4.初始化master節點

	(1)使用kubeadm初始化master節點
kubeadm init --kubernetes-version=v1.19.9 --image-repository registry.aliyuncs.com/google_containers  --pod-network-cidr=10.244.0.0/16 --service-cidr=10.254.0.0/16

	(2)拷貝授權檔案,用於管理K8S叢集
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config	


	(3)檢視叢集節點
kubectl get cs
  結果顯示 Healthy

5.配置所有worker節點加入k8s叢集

(1)worker節點加入叢集(如上圖所示,下面的token及hash值需要根據您的叢集環境而發生改變喲~)
kubeadm join 10.0.0.151:6443 --token pg399v.wxo32zunx09ekd6s \
    --discovery-token-ca-cert-hash sha256:3de653e36b5bbe3d34189607f4c11e63bcc675354dd2d47b81496ca96b68db60 
    
    
(2)檢視叢集現有的worker節點
kubectl get no
    結果顯示NotReady

6.初始化網路元件

	官方的貌似有問題:(不推薦使用!)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-legacy.yml

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml


	有效的連線:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml


驗證flannel外掛是否部署成功:
kubectl get nodes
kubectl get pods -A -o wide | grep  flannel
			結果:顯示worker工作節點都在runing



參考連結:
	https://kubernetes.io/zh/docs/concepts/cluster-administration/addons/
	https://github.com/flannel-io/flannel/blob/master/Documentation/kubernetes.md

7.新增自動補全功能

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

8.在安裝過程中的報錯

8.1 Unhealthy

[root@k8s154 ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS      MESSAGE                                                                                       ERROR
controller-manager   Unhealthy   Get "http://127.0.0.1:10252/healthz": dial tcp 127.0.0.1:10252: connect: connection refused   
scheduler            Unhealthy   Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused   
etcd-0               Healthy     {"health":"true"}                                                                             

報錯原因

是/etc/kubernetes/manifests/下的kube-controller-manager.yaml和kube-scheduler.yaml設定的預設埠是0導致的,解決方式是註釋掉對應的port即可

[root@k8s154 /etc/kubernetes/manifests]# pwd
/etc/kubernetes/manifests
[root@k8s154 /etc/kubernetes/manifests]# cat -n  kube-controller-manager.yaml  | grep port
    27	    #- --port=0
    40	        port: 10257
    54	        port: 10257
[root@k8s154 /etc/kubernetes/manifests]# cat -n  kube-controller-manager.yaml  | grep port=0
    27	    #- --port=0
[root@k8s154 /etc/kubernetes/manifests]# cat -n  kube-scheduler.yaml  | grep port=0
    19	    #- --port=0
[root@k8s154 /etc/kubernetes/manifests]# 

#結果
[root@k8s154 /etc/kubernetes/manifests]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok                  
controller-manager   Healthy   ok                  
etcd-0               Healthy   {"health":"true"} 

8.2 flannel

溫馨提示: (所有的worker節點做此操作即可)
	問題引出: 
		"network: failed to find plugin "flannel" in path [/opt/cni/bin]]..."這樣的報錯。
	解決方案:
		wget https://github.com/containernetworking/plugins/releases/download/v0.8.6/cni-plugins-linux-amd64-v0.8.6.tgz
		
		tar -xf cni-plugins-linux-amd64-v0.8.6.tgz ./flannel  # 只需要解壓這一個檔案即可。
		
		cp flannel /opt/cni/bin/