Exec ca utilizator root în Kubernetes
- mai puțin de 1 minute de citit
- 5 exemple de cod
Disponibil și în English
Pe această pagină
Salut 👋,
În acest tutorial scurt îți arăt o metodă de a obține un shell root în containerele care rulează într-un cluster Kubernetes modern.
Cerințe preliminare:
- Acces root la nodul clusterului pe care rulează containerul.
Descrierea problemei
Vrem acces root într-un container care rulează, dar exec ne dă un utilizator non-root.
➜ Downloads k get podsNAME READY STATUS RESTARTS AGEmy-release-cassandra-0 1/1 Running 0 2m9s➜ Downloads k exec -it pod/my-release-cassandra-0 -- /bin/bashI have no name!@my-release-cassandra-0:/$ whoamiwhoami: cannot find name for user ID 1001I have no name!@my-release-cassandra-0:/$ touch testtouch: cannot touch 'test': Permission deniedI have no name!@my-release-cassandra-0:/$ Soluția
Pentru a obține acces root, mai întâi află ID-ul containerului din interiorul pod-ului.
k describe pod my-release-cassandra-0Containers: cassandra: Container ID: containerd://8fa7af3900d556aa8a91b1ac4cbe46335e8df233f8645b0a2329b2f0e6d76177 Image: docker.io/bitnami/cassandra:4.0.7-debian-11-r0Apoi, dacă ID-ul începe cu containerd://, rulează următoarea comandă pe nodul pe care rulează pod-ul:
sudo runc --root /run/containerd/runc/k8s.io/ exec -t -u 0 8fa7af3900d556aa8a91b1ac4cbe46335e8df233f8645b0a2329b2f0e6d76177 /bin/bashAr trebui să obții un shell root în containerul Cassandra:
root@my-release-cassandra-0:/# whoamirootroot@my-release-cassandra-0:/# touch testroot@my-release-cassandra-0:/# lsbin boot docker-entrypoint-initdb.d etc lib media opt root run.sh srv test usrbitnami dev entrypoint.sh home lib64 mnt proc run sbin sys tmp varMulțumesc că ai citit și succes în explorarea cloud-ului! 🏄