Docker版的gitlab成功,正在推進到項目中使用;kubeadm 安裝k8s單機版成功,所以,一直想把k8s延伸到生產環境;
綜合網上教程,加上docker的keepalived和Haproxy成功的經驗,結合多位大佬經驗,測試成功;
期間從《Kubernetes權威指南 》《0-Kubernetes指南-倪朋飛》開源版,《再也不踩坑的kubernetes實戰指南》《每天5分鍾玩轉Kubernetes》,
以上數據和材料多是大佬編寫,示例都是點睛之作;個人Linux知識稍微缺乏,多次沒有成功,加強學習好多基礎知識后,測試成功;
把基礎經驗編寫如下:
-
多次沒有成功,是一下2個基礎知識的問題,特意點出:
1. ETCD;K8S基礎組件之一,通過tecd創建K8S HA 集群,至少2台才可以運行,1台不行,所以是所有k8s ha 集群推薦master節點至少是3台;
2. ipvs,IP Virtual Server,簡寫為IPVS,linux基礎自己,支持負載均衡;k8s默認的iptables沒有成功,大佬忽略;
補充:ipvs一定要嚴肅,每台master節點必須安裝和配置OK,要不然會遇到訪問問題;我已經遇到,示例中的master3節點沒有配置好ipvs,集群負載均衡到m3老遇到問題;
K8S集群優化之路由轉發:使用IPVS替代iptable
-
集群基礎知識
1. haproxy 這個比較常見,1個要點,就是約定k8s集群的端口,按照以上多本數據資料,自定為12567;
2. keepalived,1個要點,priority 100 #初始權重,BACKUP 節點的一定要比這個要小;
-
kubeadm知識點
1. 初始化文件,
要點 1 本機ip 2 master節點列表 3 controlPlaneEndpoint 集群ip和端口 4 podSubnet k8s 網絡 flannel組件需要的內部ip段,其他網絡組件設置不同 5 支持 ipvs
apiVersion: kubeadm.k8s.io/v1beta2 bootstrapTokens: - groups: - system:bootstrappers:kubeadm:default-node-token token: abcdef.0123456789abcdef ttl: 24h0m0s usages: - signing - authentication kind: InitConfiguration localAPIEndpoint: advertiseAddress: *.*.60.111 # 1 本機IP bindPort: 6443 nodeRegistration: criSocket: /var/run/dockershim.sock name: k8su2020m01 taints: - effect: NoSchedule key: node-role.kubernetes.io/master --- apiServer: certSANs: # 2 master節點列表 - k8su2020m01 - k8su2020m02 - *.*.60.111 - *.*.60.112 - *.*.60.100 timeoutForControlPlane: 4m0s apiVersion: kubeadm.k8s.io/v1beta2 certificatesDir: /etc/kubernetes/pki clusterName: kubernetes controllerManager: {} dns: type: CoreDNS etcd: local: dataDir: /var/lib/etcd imageRepository: registry.aliyuncs.com/google_containers kind: ClusterConfiguration kubernetesVersion: v1.18.3 controlPlaneEndpoint: *.*.60.100:12567 # 3集群ip和端口 networking: dnsDomain: cluster.local serviceSubnet: 10.96.0.0/12 podSubnet: 10.244.0.0/16 # 4flannel 組件內網段設置 scheduler: {} --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration ipvs: minSyncPeriod: 1s scheduler: rr syncPeriod: 10s mode: ipvs # 5 支持IPVS模式
2 kubeadm init --config=k8s.yaml --upload-certs, --upload-certs參數
執行成功;
3 master 節點加入的參數 這個倒不用擔心,以上初始化成功會提示;主節點加入和工作節點加入
k8s 知識點就不多謝了,這個教程很多,例如關閉swap,安裝3劍客等等;
成功后測試集群: 關閉 1個master,其他2個master還可以執行 kubeclt命令,說明集群成功;