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