【k8s】Kubernetes ~ 基本編 / Pod ~

■ はじめに

Kubernetes の Pod(ポッド)についてまとめる。

目次

【1】Pod
【2】Pod作成方法
 1)YAML を使ってPod作成
 2)kubectl run を使ってPod作成
【3】Pod確認方法
 1)kubectl get pod
 2)kubectl get pod <PodName>
【4】Pod削除方法
 1)YAML で作ったPodの削除
 2)kubectl run で作ったPodの削除

【1】Pod

* 1つ以上のコンテナから構成された最小単位

【2】Pod作成方法

1)YAML を使ってPod作成

[1] YAMLファイルを作る

# demo_pod.yml

# [1] どのKubenetics APIバージョンを用いるか
apiVersion: v1

# [2] どの Kubenetics オブジェクトを指定するか(e.g. Pod/Development)
# Pod指定
kind: Pod

# [3] Kubenetics オブジェクトを一意に特定するための情報を付与
# e.g. name/UID/namespace
metadata:
  # ★ここが、名前になる
  name: demo-nginx

# [4] 理想状態(desired state)を指定
spec:
  containers:
    - image: nginx
      name: nginx

[2] kubectl createコマンドで起動する

# kubectl create -f <[1]で作ったYAML>
$ kubectl create -f demo_pod.yml
pod/demo-nginx created

# 作成したPodを確認する
$ kubectl get pod
NAME                     READY   STATUS    RESTARTS       AGE
demo-nginx               1/1     Running   0              22s

# クラスター内で利用できるすべてのリソースの完全なリストを表示
#  =>「apiVersion: v1」が確認できる
$ kubectl api-resources | grep pod
pods                              po           v1                                     true         Pod
...

2)kubectl run を使ってPod作成

# Helpに載っている
$ kubectl run -h
Create and run a particular image in a pod.

Examples:
  # Start a nginx pod
  kubectl run nginx --image=nginx
...

# ★実行してみる
# kubectl run <PodName> --image=nginx
$ kubectl run nginx-by-command --image=nginx
pod/nginx-by-command created

# 確認
$  kubectl get pod
NAME                     READY   STATUS    RESTARTS      AGE
demo-nginx               1/1     Running   1 (38m ago)   12h
nginx-by-command         1/1     Running   0             15s

【3】Pod確認方法

1)kubectl get pod

# Pod一覧表示
$ kubectl get pod

2)kubectl get pod

# kubectl get pod <PodName>
$  kubectl get pod demo-nginx
NAME         READY   STATUS    RESTARTS      AGE
demo-nginx   1/1     Running   1 (53m ago)   12h

# Spec情報表示(YAMLファイルの「spec:」を参照)
$ kubectl get pod demo-nginx -o jsonpath='{.spec}' | jq > output.json
$ less output.json
{
  "containers": [
    {
      "image": "nginx",
      "imagePullPolicy": "Always",
      "name": "nginx",
      "resources": {},
...

補足:-o の別利用法

# kubectl get pod <PodName> -o yamlで、設定をそのまま出力できる
$ kubectl get pod demo-nginx -o yaml > output.yaml

【4】Pod削除方法

1)YAML で作ったPodの削除

# kubectl delete -f <YAML>
kubectl delete -f demo_pod.yml

2)kubectl run で作ったPodの削除

# kubectl delete pod <PodName>
$ kubectl delete pod nginx-by-command

関連記事

KubernetesLinux / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2024/01/02/005053
KubernetesWindows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/05/01/000000
Kubernetes ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/27/224624
Kubernetes ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/05/04/013529
KubernetesKubernetes Dashboard
https://dk521123.hatenablog.com/entry/2023/05/27/144144
Kubernetes ~ 基本編 / minikube ~
https://dk521123.hatenablog.com/entry/2023/05/07/214515
Kubernetes ~ 基本編 / kubectlコマンド ~
https://dk521123.hatenablog.com/entry/2022/01/12/110555