kubernetes-the-hard-way/docs/02-kubelet.md

4.7 KiB
Raw Blame History

Static pods

image

як бачимо контейнери запускаються все працює прийшла пора розбиратись із kubectl

для початку його потрібно завантажити

wget -q --show-progress --https-only --timestamping \
  https://storage.googleapis.com/kubernetes-release/release/v1.21.0/bin/linux/amd64/kubelet
{
  chmod +x kubelet 
  sudo mv kubelet /usr/local/bin/
}
cat <<EOF | sudo tee /etc/systemd/system/kubelet.service
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/home/
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/kubelet \\
  --container-runtime=remote \\
  --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock \\
  --image-pull-progress-deadline=2m \\
  --file-check-frequency=10s \\
  --pod-manifest-path='/etc/kubernetes/manifests/' \\
  --v=10
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF
{
  sudo systemctl daemon-reload
  sudo systemctl enable kubelet
  sudo systemctl start kubelet
}
sudo systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
     Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2023-04-15 22:01:06 UTC; 2s ago
       Docs: https://kubernetes.io/docs/home/
   Main PID: 16701 (kubelet)
      Tasks: 7 (limit: 2275)
     Memory: 14.8M
     CGroup: /system.slice/kubelet.service
             └─16701 /usr/local/bin/kubelet --container-runtime=remote --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock --image-pull-progress-deadline=2m --v=2
...

run static pod

знач нам потрбіно створити директорію для маніфестів

mkdir /etc/kubernetes
mkdir /etc/kubernetes/manifests
cat <<EOF> /etc/kubernetes/manifests/static-pod.yml
apiVersion: v1
kind: Pod
metadata:
  name: static-pod
  labels:
    app: static-pod
spec:
  hostNetwork: true
  containers:
  - name: busybox
    image: busybox
    command: ["sh", "-c", "while true; do echo 'Hello from static pod'; sleep 5; done"]
EOF

а тепепр поки він його знайде і запустить, ми встановимо crictl

wget -q --show-progress --https-only --timestamping \
  https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.21.0/crictl-v1.21.0-linux-amd64.tar.gz
{
  tar -xvf crictl-v1.21.0-linux-amd64.tar.gz
  chmod +x crictl 
  sudo mv crictl /usr/local/bin/
}

трохи відконфігуруємо

cat <<EOF> /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF

ну і тепер поки все встановлювалось то наш под мав піднятись спробуємо подивитись

crictl pods

тут є жжназва сервера

POD ID              CREATED             STATE               NAME                                    NAMESPACE           ATTEMPT             RUNTIME
884c50605b546       9 minutes ago       Ready               static-pod-example-server   default             0                   (default)

і контейнери

crictl ps
CONTAINER           IMAGE               CREATED             STATE               NAME                ATTEMPT             POD ID
4cc95ba71e9d6       7cfbbec8963d8       10 minutes ago      Running             busybox             0                   884c50605b546

ну і також можна глянути логи

crictl logs $(crictl ps -q)
Hello from static hostNetwork pod
Hello from static hostNetwork pod
Hello from static hostNetwork pod
Hello from static hostNetwork pod
Hello from static hostNetwork pod
Hello from static hostNetwork pod
Hello from static hostNetwork pod
Hello from static hostNetwork pod
Hello from static hostNetwork pod
Hello from static hostNetwork pod

такс, ну на цьому нам потрібно почитити все після себе

rm /etc/kubernetes/manifests/static-pod.yml

тепер має видалитись контейнер, але потрібно трохи почекати

crictl ps

тут пусто

crictl pods

і тут з часом також має стати пусто

ну всьо, на цьому на сьогодні все поки далі будемо розбиратись із іншими компонентами кудетнетесу