欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

K8S实战DAY2-使用Kubeadm高可用集群部署及测试

程序员文章站 2024-03-11 18:21:31
...

高可用集群搭建

由于云主机不支持虚拟IP,放弃使用keepalived,将前文global-config.properties的keepalived虚拟IP设为M1的即可。

主节点m1部署

1.使用kubeadm-config.yaml,参考:
</apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfiguration kubernetesVersion: vx.xx.x controlPlaneEndpoint: "x.x.x.x:6443"//此处填集群主节点ip或keepaliveIP networking: # This CIDR is a Calico default. Substitute or remove for your CNI provider. podSubnet: "172.22.0.0/16" imageRepository: registry.cn-hangzhou.aliyuncs.com/imooc>
2.执行kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs
注意保存后续的输出,复制kubeadm Master及Worker的加入指令
3.上一步会有提示copy kubectl配置:

$ mkdir -p ~/.kube
$ cp -i /etc/kubernetes/admin.conf ~/.kube/config

4.测试

$ kubectl get pods --all-namespaces

部署网络插件Calico(m1)

1.下载RBAC和calico的yaml文件

wget https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/rbac.yaml
wget https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/calico.yaml

2.rbac不用修改,直接kubectl create,calico需要修改

calico# vim calico.yaml
data:
  # Configure this with the location of your etcd cluster.
  etcd_endpoints: "https://10.3.1.15:2379,https://10.3.1.16:2379,https://10.3.1.17:2379"
  
  # If you're using TLS enabled etcd uncomment the following.
  # You must also populate the Secret below with these files.  
  etcd_ca: "/calico-secrets/etcd-ca"   #取消原来的注释即可
  etcd_cert: "/calico-secrets/etcd-cert"
  etcd_key: "/calico-secrets/etcd-key"
  
  
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: calico-etcd-secrets
  namespace: kube-system
data:  
 etcd-key: (cat /etc/kubernetes/ssl/etcd-key.pem | base64 | tr -d '\n') #将输出结果填写在这里
  etcd-cert: (cat /etc/kubernetes/ssl/etcd.pem | base64 | tr -d '\n') #将输出结果填写在这里
  etcd-ca: (cat /etc/kubernetes/ssl/ca.pem | base64 | tr -d '\n') #将输出结果填写在这里
   #如果etcd没用启用tls则为null 
  #上面是必须要修改的参数,文件中有一个参数是设置pod network地址的,根据实际情况做修改:
   - name: CALICO_IPV4POOL_CIDR
     value: "192.168.0.0/16"

这里参考https://blog.51cto.com/newfly/2062210的内容:
“关于ConfigMap部分主要参数如下:

etcd_endpoints:Calico使用etcd来保存网络拓扑和状态,该参数指定etcd的地址,可以使用K8S Master所用的etcd,也可以另外搭建。

calico_backend:Calico的后端,默认为bird。

cni_network_config:符合CNI规范的网络配置,其中type=calico表示,Kubelet从 CNI_PATH(默认为/opt/cni/bin)找名为calico的可执行文件,用于容器IP地址的分配。

etcd如果配置了TLS安全认证,则还需要指定相应的ca、cert、key等文件

关于通过DaemonSet部署的calico-node服务的主要参数:

  该POD中主包括如下两个容器:

      calico-node:calico服务程序,用于设置Pod的网络资源,保证pod的网络与各Node互联互通,它还需要以HostNetwork模式运行,直接使用宿主机网络。

      install-cni:在各Node上安装CNI二进制文件到/opt/cni/bin目录下,并安装相应的网络配置文件到/etc/cni/net.d目录下。



  calico-node服务的主要参数:

     CALICO_IPV4POOL_CIDR: Calico IPAM的IP地址池,Pod的IP地址将从该池中进行分配。

     CALICO_IPV4POOL_IPIP:是否启用IPIP模式,启用IPIP模式时,Calico将在node上创建一个tunl0的虚拟隧道。

     FELIX_LOGSEVERITYSCREEN: 日志级别。

     FELIX_IPV6SUPPORT : 是否启用IPV6。

  IP Pool可以使用两种模式:BGP或IPIP。使用IPIP模式时,设置 CALICO_IPV4POOL_IPIP="always",不使用IPIP模式时,设置为"off",此时将使用BGP模式。

  IPIP是一种将各Node的路由之间做一个tunnel,再把两个网络连接起来的模式,启用IPIP模式时,Calico将在各Node上创建一个名为"tunl0"的虚拟网络接口。


3.查看节点状态

Master及Worker节点加入

到对应节点粘贴上一步提示指令即可,注意token时效性