openSUSE Leap 16

Kubernetes : Pod デプロイ2025/11/07

 

Pod 作成等の基本操作です。

当例では以下のように 4 台のノードを使用してクラスターを構成しています。

+----------------------+   +----------------------+
|  [ ctrl.srv.world ]  |   |   [ dlp.srv.world ]  |
|     Manager Node     |   |     Control Plane    |
+-----------+----------+   +-----------+----------+
        eth0|10.0.0.25             eth0|10.0.0.30
            |                          |
------------+--------------------------+-----------
            |                          |
        eth0|10.0.0.51             eth0|10.0.0.52
+-----------+----------+   +-----------+----------+
| [ node01.srv.world ] |   | [ node02.srv.world ] |
|     Worker Node#1    |   |     Worker Node#2    |
+----------------------+   +----------------------+

 

Manager ノード または クラスター管理ユーザーを設定したクライアントホストで実行します。

[1] Pod の作成/削除等の操作です。
# [test-nginx] pod を起動する

suse@ctrl:~>
kubectl create deployment test-nginx --image=nginx

deployment.apps/test-nginx created
suse@ctrl:~>
kubectl get pods

NAME                          READY   STATUS    RESTARTS   AGE
test-nginx-5bdcdd6c7c-g887b   1/1     Running   0          7s

# [test-nginx] pod の環境変数を表示する

suse@ctrl:~>
kubectl exec test-nginx-5bdcdd6c7c-g887b -- env

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=test-nginx-5bdcdd6c7c-g887b
NGINX_VERSION=1.29.3
NJS_VERSION=0.9.4
NJS_RELEASE=1~trixie
PKG_RELEASE=1~trixie
DYNPKG_RELEASE=1~trixie
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT=443
HOME=/root

# [test-nginx] pod にシェルアクセス

suse@ctrl:~>
kubectl exec -it test-nginx-5bdcdd6c7c-g887b -- bash

root@test-nginx-5bdcdd6c7c-g887b:/#
exit

exit
# [test-nginx] pod のログを表示する

suse@ctrl:~>
kubectl logs test-nginx-5bdcdd6c7c-g887b

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2025/11/07 00:18:37 [notice] 1#1: using the "epoll" event method
2025/11/07 00:18:37 [notice] 1#1: nginx/1.29.3
2025/11/07 00:18:37 [notice] 1#1: built by gcc 14.2.0 (Debian 14.2.0-19)
2025/11/07 00:18:37 [notice] 1#1: OS: Linux 6.12.0-160000.5-default
2025/11/07 00:18:37 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2025/11/07 00:18:37 [notice] 1#1: start worker processes
2025/11/07 00:18:37 [notice] 1#1: start worker process 29
.....
.....

# pod をスケールアウトする

suse@ctrl:~>
kubectl scale deployment test-nginx --replicas=3

deployment.extensions/test-nginx scaled
suse@ctrl:~>
kubectl get pods -o wide

NAME                          READY   STATUS    RESTARTS   AGE     IP                NODE               NOMINATED NODE   READINESS GATES
test-nginx-5bdcdd6c7c-29ljq   1/1     Running   0          12s     192.168.40.194    node01.srv.world   <none>           <none>
test-nginx-5bdcdd6c7c-fhzlc   1/1     Running   0          12s     192.168.241.131   node02.srv.world   <none>           <none>
test-nginx-5bdcdd6c7c-g887b   1/1     Running   0          2m10s   192.168.241.130   node02.srv.world   <none>           <none>

# サービスを設定する

suse@ctrl:~>
kubectl expose deployment test-nginx --type="NodePort" --port 80

service "test-nginx" exposed
suse@ctrl:~>
kubectl get services test-nginx

NAME         TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
test-nginx   NodePort   10.101.205.248   <none>        80:32510/TCP   5s

# ポートフォワードしてアクセス確認

suse@ctrl:~>
kubectl port-forward service/test-nginx --address 127.0.0.1 8082:80 &

[1] 2736
suse@ctrl:~>
curl localhost:8082

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
.....
.....
<p><em>Thank you for using nginx.</em></p>
</body>
</html>

# サービスを削除する

suse@ctrl:~>
kubectl delete services test-nginx

service "test-nginx" deleted
# Pod を削除する

suse@ctrl:~>
kubectl delete deployment test-nginx

deployment.extensions "test-nginx" deleted
関連コンテンツ