SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

イラストではじめるKubernetes

イラストではじめる「Kubernetesの動かしかた」~Kubernetesクラスタを用意し、Podを作ってコンテナを起動しよう

  • X ポスト
  • このエントリーをはてなブックマークに追加

kubectlを利用してクラスタにアクセスする(1)

 ここからは作成したKubernetes環境にアクセスして、コンテナを起動したり色々触ってみたりします。

 筆者の動作環境は以下の通りです。基本的にどの方法でも同じような操作はできると思いますが、「port-forwardでNginxのページにアクセスする」「Serviceを作成してNginxのページにアクセスする」はクラスタのネットワーク環境によって必要な操作が変わってくる可能性があります。

  • OS:mac OS Montrey(12.1)
  • Kubernetes バージョン:v1.21.5
  • Kubernetesクラスタ構築環境:Docker Desktop

全てのPodを参照してみる

 まずは全てのPodを参照してみましょう。

$ kubectl get pod -A

 実行すると以下の結果が返ってくると思います(以下はDocker Desktopでクラスタを構築した場合の実行結果です)。

❯ kubectl get pod -A
NAMESPACE     NAME                                     READY   STATUS    RESTARTS   AGE
kube-system   coredns-558bd4d5db-jjpx4                 0/1     Running   1          17h
kube-system   coredns-558bd4d5db-r5plp                 0/1     Running   1          17h
kube-system   etcd-docker-desktop                      1/1     Running   1          17h
kube-system   kube-apiserver-docker-desktop            1/1     Running   1          17h
kube-system   kube-controller-manager-docker-desktop   1/1     Running   1          17h
kube-system   kube-proxy-pwphr                         1/1     Running   1          17h
kube-system   kube-scheduler-docker-desktop            1/1     Running   1          17h
kube-system   storage-provisioner                      1/1     Running   1          17h
kube-system   vpnkit-controller                        1/1     Running   8          17h
❯

 「まだ何も作っていないのになぜ?」と思われるかもしれません。連載の第2回に書いたコンポーネントの名前がついていることから分かる通り、kube-system namespaceにKubernetesクラスタを動かすためのPodが作成されています。

Podを作成する:その1

kubectl run nginx --image=nginx -n mynamespace 

 実はこの1行だけでPodを作成し、コンテナを起動できます。この方法はデバッグ用Pod※のように暫定的な利用用途であれば良いですが、本番環境の運用においてPodを直接作成することはオススメしません。

※補足

 コンテナには障害調査などに必要なツールが入っていないことが多いため、ツールを入れたデバッグ用Podを立ち上げて調査することが多いです。ただしKubernetes v1.22からはエフェメラルコンテナというデバッグ用コンテナを起動する機能がbeta版(Kubernetesでは機能をalpha/beta/GAの三段階にわけており、beta版になると安全な機能であることが保証されます。詳しくはこちら)に昇格したため、今後デバッグ用Podが必要なケースは減っていくことでしょう。

Podを作成する:その2

 ではマニフェストを利用してPodを作成してNGINXのコンテナを起動してみましょう。

1. manifestを作成する

 第2回で説明した通り、以下の通りPodを作成するためのマニフェストを作成します。

cat << EOF > pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80
EOF

2. Podを作成する

 以下のコマンドでKubernetes APIサーバに先ほど作成したマニフェストを送りましょう。

$ kubectl apply -f pod.yaml

 以下の実行結果が返ってくると思います。

❯ kubectl apply -f pod.yaml
pod/nginx unchanged
❯

3. 指定したPodが作成できていることを確認する

 Runningになっていれば成功です。

❯ kubectl get po
NAME                            READY   STATUS    RESTARTS   AGE
nginx                           1/1     Running   0          10s
❯

Podを削除する

 ではPodを削除してみましょう。

$ kubectl delete -f pod.yaml

 以下を実行して消すこともできます。

$ kubectl delete pod nginx

 結果は以下のようになるはずです。

❯ kubectl delete -f pod.yaml
pod "nginx" deleted
❯

 綺麗に消えていることも確認できます。

❯ kubectl get po
No resources found in default namespace.
❯

 ここではじめて「default namespace」とNamespaceの話が出てきましたが、実は今までkubectlでNamespaceを指定しなかったため自動的にdefault namespaceにリソースが作成されていました。

 Namespaceを指定してリソースを作成する場合、kubectl -n <namespace>を利用するか、マニフェスト内にNamespaceを指定します。

 特にリソースを削除する際にはNamespace指定に気をつけましょう。筆者はマニフェスト内にNamespace指定があることに気づかず間違えて試験環境を破壊してしまったことがあります。

 ではここから実際にアプリケーションをブラウザで表示するところまで動かしていきましょう。

次のページ
kubectlを利用してクラスタにアクセスする(2)

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
イラストではじめるKubernetes連載記事一覧

もっと読む

この記事の著者

あおい(アオイ)

 大手メーカーにてソフトウェアエンジニアエンジニアを経て2019年7月サイボウズ株式会社にSREとして入社。 現行インフラ基盤上のアプリケーションを新インフラ基盤(Kubernetes)に移行するプロジェクトが主な仕事です。著書は、「まんがではじめるKubernetes」など。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15828 2022/05/10 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング