Puncte:0

Conexiunea `kubectl` la server a fost refuzată

drapel cn

L-am urmărit pe cel al lui Kelsey Hightower Kubernetes pe calea grea care vă ghidează prin configurarea manuală a unui cluster k8s.

Aceasta este nu rulează pe minikube - rulează pe un VPS la distanță.

Sunt la pasul în care am configurat planul de control al k8s.

Cu toate acestea, atunci când încercați să efectuați o verificare a stării de sănătate kube-apiserver Primesc următoarele:

$ kubectl cluster-info --kubeconfig admin.kubeconfig

Pentru a depana și a diagnostica în continuare problemele clusterului, utilizați „kubectl cluster-info dump”.
Conexiunea la serverul 127.0.0.1:6443 a fost refuzată - ați specificat gazda sau portul potrivit?

Nu sunt sigur de unde să încep depanarea de aici.

Configurare

Toate cele 3 servicii k8s rulează:

starea systemctl kube-apiserver kube-controller-manager kube-scheduler etcd

# => Toate cele 4 returnează: „activ (în rulare)”

The kube-apiserver este configurat pentru a începe cu systemd:

 $ cat /etc/systemd/system/kube-apiserver.service
[Unitate]
Descriere=Server API Kubernetes
Documentație=https://github.com/kubernetes/kubernetes

[Serviciu]
ExecStart=/usr/local/bin/kube-apiserver \
  --advertise-address=$INTERNAL_IP_REDACTED \
  --allow-privileged=true \
  --apiserver-count=3 \
  --audit-log-maxage=30 \
  --audit-log-maxbackup=3 \
  --audit-log-maxsize=100 \
  --audit-log-path=/var/log/audit.log \
  --authorization-mode=Nod,RBAC \
  --bind-address=0.0.0.0 \
  --client-ca-file=/var/lib/kubernetes/ca.pem \
  --enable-admission-plugins=NamespaceLifecycle,NodeRestriction,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota\
  --etcd-cafile=/var/lib/kubernetes/ca.pem \
  --etcd-certfile=/var/lib/kubernetes/kubernetes.pem \
  --etcd-keyfile=/var/lib/kubernetes/kubernetes-key.pem \
  --etcd-servers=https://10.240.0.10:2379,https://10.240.0.11:2379,https://10.240.0.12:2379 \
  --event-ttl=1h \
  --encryption-provider-config=/var/lib/kubernetes/encryption-config.yaml \
  --kubelet-certificate-authority=/var/lib/kubernetes/ca.pem \
  --kubelet-client-certificate=/var/lib/kubernetes/kubernetes.pem \
  --kubelet-client-key=/var/lib/kubernetes/kubernetes-key.pem \
  --runtime-config='api/all=true' \
  --service-account-key-file=/var/lib/kubernetes/service-account.pem \
  --service-account-signing-key-file=/var/lib/kubernetes/service-account-key.pem \
  --service-account-issuer=https://$EXTERNAL_IP_REDACTED:6443 \
  --service-cluster-ip-range=10.32.0.0/24 \
  --service-node-port-range=30000-32767 \
  --tls-cert-file=/var/lib/kubernetes/kubernetes.pem \
  --tls-private-key-file=/var/lib/kubernetes/kubernetes-key.pem \
  --v=2
Restart=la eșec
RestartSec=5

[Instalare]
WantedBy=multi-user.target

The kube-apiserver cu siguranță rulează și ascultă pe port :6443

 $ lsof -iTCP -sTCP:ASCULTĂ -n -P | grep 6443
kube-apis 989442 root 7u IPv6 9345693 0t0 TCP *:6443 (ASCULTATE)

Aici este admin.kubeconfig fișier care este configurat să caute clusterul la 127.0.0.1:6443

apiVersion: v1
clustere:
- cluster:
    date-autoritatea-de-certificat: LS0tL...
    server: https://127.0.0.1:6443
  nume: kubernetes-the-hard-way
contexte:
- context:
    cluster: kubernetes-the-hard-way
    utilizator: admin
  nume: implicit
contextul curent: implicit
fel: Config
preferințe: {}
utilizatori:
- nume: admin
  utilizator:
    date-certificat-client: LS0tLS1CRU...
    date-cheie-client: LS0tLS1C....

Există un certificat SSL furnizat (creat mai devreme în tutorialul Kubernetes)

$ ls -hlt /var/lib/kubernetes/ca*
-rw------- 1 rădăcină rădăcină 1.7K 18 decembrie 00:56 /var/lib/kubernetes/ca-key.pem
-rw-r--r-- 1 rădăcină rădăcină 1.3K 18 decembrie 00:56 /var/lib/kubernetes/ca.pem

În cele din urmă, NGINX este, de asemenea, configurat să redirecționeze portul 80 trafic către punctul final al controlului de sănătate

$ cat /etc/nginx/sites-available/kubernetes.default.svc.cluster.local
Server {
  asculta 80;
  nume_server kubernetes.default.svc.cluster.local;

  locație /healthz {
     proxy_pass https://127.0.0.1:6443/healthz;
     proxy_ssl_trusted_certificate /var/lib/kubernetes/ca.pem;
  }
}

După cum am menționat mai sus, nu văd cu adevărat ce este în neregulă și Nu am idee de unde să încep să investighez.

Mulțumesc!

drapel jp
Rulați `kubectl` pe aceeași gazdă în care rulează `kube-apiserver`?
abhchand avatar
drapel cn
@AlexD - corect, îl rulez pe aceeași gazdă.
drapel jp
verificați rezultatul `env |grep -i proxy`.
Rajesh Dutta avatar
drapel br
Care este valoarea pentru INTERNAL_IP_REDACTED? Întreb acest lucru pentru că vreau să mă asigur că trimiteți cererea către ținta potrivită, care este, de asemenea, inclusă în lista albă în certificatul de server.
abhchand avatar
drapel cn
@RajeshDutta acea linie redactată este `--advertise-address=10.132.0.5`. IP-ul intern a fost determinat din `ifconfig`. Mulțumiri!
abhchand avatar
drapel cn
@AlexD nu există nicio ieșire returnată de la `env | grep -i proxy`. Mulțumiri!
Rajesh Dutta avatar
drapel br
@abhchand 10.132.0.5 este adresa IP internă și cred că aceasta este obținută din gama de rețea POD. Încercați să faceți ping la acest ip de la nodul în care încercați comanda kubectl. Mă îndoiesc că vei primi un răspuns. Dacă doriți să accesați acest lucru în afara nodului principal, atunci aveți nevoie de un echilibrator de încărcare frontend sau trebuie să faceți publicitate pentru serverul kube-api folosind un IP nod (cu condiția ca adresa IP să fie menționată în certificatul serverului).
Puncte:0
drapel cn

Am urmat același ghid pas cu pas pentru a recrea implementarea.

Am descoperit că este posibil să rulați comanda în afara controlerului vm.

Vă rugăm să lansați următoarea comandă pentru a vă conecta la controller vm:

gcloud compute ssh controller-0

Apoi, reîncercați comanda cluster-info

kubectl cluster-info --kubeconfig admin.kubeconfig

Iată rezultatul meu când fac testul.

Exemplu de la controller-1 VM

RELARE COMANDĂ ÎN CONTROLLER-1 VM

xxxxxxx_ayaladeltoro@controller-1:~$ kubectl cluster-info --kubeconfig admin.kubeconfig
Planul de control Kubernetes rulează la https://127.0.0.1:6443
 
Pentru a depana și a diagnostica în continuare problemele clusterului, utilizați „kubectl cluster-info dump”.
infosys_ayaladeltoro@controller-1:~$ curl -H „Gazdă: kubernetes.default.svc.cluster.local” -i http://127.0.0.1/healthz
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Data: vineri, 24 decembrie 2021 18:57:54 GMT
Tip de conținut: text/plan simplu; set de caractere=utf-8
Lungimea conținutului: 2
Conexiune: păstrați-vă în viață
Cache-Control: fără cache, privat
X-Content-Type-Options: nosniff
X-Kubernetes-Pf-Flowschema-Uid: 88df1f3d-a43f-4f2d-b2b6-661e0cd190f2
X-Kubernetes-Pf-Prioritylevel-Uid: cd1dd298-6e5e-4091-aac6-baf7c816ba6b

IEȘIREA CONTROLLER-1 VM

xxxxxxx_ayaladeltoro@controller-1:~$ ieșire
logoutConexiune la 34.83.87.134 închisă.

RELARE COMANDĂ DE LA VM CLOUD SHELL

xxxxxxx_ayaladeltoro@cloudshell:~ (ayaladeltoro-training-project)$ kubectl cluster-info --kubeconfig admin.kubeconfig
Pentru a depana și a diagnostica în continuare problemele de cluster, utilizați „kubectl cluster-info dump”. Conexiunea la serverul 127.0.0.1:6443 a fost refuzată - ați specificat gazda sau portul potrivit?

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.