k8s keepalived haproxy 集群成功


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命令,說明集群成功;

 


免責聲明!

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



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