初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)通信編 パート2


背景

個人的にインフラの知識以上にこれからのアプリケーションが動く環境を作ってデプロイしたりしてこれからの知識を身に着けたい。そしてより一層、自分の知識のアップデートをしたいと思いました。

その中でこの本に出会い、これから少しずつやったことを残し、未来の自分への手紙としてもあり、見つめ直せればと思いました。

引用や参考と今回の自分の勉強用の書籍の紹介

技術評論社『Kubernetes実践入門』のサンプルコード
Kubernetes実践入門 プロダクションレディなコンテナ&アプリケーションの作り方

実際の学びについて

書籍を読みながら、章ごとに少しずつ進めていきたいと思います。
GitHub のソースコードも使いながら学んで行きたいと思います。
この章の勉強は本当に書籍の写経が主になるかもしれません・・・

勉強開始

https://github.com/kubernetes-practical-guide/examples/tree/master/ch3.5.2/manifests/mattermost

Label セレクタによるリクエスト送信先の Pod の指定

$ kubectl create clusterip mattermost-db --tcp 3306 -o yaml --dry-run > db-service.yaml
db-service.yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: mattermost-db
  name: mattermost-db
spec:
  ports:
  - name: "3306"
    port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    run: db
  type: ClusterIP
status:
  loadBalancer: {}
マニュフェストを適用する
$ kubectl apply -f db-service.yaml
service/mattermost-db created

Service と ENDPOINTS を確認

$ kubectl get svc,ep mattermost-db
NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/mattermost-db   ClusterIP   10.104.31.215   <none>        3306/TCP   57s

NAME                      ENDPOINTS         AGE
endpoints/mattermost-db   10.1.0.207:3306   57s

名前解決を確認する

$ kubectl run -i --rm test2 --image=k8spracticalguide/busybox:1.28 --restart=Never -- nslookup mattermost-db
If you don't see a command prompt, try pressing enter.
Error attaching, falling back to logs:
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      mattermost-db
Address 1: 10.104.31.215 mattermost-db.default.svc.cluster.local
pod "test2" deleted

名前解決できているので mattermost-deploy.yaml の DB_HOST を修正する

        - name: DB_HOST
          value: mattermost-db # "" -> mattermost-db に修正

マニュフェストを更新する

$ kubectl apply -f mattermost-deploy.yaml
deployment.apps/mattermost configured

Pod の再作成後のログを確認する


$ kubectl logs $(kubectl get po | grep mattermost | awk '{print $1}')
{"level":"info","ts":1587727632.3340807,"caller":"app/app.go:181","msg":"Server is initializing..."}
{"level":"info","ts":1587727632.3456247,"caller":"sqlstore/supplier.go:198","msg":"Pinging SQL master database"}

$ kubectl get po
NAME                          READY   STATUS    RESTARTS   AGE
db-58c88dc547-d4qb5           1/1     Running   0          24m
mattermost-797c548f48-8rxwn   1/1     Running   0          9m9s

次は 3.5.3 章をやっていきます。

写経しながら外部アプリケーションとの接続を学びます。

最後に

今回は名前で Pod を指定できることがわかったので前回の話としてポータビリティがバチッとハマった感じで良かったです。

今までの投稿

  1. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Pod編
  2. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)NameSpace 編
  3. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Label 編
  4. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)ReplicaSet 編
  5. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Deployment 編
  6. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Service 編
  7. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)ConfigMap 編
  8. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Secret 編
  9. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)操作編
  10. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編
  11. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編パート2
  12. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編パート3(Label操作)
  13. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編パート3(OwnerReference 操作)
  14. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト編
  15. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト(ConfigMap)編
  16. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)通信編