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

原文地址:https://www.cnblogs.com/cangfriend/p/13265391.html