build 7bbbddf7 | content blog-content@c8490fa · 338 posts | profiles 20 · corpus 267 | 0 skipped | | format
apiVersion: soultec.ch/v1kind: Postmetadata: name: iaas-control-plane-api-inaccessible locale: de labels: author: matthias-grasmueck series: lessons-learned capability/containers: 2.39 capability/cloud: 1.94 vendor/vmware: 0.88 annotations: source: blog-content/posts/de/iaas-control-plane-api-inaccessible.md route: /de/insights/iaas-control-plane-api-inaccessible/ schema: /nerd/schema/posts.json markdown: /de/insights/iaas-control-plane-api-inaccessible.mdspec: title: IaaS Control Plane – API inaccessible date: 2024-11-12 author: matthias-grasmueck locale: de summary: >- In unserem Lab wurde vor kurzem der Supervisor Cluster unserer VMware IaaS Control Plane Plattform (ehem. vSphere with Tanzu) auf die Version vSphere 8.0 Update 3 aktualisiert. capabilities: [containers, cloud] vendors: [vmware] series: lessons-learned hero: /blog-assets/iaas-control-plane-api-inaccessible/hero.webp legacySlug: iaas-control-plane-api-inaccessible migrated: 2026-08-24 draft: false sections: - body: | In unserem Lab wurde vor kurzem der [Supervisor Cluster](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-with-tanzu-concepts-planning/GUID-3E4E6039-BD24-4C40-8575-5AA0EECBBBEC.html) unserer [VMware IaaS Control Plane](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-with-tanzu-concepts-planning/GUID-70CAF0BB-1722-4526-9CE7-D5C92C15D7D0.html#GUID-70CAF0BB-1722-4526-9CE7-D5C92C15D7D0) Plattform (ehem. vSphere with Tanzu) auf die Version [vSphere 8.0 Update 3](https://docs.vmware.com/en/VMware-vSphere/8.0/rn/vmware-vsphere-with-tanzu-80-release-notes/index.html#What's%20New-What's%20New%20June%2025,%202024) aktualisiert. Dabei hat während dem Upgrade alles wie erwartet funktioniert und der Supervisor Cluster, wie auch die Kubernetes (Guest) Cluster waren funktionstüchtig. - heading:

Das Problem

body: | Nach einiger Zeit war der kubectl Zugriff auf unsere Kubernetes Cluster nicht mehr möglich. Der Config Status des Supervisor Cluster meldete zudem folgende Fehlermeldung: ``` Initialized vSphere resources Deployed Control Plane VMs Configured Control Plane VMs Configured Load Balancer fronting the kubernetes API Server Configured Core Supervisor Services Service: velero.vsphere.vmware.com. Status: Configuring Service: tkg.vsphere.vmware.com. Reason: Reconciling. Message: Reconciling. ``` Sämtliche Services, welche auf den Kubernetes (Guest) Cluster betrieben wurden, waren weiterhin erreichbar. Auch waren die kube-api VIPs der Kubernetes Cluster weiterhin adressierbar. Bei genauerer Betrachtung stellte ich fest, dass die Authentifizierung an unserem Supervisor Cluster nicht mehr funktionierte. Daraufhin wollte ich via kubectl auf den Supervisor Control Plane VMs (kurz: cpVM) prüfen, ob alle Services noch wie erwartet aktiv sind. Allerdings konnte ich mich nicht über die Supervisor VIP anmelden, woraufhin ich mich direkt über eine Management IP-Adresse einer der drei cpVMs via SSH einwählte. Zum Erstaunen stellte ich fest, dass weder der **kube-api** noch der **etcd** Service aktiv waren: ```bash crictl ps | grep -iE 'etcd|kube-api' ``` Da der kube-api Service nur läuft, wenn auch der etcd Service aktiv ist, habe ich die Logs des etcd Service verifiziert: ```bash cat /var/log/pods/kube-system_etcd-4233ab1d5ddccf36bc5bba316d1972b0_654c066164da8fbdd6d33ad93af301dc/etcd/10364.log stderr F {"level":"warn","ts":"2024-10-08T18:22:39.077642Z","caller":"wal/repair.go:81","msg":"failed to copy","from":"/var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal.broken","to":"/var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal","error":"write /var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal.broken: no space left on device"} ``` Der Fehler ***\[…\]no space left on device\[…\]*** lieferte dabei den ausschlaggebenden Punkt. Daraufhin habe ich überprüft, ob genügend Speicherplatz auf der vDisk der cpVM vorhanden ist: ```bash df -h | grep /dev/root /dev/root 32G 32G 0 100% / ``` Somit konnte ich annehmen, dass eine mögliche Ursache für das Problem, dass die Services nicht starteten, auf den fehlenden Speicherplatz zurückzuführen ist. Ich habe den Speicherplatz auf allen drei cpVMs überprüft und auf allen war die Auslastung bei 100% oder 99%. - heading:

Die Lösung

body: | Damit die Services wieder starten können, musste ich Speicherplatz zurückgewinnen. Eine einfache Suche nach den 10 grössten Files ergab folgendes: ```bash find / -path /proc -prune -o -type f -exec du -Sh {} + | sort -rh | head -n 10 1.1G /var/log/vmware/upgrade-ctl-cli.log.1 884M /var/log/vmware/svchost/stderr.log 730M /var/log/vmware/upgrade-ctl-cli.log 385M /var/log/vmware/audit/kube-apiserver.log 307M /var/log/vmware/fluentbit/consolidated.log 250M /storage/container-registry/docker/registry/v2/blobs/sha256/a0/a0dd531132ecd058d0b0249cf2f32cecccdfbe8d13cfb93b75101aafcd2a50a6/data 248M /var/lib/containerd/io.containerd.content.v1.content/blobs/sha256/4364e490859d064c9434f9e480d74bc62402a0d812480201d644a4ea9d7ff6c3 248M /storage/container-registry/docker/registry/v2/blobs/sha256/43/4364e490859d064c9434f9e480d74bc62402a0d812480201d644a4ea9d7ff6c3/data 234M /var/lib/containerd/io.containerd.content.v1.content/blobs/sha256/fcb275778b51abf28182241bffffc6f9a25861f29ed844d71364f59e4485fb1e 234M /storage/container-registry/docker/registry/v2/blobs/sha256/fc/fcb275778b51abf28182241bffffc6f9a25861f29ed844d71364f59e4485fb1e/data ``` Danach habe ich die Log Files überschrieben: ```bash echo > /var/log/vmware/upgrade-ctl-cli.log.1 echo > /var/log/vmware/svchost/stderr.log echo > /var/log/vmware/upgrade-ctl-cli.log echo > /var/log/vmware/audit/kube-apiserver.log echo > /var/log/vmware/fluentbit/consolidated.log ``` Das Löschen der Log Files hat auf allen drei cpVMs genügend Speicherplatz zurückgewonnen, damit der etcd und kube-api Service gestartet werden konnten. Allerdings verringerte sich der Speicherplatz und nach einiger Zeit war das Problem wieder da. Daraufhin habe ich dieselbe Prozedur durchgeführt und gewartet bis der Cluster wieder in einem healthy Status war. Anschliessend habe ich den etcd Status verifiziert und den Leader ermittelt: ```bash etcdctl member list -w table +------------------+---------+----------------------------------+----------------------------+----------------------------+------------+ | ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER | +------------------+---------+----------------------------------+----------------------------+----------------------------+------------+ | 10a00138f3a1ed4f | started | 421dd5792ebae985affbca516bb385c7 | https://172.16.100.11:2380 | https://172.16.100.11:2379 | false | | 7546e437eef94d66 | started | 421d85be9b7ab8b9dad06f0c6487d976 | https://172.16.100.12:2380 | https://172.16.100.12:2379 | false | | dec23b7a3b3cc58a | started | 421d411b9b2dca2e5176b3ff2dd4b66f | https://172.16.100.13:2380 | https://172.16.100.13:2379 | false | +------------------+---------+----------------------------------+----------------------------+----------------------------+------------+ # Check the endpoint status of all members and get the leader. etcdctl --endpoints=https://172.16.100.11:2379,https://172.16.100.12:2379,https://172.16.100.13:2379 -w table endpoint status +----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS | +----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | https://172.16.100.11:2379 | 10a00138f3a1ed4f | 3.5.11 | 164 MB | false | false | 318 | 668808659 | 668808659 | | | https://172.16.100.12:2379 | 7546e437eef94d66 | 3.5.11 | 164 MB | true | false | 318 | 668808659 | 668808659 | | | https://172.16.100.13:2379 | dec23b7a3b3cc58a | 3.5.11 | 165 MB | false | false | 318 | 668808659 | 668808659 | | +----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ # Check the endpoint health of all members. etcdctl --endpoints=https://172.16.100.11:2379,https://172.16.100.12:2379,https://172.16.100.13:2379 -w table endpoint health +----------------------------+--------+-------------+-------+ | ENDPOINT | HEALTH | TOOK | ERROR | +----------------------------+--------+-------------+-------+ | https://172.16.100.11:2379 | true | 15.673792ms | | | https://172.16.100.11:2379 | true | 17.78887ms | | | https://172.16.100.11:2379 | true | 15.571392ms | | +----------------------------+--------+-------------+-------+ ``` Um das Problem nachhaltig zu lösen, habe ich anschliessend alle cpVM neu erstellen lassen, in dem ich die EAM Agency nacheinander entfernt habe. > Das Entfernen der EAM Agency hat die Löschung der referenzierten Supervisor Control Plane VM zur Folge. Daher sollte diese Aktion in einer produktiven Umgebung nur unter Regie und auf ausdrücklicher Anweisung des VMware Supports durchgeführt werden. Dazu habe ich mir alle Infos von den cpVM zusammengetragen: | VM | Rolle | Management-IP | VIP | etcd Member | | --- | --- | --- | --- | --- | | vmware-vsc-apiserver-hv4ntr | SupervisorControlPlaneVM (1) | 172.16.100.11 | | 421dd5792ebae985affbca516bb385c7 | | vmware-vsc-apiserver-dhpm69 | SupervisorControlPlaneVM (2) | 172.16.100.12 | 172.16.100.10 | 421d85be9b7ab8b9dad06f0c6487d976 (etcd Leader) | | vmware-vsc-apiserver-dfll6t | SupervisorControlPlaneVM (3) | 172.16.100.13 | | 421d411b9b2dca2e5176b3ff2dd4b66f | Dazu habe ich eine cpVM nach der anderen gem. nachfolgender Prozedur entfernt: 1. Remove first non-leader cpVM via vCenter UI > Administration > vCenter Server Extensions > vSphere ESX Agent Manager > Configure > vmware-vcs-apiserver-hv4ntr > Delete Agency 2. Wait until new cpVM SupervisorControlPlaneVM (4) is provisioned and cluster is healthy state. 3. Repeat with step 1 by removing second non-leader cpVM via vCenter UI > Administration > vCenter Server Extensions > vSphere ESX Agent Manager > Configure > vmware-vcs-apiserver-dfll6t > Delete Agency 4. Wait until new cpVM SupervisorControlPlaneVM (5) is provisioned and cluster is healthy state. 5. Repeat with step 1 by removing leader cpVM via vCenter UI > Administration > vCenter Server Extensions > vSphere ESX Agent Manager > Configure > vmware-vcs-apiserver-dhpm69 > Delete Agency 6. Wait until new cpVM SupervisorControlPlaneVM (6) is provisioned and cluster is healthy state. Nach dem alle drei cpVM neu erstellt waren, hat sich auch deren Diskauslastung normalisiert und das Problem war gelöst.status: corpus: 267 alsoLike: - {ref: posts/how-to-authenticate-with-the-vsphere-supervisor-api, score: 0.69} - {ref: posts/vvf-9-0-supervisor-mit-foundation-load-balancer, score: 0.69} - {ref: services/virtualization-container, score: 0.59}
{ "apiVersion": "soultec.ch/v1", "kind": "Post", "metadata": { "name": "iaas-control-plane-api-inaccessible", "locale": "de", "labels": { "author": "matthias-grasmueck", "series": "lessons-learned", "capability/containers": "2.39", "capability/cloud": "1.94", "vendor/vmware": "0.88" }, "annotations": { "source": "blog-content/posts/de/iaas-control-plane-api-inaccessible.md", "route": "/de/insights/iaas-control-plane-api-inaccessible/", "schema": "/nerd/schema/posts.json", "markdown": "/de/insights/iaas-control-plane-api-inaccessible.md" } }, "spec": { "title": "IaaS Control Plane – API inaccessible", "date": "2024-11-12", "author": "matthias-grasmueck", "locale": "de", "summary": "In unserem Lab wurde vor kurzem der Supervisor Cluster unserer VMware IaaS Control Plane Plattform (ehem. vSphere with Tanzu) auf die Version vSphere 8.0 Update 3 aktualisiert.", "capabilities": [ "containers", "cloud" ], "vendors": [ "vmware" ], "series": "lessons-learned", "hero": "/blog-assets/iaas-control-plane-api-inaccessible/hero.webp", "legacySlug": "iaas-control-plane-api-inaccessible", "migrated": "2026-08-24", "draft": false }, "sections": [ { "body": "In unserem Lab wurde vor kurzem der [Supervisor Cluster](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-with-tanzu-concepts-planning/GUID-3E4E6039-BD24-4C40-8575-5AA0EECBBBEC.html) unserer [VMware IaaS Control Plane](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-with-tanzu-concepts-planning/GUID-70CAF0BB-1722-4526-9CE7-D5C92C15D7D0.html#GUID-70CAF0BB-1722-4526-9CE7-D5C92C15D7D0) Plattform (ehem. vSphere with Tanzu) auf die Version [vSphere 8.0 Update 3](https://docs.vmware.com/en/VMware-vSphere/8.0/rn/vmware-vsphere-with-tanzu-80-release-notes/index.html#What's%20New-What's%20New%20June%2025,%202024) aktualisiert. Dabei hat während dem Upgrade alles wie erwartet funktioniert und der Supervisor Cluster, wie auch die Kubernetes (Guest) Cluster waren funktionstüchtig." }, { "heading": "

Das Problem

",
"body": "Nach einiger Zeit war der kubectl Zugriff auf unsere Kubernetes Cluster nicht mehr möglich. Der Config Status des Supervisor Cluster meldete zudem folgende Fehlermeldung:\n\n```\nInitialized vSphere resources\nDeployed Control Plane VMs\nConfigured Control Plane VMs\nConfigured Load Balancer fronting the kubernetes API Server\nConfigured Core Supervisor Services\nService: velero.vsphere.vmware.com. Status: Configuring\nService: tkg.vsphere.vmware.com. Reason: Reconciling. Message: Reconciling.\n```\n\nSämtliche Services, welche auf den Kubernetes (Guest) Cluster betrieben wurden, waren weiterhin erreichbar. Auch waren die kube-api VIPs der Kubernetes Cluster weiterhin adressierbar.\n\nBei genauerer Betrachtung stellte ich fest, dass die Authentifizierung an unserem Supervisor Cluster nicht mehr funktionierte. Daraufhin wollte ich via kubectl auf den Supervisor Control Plane VMs (kurz: cpVM) prüfen, ob alle Services noch wie erwartet aktiv sind. Allerdings konnte ich mich nicht über die Supervisor VIP anmelden, woraufhin ich mich direkt über eine Management IP-Adresse einer der drei cpVMs via SSH einwählte.\n\nZum Erstaunen stellte ich fest, dass weder der **kube-api** noch der **etcd** Service aktiv waren:\n\n```bash\n \ncrictl ps | grep -iE 'etcd|kube-api'\n```\n\nDa der kube-api Service nur läuft, wenn auch der etcd Service aktiv ist, habe ich die Logs des etcd Service verifiziert:\n\n```bash\ncat /var/log/pods/kube-system_etcd-4233ab1d5ddccf36bc5bba316d1972b0_654c066164da8fbdd6d33ad93af301dc/etcd/10364.log\n\nstderr F {\"level\":\"warn\",\"ts\":\"2024-10-08T18:22:39.077642Z\",\"caller\":\"wal/repair.go:81\",\"msg\":\"failed to copy\",\"from\":\"/var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal.broken\",\"to\":\"/var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal\",\"error\":\"write /var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal.broken: no space left on device\"}\n```\n\nDer Fehler ***\\[…\\]no space left on device\\[…\\]*** lieferte dabei den ausschlaggebenden Punkt.\n\nDaraufhin habe ich überprüft, ob genügend Speicherplatz auf der vDisk der cpVM vorhanden ist:\n\n```bash\n \ndf -h | grep /dev/root\n/dev/root 32G 32G 0 100% /\n```\n\nSomit konnte ich annehmen, dass eine mögliche Ursache für das Problem, dass die Services nicht starteten, auf den fehlenden Speicherplatz zurückzuführen ist. Ich habe den Speicherplatz auf allen drei cpVMs überprüft und auf allen war die Auslastung bei 100% oder 99%." }, { "heading": "

Die Lösung

",
"body": "Damit die Services wieder starten können, musste ich Speicherplatz zurückgewinnen. Eine einfache Suche nach den 10 grössten Files ergab folgendes:\n\n```bash\n \nfind / -path /proc -prune -o -type f -exec du -Sh {} + | sort -rh | head -n 10\n1.1G /var/log/vmware/upgrade-ctl-cli.log.1\n884M /var/log/vmware/svchost/stderr.log\n730M /var/log/vmware/upgrade-ctl-cli.log\n385M /var/log/vmware/audit/kube-apiserver.log\n307M /var/log/vmware/fluentbit/consolidated.log\n250M /storage/container-registry/docker/registry/v2/blobs/sha256/a0/a0dd531132ecd058d0b0249cf2f32cecccdfbe8d13cfb93b75101aafcd2a50a6/data\n248M /var/lib/containerd/io.containerd.content.v1.content/blobs/sha256/4364e490859d064c9434f9e480d74bc62402a0d812480201d644a4ea9d7ff6c3\n248M /storage/container-registry/docker/registry/v2/blobs/sha256/43/4364e490859d064c9434f9e480d74bc62402a0d812480201d644a4ea9d7ff6c3/data\n234M /var/lib/containerd/io.containerd.content.v1.content/blobs/sha256/fcb275778b51abf28182241bffffc6f9a25861f29ed844d71364f59e4485fb1e\n234M /storage/container-registry/docker/registry/v2/blobs/sha256/fc/fcb275778b51abf28182241bffffc6f9a25861f29ed844d71364f59e4485fb1e/data\n```\n\nDanach habe ich die Log Files überschrieben:\n\n```bash\n \necho > /var/log/vmware/upgrade-ctl-cli.log.1\necho > /var/log/vmware/svchost/stderr.log\necho > /var/log/vmware/upgrade-ctl-cli.log\necho > /var/log/vmware/audit/kube-apiserver.log\necho > /var/log/vmware/fluentbit/consolidated.log\n```\n\nDas Löschen der Log Files hat auf allen drei cpVMs genügend Speicherplatz zurückgewonnen, damit der etcd und kube-api Service gestartet werden konnten. Allerdings verringerte sich der Speicherplatz und nach einiger Zeit war das Problem wieder da. Daraufhin habe ich dieselbe Prozedur durchgeführt und gewartet bis der Cluster wieder in einem healthy Status war.\n\nAnschliessend habe ich den etcd Status verifiziert und den Leader ermittelt:\n\n```bash\netcdctl member list -w table\n+------------------+---------+----------------------------------+----------------------------+----------------------------+------------+\n| ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER |\n+------------------+---------+----------------------------------+----------------------------+----------------------------+------------+\n| 10a00138f3a1ed4f | started | 421dd5792ebae985affbca516bb385c7 | https://172.16.100.11:2380 | https://172.16.100.11:2379 | false |\n| 7546e437eef94d66 | started | 421d85be9b7ab8b9dad06f0c6487d976 | https://172.16.100.12:2380 | https://172.16.100.12:2379 | false |\n| dec23b7a3b3cc58a | started | 421d411b9b2dca2e5176b3ff2dd4b66f | https://172.16.100.13:2380 | https://172.16.100.13:2379 | false |\n+------------------+---------+----------------------------------+----------------------------+----------------------------+------------+\n\n# Check the endpoint status of all members and get the leader.\netcdctl --endpoints=https://172.16.100.11:2379,https://172.16.100.12:2379,https://172.16.100.13:2379 -w table endpoint status\n+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+\n| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |\n+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+\n| https://172.16.100.11:2379 | 10a00138f3a1ed4f | 3.5.11 | 164 MB | false | false | 318 | 668808659 | 668808659 | |\n| https://172.16.100.12:2379 | 7546e437eef94d66 | 3.5.11 | 164 MB | true | false | 318 | 668808659 | 668808659 | |\n| https://172.16.100.13:2379 | dec23b7a3b3cc58a | 3.5.11 | 165 MB | false | false | 318 | 668808659 | 668808659 | |\n+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+\n\n# Check the endpoint health of all members.\netcdctl --endpoints=https://172.16.100.11:2379,https://172.16.100.12:2379,https://172.16.100.13:2379 -w table endpoint health\n+----------------------------+--------+-------------+-------+\n| ENDPOINT | HEALTH | TOOK | ERROR |\n+----------------------------+--------+-------------+-------+\n| https://172.16.100.11:2379 | true | 15.673792ms | |\n| https://172.16.100.11:2379 | true | 17.78887ms | |\n| https://172.16.100.11:2379 | true | 15.571392ms | |\n+----------------------------+--------+-------------+-------+\n```\n\nUm das Problem nachhaltig zu lösen, habe ich anschliessend alle cpVM neu erstellen lassen, in dem ich die EAM Agency nacheinander entfernt habe.\n\n> Das Entfernen der EAM Agency hat die Löschung der referenzierten Supervisor Control Plane VM zur Folge. Daher sollte diese Aktion in einer produktiven Umgebung nur unter Regie und auf ausdrücklicher Anweisung des VMware Supports durchgeführt werden.\n\nDazu habe ich mir alle Infos von den cpVM zusammengetragen:\n\n| VM | Rolle | Management-IP | VIP | etcd Member |\n| --- | --- | --- | --- | --- |\n| vmware-vsc-apiserver-hv4ntr | SupervisorControlPlaneVM (1) | 172.16.100.11 | | 421dd5792ebae985affbca516bb385c7 |\n| vmware-vsc-apiserver-dhpm69 | SupervisorControlPlaneVM (2) | 172.16.100.12 | 172.16.100.10 | 421d85be9b7ab8b9dad06f0c6487d976 (etcd Leader) |\n| vmware-vsc-apiserver-dfll6t | SupervisorControlPlaneVM (3) | 172.16.100.13 | | 421d411b9b2dca2e5176b3ff2dd4b66f |\n\nDazu habe ich eine cpVM nach der anderen gem. nachfolgender Prozedur entfernt:\n\n1. Remove first non-leader cpVM via vCenter UI > Administration > vCenter Server Extensions > vSphere ESX Agent Manager > Configure > vmware-vcs-apiserver-hv4ntr > Delete Agency\n2. Wait until new cpVM SupervisorControlPlaneVM (4) is provisioned and cluster is healthy state.\n3. Repeat with step 1 by removing second non-leader cpVM via vCenter UI > Administration > vCenter Server Extensions > vSphere ESX Agent Manager > Configure > vmware-vcs-apiserver-dfll6t > Delete Agency\n4. Wait until new cpVM SupervisorControlPlaneVM (5) is provisioned and cluster is healthy state.\n5. Repeat with step 1 by removing leader cpVM via vCenter UI > Administration > vCenter Server Extensions > vSphere ESX Agent Manager > Configure > vmware-vcs-apiserver-dhpm69 > Delete Agency\n6. Wait until new cpVM SupervisorControlPlaneVM (6) is provisioned and cluster is healthy state.\n\nNach dem alle drei cpVM neu erstellt waren, hat sich auch deren Diskauslastung normalisiert und das Problem war gelöst." } ], "status": { "corpus": 267, "alsoLike": [ { "ref": "posts/how-to-authenticate-with-the-vsphere-supervisor-api", "score": "0.69" }, { "ref": "posts/vvf-9-0-supervisor-mit-foundation-load-balancer", "score": "0.69" }, { "ref": "services/virtualization-container", "score": "0.59" } ] }}
apiVersion = "soultec.ch/v1"kind = "Post"[metadata]name = "iaas-control-plane-api-inaccessible"locale = "de"[metadata.labels]author = "matthias-grasmueck"series = "lessons-learned""capability/containers" = "2.39""capability/cloud" = "1.94""vendor/vmware" = "0.88"[metadata.annotations]source = "blog-content/posts/de/iaas-control-plane-api-inaccessible.md"route = "/de/insights/iaas-control-plane-api-inaccessible/"schema = "/nerd/schema/posts.json"markdown = "/de/insights/iaas-control-plane-api-inaccessible.md"[spec]title = "IaaS Control Plane – API inaccessible"date = 2024-11-12author = "matthias-grasmueck"locale = "de"summary = "In unserem Lab wurde vor kurzem der Supervisor Cluster unserer VMware IaaS Control Plane Plattform (ehem. vSphere with Tanzu) auf die Version vSphere 8.0 Update 3 aktualisiert."capabilities = ["containers", "cloud"]vendors = ["vmware"]series = "lessons-learned"hero = "/blog-assets/iaas-control-plane-api-inaccessible/hero.webp"legacySlug = "iaas-control-plane-api-inaccessible"migrated = 2026-08-24draft = false[[sections]]body = "In unserem Lab wurde vor kurzem der [Supervisor Cluster](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-with-tanzu-concepts-planning/GUID-3E4E6039-BD24-4C40-8575-5AA0EECBBBEC.html) unserer [VMware IaaS Control Plane](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-with-tanzu-concepts-planning/GUID-70CAF0BB-1722-4526-9CE7-D5C92C15D7D0.html#GUID-70CAF0BB-1722-4526-9CE7-D5C92C15D7D0) Plattform (ehem. vSphere with Tanzu) auf die Version [vSphere 8.0 Update 3](https://docs.vmware.com/en/VMware-vSphere/8.0/rn/vmware-vsphere-with-tanzu-80-release-notes/index.html#What's%20New-What's%20New%20June%2025,%202024) aktualisiert. Dabei hat während dem Upgrade alles wie erwartet funktioniert und der Supervisor Cluster, wie auch die Kubernetes (Guest) Cluster waren funktionstüchtig."[[sections]]heading = "

Das Problem

"
body = '''Nach einiger Zeit war der kubectl Zugriff auf unsere Kubernetes Cluster nicht mehr möglich. Der Config Status des Supervisor Cluster meldete zudem folgende Fehlermeldung:```Initialized vSphere resourcesDeployed Control Plane VMsConfigured Control Plane VMsConfigured Load Balancer fronting the kubernetes API ServerConfigured Core Supervisor ServicesService: velero.vsphere.vmware.com. Status: ConfiguringService: tkg.vsphere.vmware.com. Reason: Reconciling. Message: Reconciling.```Sämtliche Services, welche auf den Kubernetes (Guest) Cluster betrieben wurden, waren weiterhin erreichbar. Auch waren die kube-api VIPs der Kubernetes Cluster weiterhin adressierbar.Bei genauerer Betrachtung stellte ich fest, dass die Authentifizierung an unserem Supervisor Cluster nicht mehr funktionierte. Daraufhin wollte ich via kubectl auf den Supervisor Control Plane VMs (kurz: cpVM) prüfen, ob alle Services noch wie erwartet aktiv sind. Allerdings konnte ich mich nicht über die Supervisor VIP anmelden, woraufhin ich mich direkt über eine Management IP-Adresse einer der drei cpVMs via SSH einwählte.Zum Erstaunen stellte ich fest, dass weder der **kube-api** noch der **etcd** Service aktiv waren:```bash crictl ps | grep -iE 'etcd|kube-api'```Da der kube-api Service nur läuft, wenn auch der etcd Service aktiv ist, habe ich die Logs des etcd Service verifiziert:```bashcat /var/log/pods/kube-system_etcd-4233ab1d5ddccf36bc5bba316d1972b0_654c066164da8fbdd6d33ad93af301dc/etcd/10364.logstderr F {"level":"warn","ts":"2024-10-08T18:22:39.077642Z","caller":"wal/repair.go:81","msg":"failed to copy","from":"/var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal.broken","to":"/var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal","error":"write /var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal.broken: no space left on device"}```Der Fehler ***\[…\]no space left on device\[…\]*** lieferte dabei den ausschlaggebenden Punkt.Daraufhin habe ich überprüft, ob genügend Speicherplatz auf der vDisk der cpVM vorhanden ist:```bash df -h | grep /dev/root/dev/root 32G 32G 0 100% /```Somit konnte ich annehmen, dass eine mögliche Ursache für das Problem, dass die Services nicht starteten, auf den fehlenden Speicherplatz zurückzuführen ist. Ich habe den Speicherplatz auf allen drei cpVMs überprüft und auf allen war die Auslastung bei 100% oder 99%.'''[[sections]]heading = "

Die Lösung

"
body = '''Damit die Services wieder starten können, musste ich Speicherplatz zurückgewinnen. Eine einfache Suche nach den 10 grössten Files ergab folgendes:```bash find / -path /proc -prune -o -type f -exec du -Sh {} + | sort -rh | head -n 101.1G /var/log/vmware/upgrade-ctl-cli.log.1884M /var/log/vmware/svchost/stderr.log730M /var/log/vmware/upgrade-ctl-cli.log385M /var/log/vmware/audit/kube-apiserver.log307M /var/log/vmware/fluentbit/consolidated.log250M /storage/container-registry/docker/registry/v2/blobs/sha256/a0/a0dd531132ecd058d0b0249cf2f32cecccdfbe8d13cfb93b75101aafcd2a50a6/data248M /var/lib/containerd/io.containerd.content.v1.content/blobs/sha256/4364e490859d064c9434f9e480d74bc62402a0d812480201d644a4ea9d7ff6c3248M /storage/container-registry/docker/registry/v2/blobs/sha256/43/4364e490859d064c9434f9e480d74bc62402a0d812480201d644a4ea9d7ff6c3/data234M /var/lib/containerd/io.containerd.content.v1.content/blobs/sha256/fcb275778b51abf28182241bffffc6f9a25861f29ed844d71364f59e4485fb1e234M /storage/container-registry/docker/registry/v2/blobs/sha256/fc/fcb275778b51abf28182241bffffc6f9a25861f29ed844d71364f59e4485fb1e/data```Danach habe ich die Log Files überschrieben:```bash echo > /var/log/vmware/upgrade-ctl-cli.log.1echo > /var/log/vmware/svchost/stderr.logecho > /var/log/vmware/upgrade-ctl-cli.logecho > /var/log/vmware/audit/kube-apiserver.logecho > /var/log/vmware/fluentbit/consolidated.log```Das Löschen der Log Files hat auf allen drei cpVMs genügend Speicherplatz zurückgewonnen, damit der etcd und kube-api Service gestartet werden konnten. Allerdings verringerte sich der Speicherplatz und nach einiger Zeit war das Problem wieder da. Daraufhin habe ich dieselbe Prozedur durchgeführt und gewartet bis der Cluster wieder in einem healthy Status war.Anschliessend habe ich den etcd Status verifiziert und den Leader ermittelt:```bashetcdctl member list -w table+------------------+---------+----------------------------------+----------------------------+----------------------------+------------+| ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER |+------------------+---------+----------------------------------+----------------------------+----------------------------+------------+| 10a00138f3a1ed4f | started | 421dd5792ebae985affbca516bb385c7 | https://172.16.100.11:2380 | https://172.16.100.11:2379 | false || 7546e437eef94d66 | started | 421d85be9b7ab8b9dad06f0c6487d976 | https://172.16.100.12:2380 | https://172.16.100.12:2379 | false || dec23b7a3b3cc58a | started | 421d411b9b2dca2e5176b3ff2dd4b66f | https://172.16.100.13:2380 | https://172.16.100.13:2379 | false |+------------------+---------+----------------------------------+----------------------------+----------------------------+------------+# Check the endpoint status of all members and get the leader.etcdctl --endpoints=https://172.16.100.11:2379,https://172.16.100.12:2379,https://172.16.100.13:2379 -w table endpoint status+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+| https://172.16.100.11:2379 | 10a00138f3a1ed4f | 3.5.11 | 164 MB | false | false | 318 | 668808659 | 668808659 | || https://172.16.100.12:2379 | 7546e437eef94d66 | 3.5.11 | 164 MB | true | false | 318 | 668808659 | 668808659 | || https://172.16.100.13:2379 | dec23b7a3b3cc58a | 3.5.11 | 165 MB | false | false | 318 | 668808659 | 668808659 | |+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+# Check the endpoint health of all members.etcdctl --endpoints=https://172.16.100.11:2379,https://172.16.100.12:2379,https://172.16.100.13:2379 -w table endpoint health+----------------------------+--------+-------------+-------+| ENDPOINT | HEALTH | TOOK | ERROR |+----------------------------+--------+-------------+-------+| https://172.16.100.11:2379 | true | 15.673792ms | || https://172.16.100.11:2379 | true | 17.78887ms | || https://172.16.100.11:2379 | true | 15.571392ms | |+----------------------------+--------+-------------+-------+```Um das Problem nachhaltig zu lösen, habe ich anschliessend alle cpVM neu erstellen lassen, in dem ich die EAM Agency nacheinander entfernt habe.> Das Entfernen der EAM Agency hat die Löschung der referenzierten Supervisor Control Plane VM zur Folge. Daher sollte diese Aktion in einer produktiven Umgebung nur unter Regie und auf ausdrücklicher Anweisung des VMware Supports durchgeführt werden.Dazu habe ich mir alle Infos von den cpVM zusammengetragen:| VM | Rolle | Management-IP | VIP | etcd Member || --- | --- | --- | --- | --- || vmware-vsc-apiserver-hv4ntr | SupervisorControlPlaneVM (1) | 172.16.100.11 | | 421dd5792ebae985affbca516bb385c7 || vmware-vsc-apiserver-dhpm69 | SupervisorControlPlaneVM (2) | 172.16.100.12 | 172.16.100.10 | 421d85be9b7ab8b9dad06f0c6487d976 (etcd Leader) || vmware-vsc-apiserver-dfll6t | SupervisorControlPlaneVM (3) | 172.16.100.13 | | 421d411b9b2dca2e5176b3ff2dd4b66f |Dazu habe ich eine cpVM nach der anderen gem. nachfolgender Prozedur entfernt:1. Remove first non-leader cpVM via vCenter UI > Administration > vCenter Server Extensions > vSphere ESX Agent Manager > Configure > vmware-vcs-apiserver-hv4ntr > Delete Agency2. Wait until new cpVM SupervisorControlPlaneVM (4) is provisioned and cluster is healthy state.3. Repeat with step 1 by removing second non-leader cpVM via vCenter UI > Administration > vCenter Server Extensions > vSphere ESX Agent Manager > Configure > vmware-vcs-apiserver-dfll6t > Delete Agency4. Wait until new cpVM SupervisorControlPlaneVM (5) is provisioned and cluster is healthy state.5. Repeat with step 1 by removing leader cpVM via vCenter UI > Administration > vCenter Server Extensions > vSphere ESX Agent Manager > Configure > vmware-vcs-apiserver-dhpm69 > Delete Agency6. Wait until new cpVM SupervisorControlPlaneVM (6) is provisioned and cluster is healthy state.Nach dem alle drei cpVM neu erstellt waren, hat sich auch deren Diskauslastung normalisiert und das Problem war gelöst.'''[status]corpus = 267[[status.alsoLike]]ref = "posts/how-to-authenticate-with-the-vsphere-supervisor-api"score = "0.69"[[status.alsoLike]]ref = "posts/vvf-9-0-supervisor-mit-foundation-load-balancer"score = "0.69"[[status.alsoLike]]ref = "services/virtualization-container"score = "0.59"
<?xml version="1.0" encoding="UTF-8"?><manifest kind="Post"> <apiVersion>soultec.ch/v1</apiVersion> <metadata> <name>iaas-control-plane-api-inaccessible</name> <locale>de</locale> <labels> <author>matthias-grasmueck</author> <series>lessons-learned</series> <entry key="capability/containers">2.39</entry> <entry key="capability/cloud">1.94</entry> <entry key="vendor/vmware">0.88</entry> </labels> <annotations> <source>blog-content/posts/de/iaas-control-plane-api-inaccessible.md</source> <route>/de/insights/iaas-control-plane-api-inaccessible/</route> <schema>/nerd/schema/posts.json</schema> <markdown>/de/insights/iaas-control-plane-api-inaccessible.md</markdown> </annotations> </metadata> <spec> <title>IaaS Control Plane – API inaccessible</title> <date>2024-11-12</date> <author>matthias-grasmueck</author> <locale>de</locale> <summary>In unserem Lab wurde vor kurzem der Supervisor Cluster unserer VMware IaaS Control Plane Plattform (ehem. vSphere with Tanzu) auf die Version vSphere 8.0 Update 3 aktualisiert.</summary> <capabilities> <item>containers</item> <item>cloud</item> </capabilities> <vendors> <item>vmware</item> </vendors> <series>lessons-learned</series> <hero>/blog-assets/iaas-control-plane-api-inaccessible/hero.webp</hero> <legacySlug>iaas-control-plane-api-inaccessible</legacySlug> <migrated>2026-08-24</migrated> <draft>false</draft> </spec> <sections> <section> <body>In unserem Lab wurde vor kurzem der [Supervisor Cluster](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-with-tanzu-concepts-planning/GUID-3E4E6039-BD24-4C40-8575-5AA0EECBBBEC.html) unserer [VMware IaaS Control Plane](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-with-tanzu-concepts-planning/GUID-70CAF0BB-1722-4526-9CE7-D5C92C15D7D0.html#GUID-70CAF0BB-1722-4526-9CE7-D5C92C15D7D0) Plattform (ehem. vSphere with Tanzu) auf die Version [vSphere 8.0 Update 3](https://docs.vmware.com/en/VMware-vSphere/8.0/rn/vmware-vsphere-with-tanzu-80-release-notes/index.html#What's%20New-What's%20New%20June%2025,%202024) aktualisiert. Dabei hat während dem Upgrade alles wie erwartet funktioniert und der Supervisor Cluster, wie auch die Kubernetes (Guest) Cluster waren funktionstüchtig.</body> </section> <section> <heading>

Das Problem

</heading>
<body>Nach einiger Zeit war der kubectl Zugriff auf unsere Kubernetes Cluster nicht mehr möglich. Der Config Status des Supervisor Cluster meldete zudem folgende Fehlermeldung:```Initialized vSphere resourcesDeployed Control Plane VMsConfigured Control Plane VMsConfigured Load Balancer fronting the kubernetes API ServerConfigured Core Supervisor ServicesService: velero.vsphere.vmware.com. Status: ConfiguringService: tkg.vsphere.vmware.com. Reason: Reconciling. Message: Reconciling.```Sämtliche Services, welche auf den Kubernetes (Guest) Cluster betrieben wurden, waren weiterhin erreichbar. Auch waren die kube-api VIPs der Kubernetes Cluster weiterhin adressierbar.Bei genauerer Betrachtung stellte ich fest, dass die Authentifizierung an unserem Supervisor Cluster nicht mehr funktionierte. Daraufhin wollte ich via kubectl auf den Supervisor Control Plane VMs (kurz: cpVM) prüfen, ob alle Services noch wie erwartet aktiv sind. Allerdings konnte ich mich nicht über die Supervisor VIP anmelden, woraufhin ich mich direkt über eine Management IP-Adresse einer der drei cpVMs via SSH einwählte.Zum Erstaunen stellte ich fest, dass weder der **kube-api** noch der **etcd** Service aktiv waren:```bash crictl ps | grep -iE 'etcd|kube-api'```Da der kube-api Service nur läuft, wenn auch der etcd Service aktiv ist, habe ich die Logs des etcd Service verifiziert:```bashcat /var/log/pods/kube-system_etcd-4233ab1d5ddccf36bc5bba316d1972b0_654c066164da8fbdd6d33ad93af301dc/etcd/10364.logstderr F {"level":"warn","ts":"2024-10-08T18:22:39.077642Z","caller":"wal/repair.go:81","msg":"failed to copy","from":"/var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal.broken","to":"/var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal","error":"write /var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal.broken: no space left on device"}```Der Fehler ***\[…\]no space left on device\[…\]*** lieferte dabei den ausschlaggebenden Punkt.Daraufhin habe ich überprüft, ob genügend Speicherplatz auf der vDisk der cpVM vorhanden ist:```bash df -h | grep /dev/root/dev/root 32G 32G 0 100% /```Somit konnte ich annehmen, dass eine mögliche Ursache für das Problem, dass die Services nicht starteten, auf den fehlenden Speicherplatz zurückzuführen ist. Ich habe den Speicherplatz auf allen drei cpVMs überprüft und auf allen war die Auslastung bei 100% oder 99%. </body> </section> <section> <heading>

Die Lösung

</heading>
<body>Damit die Services wieder starten können, musste ich Speicherplatz zurückgewinnen. Eine einfache Suche nach den 10 grössten Files ergab folgendes:```bash find / -path /proc -prune -o -type f -exec du -Sh {} + | sort -rh | head -n 101.1G /var/log/vmware/upgrade-ctl-cli.log.1884M /var/log/vmware/svchost/stderr.log730M /var/log/vmware/upgrade-ctl-cli.log385M /var/log/vmware/audit/kube-apiserver.log307M /var/log/vmware/fluentbit/consolidated.log250M /storage/container-registry/docker/registry/v2/blobs/sha256/a0/a0dd531132ecd058d0b0249cf2f32cecccdfbe8d13cfb93b75101aafcd2a50a6/data248M /var/lib/containerd/io.containerd.content.v1.content/blobs/sha256/4364e490859d064c9434f9e480d74bc62402a0d812480201d644a4ea9d7ff6c3248M /storage/container-registry/docker/registry/v2/blobs/sha256/43/4364e490859d064c9434f9e480d74bc62402a0d812480201d644a4ea9d7ff6c3/data234M /var/lib/containerd/io.containerd.content.v1.content/blobs/sha256/fcb275778b51abf28182241bffffc6f9a25861f29ed844d71364f59e4485fb1e234M /storage/container-registry/docker/registry/v2/blobs/sha256/fc/fcb275778b51abf28182241bffffc6f9a25861f29ed844d71364f59e4485fb1e/data```Danach habe ich die Log Files überschrieben:```bash echo &gt; /var/log/vmware/upgrade-ctl-cli.log.1echo &gt; /var/log/vmware/svchost/stderr.logecho &gt; /var/log/vmware/upgrade-ctl-cli.logecho &gt; /var/log/vmware/audit/kube-apiserver.logecho &gt; /var/log/vmware/fluentbit/consolidated.log```Das Löschen der Log Files hat auf allen drei cpVMs genügend Speicherplatz zurückgewonnen, damit der etcd und kube-api Service gestartet werden konnten. Allerdings verringerte sich der Speicherplatz und nach einiger Zeit war das Problem wieder da. Daraufhin habe ich dieselbe Prozedur durchgeführt und gewartet bis der Cluster wieder in einem healthy Status war.Anschliessend habe ich den etcd Status verifiziert und den Leader ermittelt:```bashetcdctl member list -w table+------------------+---------+----------------------------------+----------------------------+----------------------------+------------+| ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER |+------------------+---------+----------------------------------+----------------------------+----------------------------+------------+| 10a00138f3a1ed4f | started | 421dd5792ebae985affbca516bb385c7 | https://172.16.100.11:2380 | https://172.16.100.11:2379 | false || 7546e437eef94d66 | started | 421d85be9b7ab8b9dad06f0c6487d976 | https://172.16.100.12:2380 | https://172.16.100.12:2379 | false || dec23b7a3b3cc58a | started | 421d411b9b2dca2e5176b3ff2dd4b66f | https://172.16.100.13:2380 | https://172.16.100.13:2379 | false |+------------------+---------+----------------------------------+----------------------------+----------------------------+------------+# Check the endpoint status of all members and get the leader.etcdctl --endpoints=https://172.16.100.11:2379,https://172.16.100.12:2379,https://172.16.100.13:2379 -w table endpoint status+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+| https://172.16.100.11:2379 | 10a00138f3a1ed4f | 3.5.11 | 164 MB | false | false | 318 | 668808659 | 668808659 | || https://172.16.100.12:2379 | 7546e437eef94d66 | 3.5.11 | 164 MB | true | false | 318 | 668808659 | 668808659 | || https://172.16.100.13:2379 | dec23b7a3b3cc58a | 3.5.11 | 165 MB | false | false | 318 | 668808659 | 668808659 | |+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+# Check the endpoint health of all members.etcdctl --endpoints=https://172.16.100.11:2379,https://172.16.100.12:2379,https://172.16.100.13:2379 -w table endpoint health+----------------------------+--------+-------------+-------+| ENDPOINT | HEALTH | TOOK | ERROR |+----------------------------+--------+-------------+-------+| https://172.16.100.11:2379 | true | 15.673792ms | || https://172.16.100.11:2379 | true | 17.78887ms | || https://172.16.100.11:2379 | true | 15.571392ms | |+----------------------------+--------+-------------+-------+```Um das Problem nachhaltig zu lösen, habe ich anschliessend alle cpVM neu erstellen lassen, in dem ich die EAM Agency nacheinander entfernt habe.&gt; Das Entfernen der EAM Agency hat die Löschung der referenzierten Supervisor Control Plane VM zur Folge. Daher sollte diese Aktion in einer produktiven Umgebung nur unter Regie und auf ausdrücklicher Anweisung des VMware Supports durchgeführt werden.Dazu habe ich mir alle Infos von den cpVM zusammengetragen:| VM | Rolle | Management-IP | VIP | etcd Member || --- | --- | --- | --- | --- || vmware-vsc-apiserver-hv4ntr | SupervisorControlPlaneVM (1) | 172.16.100.11 | | 421dd5792ebae985affbca516bb385c7 || vmware-vsc-apiserver-dhpm69 | SupervisorControlPlaneVM (2) | 172.16.100.12 | 172.16.100.10 | 421d85be9b7ab8b9dad06f0c6487d976 (etcd Leader) || vmware-vsc-apiserver-dfll6t | SupervisorControlPlaneVM (3) | 172.16.100.13 | | 421d411b9b2dca2e5176b3ff2dd4b66f |Dazu habe ich eine cpVM nach der anderen gem. nachfolgender Prozedur entfernt:1. Remove first non-leader cpVM via vCenter UI &gt; Administration &gt; vCenter Server Extensions &gt; vSphere ESX Agent Manager &gt; Configure &gt; vmware-vcs-apiserver-hv4ntr &gt; Delete Agency2. Wait until new cpVM SupervisorControlPlaneVM (4) is provisioned and cluster is healthy state.3. Repeat with step 1 by removing second non-leader cpVM via vCenter UI &gt; Administration &gt; vCenter Server Extensions &gt; vSphere ESX Agent Manager &gt; Configure &gt; vmware-vcs-apiserver-dfll6t &gt; Delete Agency4. Wait until new cpVM SupervisorControlPlaneVM (5) is provisioned and cluster is healthy state.5. Repeat with step 1 by removing leader cpVM via vCenter UI &gt; Administration &gt; vCenter Server Extensions &gt; vSphere ESX Agent Manager &gt; Configure &gt; vmware-vcs-apiserver-dhpm69 &gt; Delete Agency6. Wait until new cpVM SupervisorControlPlaneVM (6) is provisioned and cluster is healthy state.Nach dem alle drei cpVM neu erstellt waren, hat sich auch deren Diskauslastung normalisiert und das Problem war gelöst. </body> </section> </sections> <status> <corpus>267</corpus> <alsoLike> <item> <ref>posts/how-to-authenticate-with-the-vsphere-supervisor-api</ref> <score>0.69</score> </item> <item> <ref>posts/vvf-9-0-supervisor-mit-foundation-load-balancer</ref> <score>0.69</score> </item> <item> <ref>services/virtualization-container</ref> <score>0.59</score> </item> </alsoLike> </status></manifest>
Lessons Learned · 2024-11-12

IaaS Control Plane – API inaccessible

In unserem Lab wurde vor kurzem der Supervisor Cluster unserer VMware IaaS Control Plane Plattform (ehem. vSphere with Tanzu) auf die Version vSphere 8.0 Update 3 aktualisiert.

2024-11-12Datum
Matthias GrasmückAutor
5Min. Lesezeit
Themen Container 2.39 Cloud 1.94
Hersteller VMware 0.88

In unserem Lab wurde vor kurzem der Supervisor Cluster unserer VMware IaaS Control Plane Plattform (ehem. vSphere with Tanzu) auf die Version vSphere 8.0 Update 3 aktualisiert. Dabei hat während dem Upgrade alles wie erwartet funktioniert und der Supervisor Cluster, wie auch die Kubernetes (Guest) Cluster waren funktionstüchtig.

Das Problem

Nach einiger Zeit war der kubectl Zugriff auf unsere Kubernetes Cluster nicht mehr möglich. Der Config Status des Supervisor Cluster meldete zudem folgende Fehlermeldung:

Initialized vSphere resources
Deployed Control Plane VMs
Configured Control Plane VMs
Configured Load Balancer fronting the kubernetes API Server
Configured Core Supervisor Services
Service: velero.vsphere.vmware.com. Status: Configuring
Service: tkg.vsphere.vmware.com. Reason: Reconciling. Message: Reconciling.

Sämtliche Services, welche auf den Kubernetes (Guest) Cluster betrieben wurden, waren weiterhin erreichbar. Auch waren die kube-api VIPs der Kubernetes Cluster weiterhin adressierbar.

Bei genauerer Betrachtung stellte ich fest, dass die Authentifizierung an unserem Supervisor Cluster nicht mehr funktionierte. Daraufhin wollte ich via kubectl auf den Supervisor Control Plane VMs (kurz: cpVM) prüfen, ob alle Services noch wie erwartet aktiv sind. Allerdings konnte ich mich nicht über die Supervisor VIP anmelden, woraufhin ich mich direkt über eine Management IP-Adresse einer der drei cpVMs via SSH einwählte.

Zum Erstaunen stellte ich fest, dass weder der kube-api noch der etcd Service aktiv waren:

 
crictl ps | grep -iE 'etcd|kube-api'

Da der kube-api Service nur läuft, wenn auch der etcd Service aktiv ist, habe ich die Logs des etcd Service verifiziert:

cat /var/log/pods/kube-system_etcd-4233ab1d5ddccf36bc5bba316d1972b0_654c066164da8fbdd6d33ad93af301dc/etcd/10364.log

stderr F {"level":"warn","ts":"2024-10-08T18:22:39.077642Z","caller":"wal/repair.go:81","msg":"failed to copy","from":"/var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal.broken","to":"/var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal","error":"write /var/lib/etcd/member/wal/0000000000000181-000000001c149b6d.wal.broken: no space left on device"}

Der Fehler […]no space left on device[…] lieferte dabei den ausschlaggebenden Punkt.

Daraufhin habe ich überprüft, ob genügend Speicherplatz auf der vDisk der cpVM vorhanden ist:

 
df -h | grep /dev/root
/dev/root 32G 32G 0 100% /

Somit konnte ich annehmen, dass eine mögliche Ursache für das Problem, dass die Services nicht starteten, auf den fehlenden Speicherplatz zurückzuführen ist. Ich habe den Speicherplatz auf allen drei cpVMs überprüft und auf allen war die Auslastung bei 100% oder 99%.

Die Lösung

Damit die Services wieder starten können, musste ich Speicherplatz zurückgewinnen. Eine einfache Suche nach den 10 grössten Files ergab folgendes:

 
find / -path /proc -prune -o -type f -exec du -Sh {} + | sort -rh | head -n 10
1.1G /var/log/vmware/upgrade-ctl-cli.log.1
884M /var/log/vmware/svchost/stderr.log
730M /var/log/vmware/upgrade-ctl-cli.log
385M /var/log/vmware/audit/kube-apiserver.log
307M /var/log/vmware/fluentbit/consolidated.log
250M /storage/container-registry/docker/registry/v2/blobs/sha256/a0/a0dd531132ecd058d0b0249cf2f32cecccdfbe8d13cfb93b75101aafcd2a50a6/data
248M /var/lib/containerd/io.containerd.content.v1.content/blobs/sha256/4364e490859d064c9434f9e480d74bc62402a0d812480201d644a4ea9d7ff6c3
248M /storage/container-registry/docker/registry/v2/blobs/sha256/43/4364e490859d064c9434f9e480d74bc62402a0d812480201d644a4ea9d7ff6c3/data
234M /var/lib/containerd/io.containerd.content.v1.content/blobs/sha256/fcb275778b51abf28182241bffffc6f9a25861f29ed844d71364f59e4485fb1e
234M /storage/container-registry/docker/registry/v2/blobs/sha256/fc/fcb275778b51abf28182241bffffc6f9a25861f29ed844d71364f59e4485fb1e/data

Danach habe ich die Log Files überschrieben:

 
echo > /var/log/vmware/upgrade-ctl-cli.log.1
echo > /var/log/vmware/svchost/stderr.log
echo > /var/log/vmware/upgrade-ctl-cli.log
echo > /var/log/vmware/audit/kube-apiserver.log
echo > /var/log/vmware/fluentbit/consolidated.log

Das Löschen der Log Files hat auf allen drei cpVMs genügend Speicherplatz zurückgewonnen, damit der etcd und kube-api Service gestartet werden konnten. Allerdings verringerte sich der Speicherplatz und nach einiger Zeit war das Problem wieder da. Daraufhin habe ich dieselbe Prozedur durchgeführt und gewartet bis der Cluster wieder in einem healthy Status war.

Anschliessend habe ich den etcd Status verifiziert und den Leader ermittelt:

etcdctl member list -w table
+------------------+---------+----------------------------------+----------------------------+----------------------------+------------+
| ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER |
+------------------+---------+----------------------------------+----------------------------+----------------------------+------------+
| 10a00138f3a1ed4f | started | 421dd5792ebae985affbca516bb385c7 | https://172.16.100.11:2380 | https://172.16.100.11:2379 | false |
| 7546e437eef94d66 | started | 421d85be9b7ab8b9dad06f0c6487d976 | https://172.16.100.12:2380 | https://172.16.100.12:2379 | false |
| dec23b7a3b3cc58a | started | 421d411b9b2dca2e5176b3ff2dd4b66f | https://172.16.100.13:2380 | https://172.16.100.13:2379 | false |
+------------------+---------+----------------------------------+----------------------------+----------------------------+------------+

# Check the endpoint status of all members and get the leader.
etcdctl --endpoints=https://172.16.100.11:2379,https://172.16.100.12:2379,https://172.16.100.13:2379 -w table endpoint status
+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| https://172.16.100.11:2379 | 10a00138f3a1ed4f | 3.5.11 | 164 MB | false | false | 318 | 668808659 | 668808659 | |
| https://172.16.100.12:2379 | 7546e437eef94d66 | 3.5.11 | 164 MB | true | false | 318 | 668808659 | 668808659 | |
| https://172.16.100.13:2379 | dec23b7a3b3cc58a | 3.5.11 | 165 MB | false | false | 318 | 668808659 | 668808659 | |
+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

# Check the endpoint health of all members.
etcdctl --endpoints=https://172.16.100.11:2379,https://172.16.100.12:2379,https://172.16.100.13:2379 -w table endpoint health
+----------------------------+--------+-------------+-------+
| ENDPOINT | HEALTH | TOOK | ERROR |
+----------------------------+--------+-------------+-------+
| https://172.16.100.11:2379 | true | 15.673792ms | |
| https://172.16.100.11:2379 | true | 17.78887ms | |
| https://172.16.100.11:2379 | true | 15.571392ms | |
+----------------------------+--------+-------------+-------+

Um das Problem nachhaltig zu lösen, habe ich anschliessend alle cpVM neu erstellen lassen, in dem ich die EAM Agency nacheinander entfernt habe.

Das Entfernen der EAM Agency hat die Löschung der referenzierten Supervisor Control Plane VM zur Folge. Daher sollte diese Aktion in einer produktiven Umgebung nur unter Regie und auf ausdrücklicher Anweisung des VMware Supports durchgeführt werden.

Dazu habe ich mir alle Infos von den cpVM zusammengetragen:

VMRolleManagement-IPVIPetcd Member
vmware-vsc-apiserver-hv4ntrSupervisorControlPlaneVM (1)172.16.100.11421dd5792ebae985affbca516bb385c7
vmware-vsc-apiserver-dhpm69SupervisorControlPlaneVM (2)172.16.100.12172.16.100.10421d85be9b7ab8b9dad06f0c6487d976 (etcd Leader)
vmware-vsc-apiserver-dfll6tSupervisorControlPlaneVM (3)172.16.100.13421d411b9b2dca2e5176b3ff2dd4b66f

Dazu habe ich eine cpVM nach der anderen gem. nachfolgender Prozedur entfernt:

  1. Remove first non-leader cpVM via vCenter UI > Administration > vCenter Server Extensions > vSphere ESX Agent Manager > Configure > vmware-vcs-apiserver-hv4ntr > Delete Agency
  2. Wait until new cpVM SupervisorControlPlaneVM (4) is provisioned and cluster is healthy state.
  3. Repeat with step 1 by removing second non-leader cpVM via vCenter UI > Administration > vCenter Server Extensions > vSphere ESX Agent Manager > Configure > vmware-vcs-apiserver-dfll6t > Delete Agency
  4. Wait until new cpVM SupervisorControlPlaneVM (5) is provisioned and cluster is healthy state.
  5. Repeat with step 1 by removing leader cpVM via vCenter UI > Administration > vCenter Server Extensions > vSphere ESX Agent Manager > Configure > vmware-vcs-apiserver-dhpm69 > Delete Agency
  6. Wait until new cpVM SupervisorControlPlaneVM (6) is provisioned and cluster is healthy state.

Nach dem alle drei cpVM neu erstellt waren, hat sich auch deren Diskauslastung normalisiert und das Problem war gelöst.

Passt ausserdem