Lab 01 – Příprava pracovní stanice

Lab 01 – Příprava pracovní stanice

Cíl: udělat ze support01 vaši kubectl stanici. Tahák: kubectl

support01 má Docker i NFS exporty, ale záměrně žádné kubectl a žádný kubeconfig. Postavit si vlastního klienta je první věc, kterou u zákazníka uděláte, tak si to zkusíme rovnou tady.

# 1 – přihlaste se na jump host (ze svého PC)
ssh student@192.168.56.101          # heslo: linux

# 2 – kdo jsem a dosáhnu na uzly clusteru?
hostname -f
ip -brief address                    # poznamenejte si adresu z 192.168.128.0/24
for n in control01 worker01 worker02 worker03; do getent hosts $n; done

Pokud se nějaké jméno nepřeloží, poznamenejte si jeho IP – budete ji potřebovat v kroku 6.

# 3 – ověřte, že klient zatím není
kubectl version                      # command not found
ls ~/.kube 2>&1                      # adresář neexistuje

Instalace kubectl

Klient by měl odpovídat minor verzi clusteru (1.35). Rozdíl jedné minor verze na obě strany je podporovaný; víc už znamená podivné chyby.

# 4 – repozitář
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.35/deb/Release.key \
  | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.35/deb/ /' \
  | sudo tee /etc/apt/sources.list.d/kubernetes.list

# 5 – instalace a kontrola
sudo apt-get update
sudo apt-get install -y kubectl
kubectl version --client

Získání kubeconfigu

kubectl najde cluster přes ~/.kube/config: adresu API serveru, CA certifikát a váš klientský certifikát. Na kubeadm clusteru je administrátorská verze /etc/kubernetes/admin.conf na control plane a je čitelná jen pro roota.

# 6 – na control01: udělejte čitelnou kopii
ssh student@control01
sudo cp /etc/kubernetes/admin.conf /home/student/kubeconfig
sudo chown student:student /home/student/kubeconfig
exit

# 7 – zpět na support01: uložte ji tam, kde ji kubectl hledá
mkdir -p ~/.kube
scp student@control01:kubeconfig ~/.kube/config
chmod 600 ~/.kube/config

# 8 – ukliďte kopii na control01
ssh student@control01 'rm -f /home/student/kubeconfig'

Ověření

# 9 – všechny tři musí fungovat
kubectl cluster-info
kubectl get nodes -o wide            # control01 + worker01..03, všechny Ready
kubectl get pods -A                  # pody control plane v kube-system

Přečtěte si výpis uzlů: sloupec VERSION je verze kubeletu (1.35.2) a control01 má roli control-plane. kubectl get pods -A ukazuje, co cluster provozuje sám pro sebe – API server, etcd, CoreDNS, agenta CNI.

Ať se vám pracuje líp

# 10 – doplňování a krátký alias, natrvalo
echo 'source <(kubectl completion bash)' >> ~/.bashrc
echo 'alias k=kubectl'                >> ~/.bashrc
echo 'complete -o default -F __start_kubectl k' >> ~/.bashrc
source ~/.bashrc
k get no

Doplňování tabulátorem není luxus – doplňuje jména objektů z živého clusteru, takže slouží i jako nástroj na objevování.

Tip

~/.kube/config jsou administrátorské údaje k celému clusteru. chmod 600 není ozdoba.