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
clusterul a fost inițializat cu --upload-certs pe cp01.
Am drenat și șters cp01 din cluster.
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ă
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
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
...
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
Poate face ping 192.168.1.49 pe cp01
nc -v 192.168.1.49 8443
pe cp01 a revenit Ncat: Conexiune refuzată.
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).
/etc/cni/net.d/ este eliminat pe cp01
Regulile iptables șterse manual pe cp01 cu „KUBE” sau „cali”.
firewalld este dezactivat atât pe cp01, cât și pe cp02.
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.
netstat -tlnp | grep 8443
pe cp02 a returnat:
tcp 0 0.0.0.0:8443 0.0.0.0:* ASCULTĂ 27316/haproxy
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!!