SHOEISHA iD

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

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

イラストではじめるKubernetes

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

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

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

Deploymentを作成する

 Podを冗長化するためにDeploymentを作成してみましょう。

 以下を実行すると作成することができます。

cat << EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
EOF

 実行結果は以下のようになります

❯ cat << EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
EOF

deployment.apps/nginx-deployment created
❯

 Deploymentが作成できていることを確認しましょう。

❯ kubectl get deployment
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3/3     3            3           65s
❯

 Podが3つできていることも確認できます。

❯ kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-66b6c48dd5-426cn   1/1     Running   0          108s
nginx-deployment-66b6c48dd5-7tg5k   1/1     Running   0          108s
nginx-deployment-66b6c48dd5-b4c5p   1/1     Running   0          108s
❯

 試しに一つ消してみましょう。

$ kubectl delete pod <pod name>

 実行結果は以下の通りです。

❯ kubectl delete pod nginx-deployment-66b6c48dd5-426cn
pod "nginx-deployment-66b6c48dd5-426cn" deleted
❯ kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-66b6c48dd5-7tg5k   1/1     Running   0          3m3s
nginx-deployment-66b6c48dd5-b4c5p   1/1     Running   0          3m3s
nginx-deployment-66b6c48dd5-x9z9w   1/1     Running   0          8s
❯

 Podの起動が早すぎてkubectl get podした時には既にPodが3つできていますが、delete時に指定したPodnginx-deployment-66b6c48dd5-426cnは正しく消えていることがわかります。

Serviceを作成する

 せっかくNGINXを起動しているので、ブラウザからみられるようにしてみましょう。

1. 以下を実行してServiceを作成する

cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 80
EOF

2. ポート番号を確認する

 kubectl describe service my-serviceで「NodePort」を確認します。

 今回筆者が作成したServiceではNodePortは「31390」です。

❯ kubectl describe svc my-service                                                                                                                                                          [~]
Name:                     my-service
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=nginx
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.110.48.32
IPs:                      10.110.48.32
LoadBalancer Ingress:     localhost
Port:                     <unset>  8080/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  31390/TCP
Endpoints:                10.1.0.20:80,10.1.0.21:80,10.1.0.22:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>
❯

3. ブラウザでアクセスする

 2の手順で確認したポート番号を利用します。

 http://localhost:<2の手順で確認したポート番号>にアクセスしてください。

 Welcome to nginx!というメッセージをみることができれば成功です。

環境のクリーンアップ

 Kubernetesはかなりメモリを使用しますので、作成したリソースを消すだけではなくクラスタごと消せるのであれば消してしまいましょう。

 例えばkindであればkind delete clusterでクラスタを消すことができます。

 Kubernetesクラスタを触ってみる回はこれで終わりになります。kubectl cheat sheetにはkubectlを使ってできることが色々書かれているので、参考に遊んでみてください。

次のページ
ぷちコラム:YAMLエンジニアと長くなるYAMLの戦い

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング