Puncte:1

Cluster HA kubernetes: resetare accidentală a kubeadm pe 1 nod master, conexiune refuzată la reintrarea în cluster

drapel cn

Am configurat un cluster Kubernetes cu 2 noduri master (cp01 192.168.1.42, cp02 192.168.1.46) și 4 noduri de lucru, implementate cu haproxy și keepalived rulând ca pod-uri statice în cluster, cluster intern etcd.Din unele motive stupide, am resetat accidental kubeadm -f pe cp01. Acum încerc să mă reunesc în cluster utilizând comanda kubeadm join, dar continui să primesc apelul tcp 192.168.1.49:8443: connect: connection refud, unde 192.168.1.49 este IP-ul LoadBalancer. Te rog ajuta-ma! Mai jos sunt configurațiile actuale.

/etc/haproxy/haproxy.cfg pe cp02

implicite
    timeout connect 10s
    timeout client 30s
    timeout server 30s
apiserver frontend
    lega *.8443
    modul tcp
    opțiunea tcplog
    default_backend apiserver
apiserver backend
    opțiunea httpchk GET /healthz
    http-check aștept starea 200
    modul tcp
    opțiunea ssl-hello-chk
    echilibru roundrobin
        default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 greutate 100
        #server master01 192.168.1.42:6443 verificați ***cel pe care l-am resetat accidental
        server master02 192.168.1.46:6443 verifica

/etc/keepalived/keepalived.conf pe cp02

global_defs {
    router_id LVS_DEVEL
    rădăcină script_user
    enable_script_security
    interfețe_dinamice
}
vrrp_script check_apiserver {
    scriptul „/etc/keepalived/check_apiserver.sh”
    intervalul 3
    greutate -2
    toamna 10
    ridica 2
}
vrrp_instance VI_l {
    stare BACKUP
    interfata ens192
    virtual_router_id 51
    prioritatea 101
    autentificare {
        auth_type PASS
        auth_pass ***
    }
    adresa_virtuală {
        192.168.1.49/24
    }
    track_script {
        check_apserver
    }
}

cluster kubeadm-config

apiVersion: v1
date:
    ClusterConfiguration: |
        apiServer:
            extraArgs:
                modul de autorizare: Nod,RBAC
            timeoutForControlPlane: 4m0s
        apiVersion: kubeadm.k8s.io/v1beta2
        certificatesDir: /etc/kubernetes/pki
        clusterName: kubernetes
        controlPlaneEndpoint: 192.168.1.49:8443
        ControllerManager: {}
        dns:
            tip: CoreDNS
        etcd:
            local:
                dataDir: /var/lib/etcd
        ImageRepository: k8s.gcr.io
        fel: ClusterConfiguration
        kubernetesVersiunea: v1.19.2
        rețele:
            dnsDomain: cluster.local
            podSubnet: 10.244.0.0/16
            serviceSubnet: 10.96.0.0/12
        programator: {}
    ClusterStatus: |
        apiEndpoints:
            cp02:
                advertiseAdresa: 192.168.1.46
                bindPort: 6443
        apiVersion: kubeadm.k8s.io/v1beta2
        fel: ClusterStatus
...

kubectl cluster-info

Kubernetes Master rulează la https://192.168.1.49:8443
KubeDNS rulează la https://192.168.1.49:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

Mai multe informatii

  1. clusterul a fost inițializat cu --upload-certs pe cp01.

  2. Am drenat și șters cp01 din cluster.

  3. kubeadm join --token ... --discovery-token-ca-cert-hash ... --control-plane --certificate-key ... comanda returnata:

    verificarea prealabilă a fazei de execuție a erorii: imposibil de preluat kubeadm-config ConfigMap: eșuat să obțineți harta de configurare: obțineți „https://192.168.1.49:8443/api/v1/namespaces/kube-system/configmaps/kubeadm-config?timeout= 10s": formați tcp 192.168.1.49:8443: conectare: conexiune refuzată
    
  4. kubectl exec -n kube-system -it etcd-cp02 -- etcdctl --endpoints=https://192.168.1.46:2379 --key=/etc/kubernetes/pki/etcd/peer.key --cert=/etc /kubernetes/pki/etcd/peer.crt --cacert=/etc/kubernetes/pki/etcd/ca.crt lista de membri întors:

    ..., început, cp02, https://192.168.1.46:2380, https://192.168.1.46:2379, fals
    
  5. kubectl descrie pod/etcd-cp02 -n kube-system:

    ...
    ID container: docker://...
    Imagine: k8s.gcr.io/etcd:3.4.13-0
    ID imagine: docker://...
    Port: <niciun>
    Port gazdă: <niciun>
    Comanda:
      etcd
      --advertise-client-urls=https://192.168.1.46:2379
      --cert-file=/etc/kubernetes/pki/etcd/server.crt
      --client-cert-auth=true
      --data-dir=/var/lib/etcd
      --initial-advertise-peer-urls=https://192.168.1.46:2380
      --initial-cluster=cp01=https://192.168.1.42:2380,cp02=https://192.168.1.46:2380
      --initial-cluster-state=existent
      --key-file=/etc/kubernetes/pki/etcd/server.key
      --ascultați-client-urls=https://127.0.0.1:2379,https://192.168.1.46:2379
      --listen-metrics-urls=http://127.0.0.1:2381
      --ascultați-peer-urls=https://192.168.1.46:2380
      --name=cp02
      --peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt
      --peer-client-cert-auth=true
      --peer-key-file=/etc/kubernetes/pki/etcd/peer.key
      --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
      --snapshot-count=10000
      --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
      ...
    
  6. Am încercat să copiem certificatele pe cp01:/etc/kubernetes/pki înainte de a alerga kubeadm join 192.168.1.49:8443 --token ... --discovery-token-ca-cert-hash dar a returnat aceeași eroare.

    # fișiere copiate în cp01
    ca.crt
    ca.cheie
    sa.key
    sa.pub
    front-proxy-ca.crt
    front-proxy-ca.key
    etcd/ca.crt
    etcd/ca.key
    

Depanați rețeaua

  1. Poate face ping 192.168.1.49 pe cp01

  2. nc -v 192.168.1.49 8443 pe cp01 a revenit Ncat: Conexiune refuzată.

  3. curl -k https://192.168.1.49:8443/api/v1... funcționează pe cp02 și nodurile de lucru (returnează codul 403, care ar trebui să fie normal).

  4. /etc/cni/net.d/ este eliminat pe cp01

  5. Regulile iptables șterse manual pe cp01 cu „KUBE” sau „cali”.

  6. firewalld este dezactivat atât pe cp01, cât și pe cp02.

  7. Am încercat să mă alătur cu un nou server cp03 192.168.1.48 și am întâlnit același dial tcp 192.168.1.49:8443: connect: connection refud error.

  8. netstat -tlnp | grep 8443 pe cp02 a returnat:

    tcp 0 0.0.0.0:8443 0.0.0.0:* ASCULTĂ 27316/haproxy
    
  9. nc -v 192.168.1.46 6443 pe cp01 și cp03 returnează:

    Ncat: Conectat la 192.168.1.46:6443
    

Orice sfat/îndrumare ar fi foarte apreciat deoarece sunt în pierdere aici. Mă gândesc că ar putea fi din cauza regulilor de rețea de pe cp02, dar nu știu cum să verific asta. Mulțumesc!!

Puncte:1
drapel cn

Mi-am dat seama care era problema când am intrat ip a. Am realizat că ens192 pe cp01 conține încă adresa IP secundară 192.168.1.49.

Pur şi simplu ip addr del 192.168.1.49/24 dev ens192 și alăturați-vă kubeadm... și cp01 este capabil să se alăture clusterului cu succes. Nu pot să cred că am ratat asta...

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.