Implementación de clúster de k8s-alta disponibilidad

1. Planificación ambiental

Topología aproximada:

Estoy aquí que etcd y master están en la misma máquina

Inicialización de dos sistemas.

Ver https://www.cnblogs.com/huningfei/p/12697310.html

Tres instalan k8s y docker

Ver https://www.cnblogs.com/huningfei/p/12697310.html

Cuatro instalar keepalived

Instalar en tres nodos maestros

yum -y install keepalived

Archivo de configuración
master1

[root@k8s-master01 keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
   router_id master01
}
vrrp_instance VI_1 {
    state MASTER #主
    interface ens33 #网卡名字
    virtual_router_id 50
    priority 100 #权重
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.222 #vip
    }
}



master2

! Configuration File for keepalived
global_defs {
   router_id master01
}
vrrp_instance VI_1 {
    state BACKUP 
    interface ens32
    virtual_router_id 50
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.222
    }
}



master3

! Configuration File for keepalived
global_defs {
   router_id master01
}
vrrp_instance VI_1 {
    state BACKUP 
    interface ens32
    virtual_router_id 50
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.222
    }
}

Comience y configure el arranque para comenzar

service keepalived start
 systemctl enable keepalived

Cuatro inicializan el nodo maestro

Solo ejecuta en cualquiera

kubeadm init --config=kubeadm-config.yaml
初始化配置文件如下:
```bash
[root@k8s-master01 load-k8s]# cat kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.15.1
apiServer:
  certSANs:    #填写所有kube-apiserver节点的hostname、IP、VIP(好像也可以不用写,只写vip就行)
  - k8s-master01
  - k8s-node1
  - k8s-node2
  - 192.168.1.210
  - 192.168.1.200
  - 192.168.1.211
  - 192.168.1.222
controlPlaneEndpoint: "192.168.1.222:6443" #vip
imageRepository: registry.aliyuncs.com/google_containers

networking:
  podSubnet: "10.244.0.0/16"
  serviceSubnet: 10.96.0.0/12

---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
featureGates:
  SupportIPVSProxyMode: true
mode: ipvs


La información que se muestra en la figura representa una inicialización exitosa:

Luego, siga las indicaciones para ejecutar el comando:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Cinco instalar franela de red enchufable

kubectl apply -f kube-flannel.yml

Certificado de seis copias (pasos clave)

Copie de master01 a los dos nodos maestros restantes, uso la copia de script aquí

[root@k8s-master01 load-k8s]# cat cert-master.sh 
USER=root # customizable
CONTROL_PLANE_IPS="192.168.1.200 192.168.1.211"
for host in ${CONTROL_PLANE_IPS}; do
    scp /etc/kubernetes/pki/ca.crt "${USER}"@$host:
    scp /etc/kubernetes/pki/ca.key "${USER}"@$host:
    scp /etc/kubernetes/pki/sa.key "${USER}"@$host:
    scp /etc/kubernetes/pki/sa.pub "${USER}"@$host:
    scp /etc/kubernetes/pki/front-proxy-ca.crt "${USER}"@$host:
    scp /etc/kubernetes/pki/front-proxy-ca.key "${USER}"@$host:
    scp /etc/kubernetes/pki/etcd/ca.crt "${USER}"@$host:etcd-ca.crt
    # Quote this line if you are using external etcd
    scp /etc/kubernetes/pki/etcd/ca.key "${USER}"@$host:etcd-ca.key
done

然后去其他两个master节点把证书移动到/etc/kubernetes/pki目录下面,我这里用脚本移动
```bash
[root@k8s-node1 load-k8s]# cat mv-cert.sh 
USER=root # customizable
mkdir -p /etc/kubernetes/pki/etcd
mv /${USER}/ca.crt /etc/kubernetes/pki/
mv /${USER}/ca.key /etc/kubernetes/pki/
mv /${USER}/sa.pub /etc/kubernetes/pki/
mv /${USER}/sa.key /etc/kubernetes/pki/
mv /${USER}/front-proxy-ca.crt /etc/kubernetes/pki/
mv /${USER}/front-proxy-ca.key /etc/kubernetes/pki/
mv /${USER}/etcd-ca.crt /etc/kubernetes/pki/etcd/ca.crt
# Quote this line if you are using external etcd
mv /${USER}/etcd-ca.key /etc/kubernetes/pki/etcd/ca.key

Siete dos nodos maestros restantes se unen al clúster

kubeadm join 192.168.1.222:6443 --token zi3lku.0jmskzstc49429cu \
    --discovery-token-ca-cert-hash sha256:75c2e15f51e23490a0b042d72d6ac84fc18ba63c230f27882728f8832711710b \
    --control-plane

Tenga en cuenta que la ip aquí es la ip virtual generada por keepalived.
Lo siguiente representa el éxito.

Después de unirse con éxito, puede ir a los tres maestros para verificar si el estado es exitoso
Kubectl get nodos
Descripción: Mi nombre de host aquí no se ha cambiado al nombre de host maestro porque es conveniente, de hecho, los tres son nodos maestros.

Ocho nodos nodos se unen al clúster

kubeadm join 192.168.1.222:6443 --token zi3lku.0jmskzstc49429cu \
    --discovery-token-ca-cert-hash sha256:75c2e15f51e23490a0b042d72d6ac84fc18ba63c230f27882728f8832711710b

El siguiente mensaje parece indicar éxito


Verifique el estado del nodo, el nodo 3 es mi nodo, el resto son nodos maestros

Prueba de alta disponibilidad de nueve grupos

1 Master01 se cierra, vip flota a master02, todas las funciones son normales
2 master02 se cierra, vip flota a master03, los pods son normales, pero no se pueden usar todos los comandos. La
conclusión es que cuando uno de los maestros está roto, el clúster está Puede trabajar normalmente

Supongo que te gusta

Origin www.cnblogs.com/huningfei/p/12759833.html
Recomendado
Clasificación