加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 评测 > 正文

最简单的 Kubernetes 高可用安装方式!

发布时间:2019-09-04 08:39:20 所属栏目:评测 来源:佚名
导读:本文教你如何用一条命令构建 Kubernetes 高可用集群且不依赖 HAProxy 和 Keepalived,也无需 Ansible。通过内核 IPVS 对 apiserver 进行负载均衡,并且带 apiserver 健康检测。架构如下图所示: 本项目名叫 sealos,旨在做一个简单干净轻量级稳定的 Kubern

所以在你的 Node 上加了三个东西,可以直观的看到:

  1. $ cat /etc/kubernetes/manifests   # 这下面增加了 LVScare 的 static pod 
  2. $ ipvsadm -Ln                     # 可以看到创建的 IPVS 规则 
  3. $ cat /etc/hosts                  # 增加了虚拟IP的地址解析 

定制 kubeadm

sealos 对 kubeadm 改动非常少,主要是延长了证书过期时间和扩展了 join 命令。下面主要讲讲对 join 命令的改造。

首先 join 命令增加 --master 参数用于指定 Master 地址列表:

  1. lagSet.StringSliceVar( 
  2. &locallb.LVScare.Masters, "master", []string{}, 
  3. "A list of ha masters, --master 192.168.0.2:6443  --master 192.168.0.2:6443  --master 192.168.0.2:6443", 

这样就可以拿到 Master 地址列表去做 IPVS 负载均衡了。

如果不是控制节点且不是单 Master,那么就只创建一条 IPVS 规则,控制节点上不需要创建,连自己的 apiserver 即可:

  1. if data.cfg.ControlPlane == nil { 
  2.         fmt.Println("This is not a control plan") 
  3.         if len(locallb.LVScare.Masters) != 0 { 
  4.             locallb.CreateLocalLB(args[0]) 
  5.         } 
  6.     }  

然后再去创建 lvscare static pod 来守护 IPVS:

  1. if len(locallb.LVScare.Masters) != 0 { 
  2.             locallb.LVScareStaticPodToDisk("/etc/kubernetes/manifests") 
  3.         }  

所以哪怕你不使用 sealos,也可以直接用定制过的 kubeadm 去部署集群,只是麻烦一些。下面给出安装步骤。

kubeadm 配置文件:

  1. apiVersion: kubeadm.k8s.io/v1beta1 
  2. kind: ClusterConfiguration 
  3. kubernetesVersion: v1.14.0 
  4. controlPlaneEndpoint: "apiserver.cluster.local:6443" # apiserver DNS name 
  5. apiServer: 
  6.     certSANs: 
  7.     - 127.0.0.1 
  8.     - apiserver.cluster.local 
  9.     - 172.20.241.205 
  10.     - 172.20.241.206 
  11.     - 172.20.241.207 
  12.     - 172.20.241.208 
  13.     - 10.103.97.1          # virturl ip 
  14. --- 
  15. apiVersion: kubeproxy.config.k8s.io/v1alpha1 
  16. kind: KubeProxyConfiguration 
  17. mode: "ipvs" 
  18. ipvs: 
  19.     excludeCIDRs:  
  20.     - "10.103.97.1/32" # 注意不加这个kube-proxy会清理你的规则 

在 master0(假设 vip 地址为 10.103.97.100)上执行以下命令:

  1. $ echo "10.103.97.100 apiserver.cluster.local" >> /etc/hosts # 解析的是 master0 的地址  
  2. $ kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs  
  3. $ mkdir ~/.kube && cp /etc/kubernetes/admin.conf ~/.kube/config  
  4. $ kubectl apply -f https://docs.projectcalico.org/v3.6/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml 

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读