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


背景

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

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

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

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

実際の学びについて

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

勉強開始

  • ClusterIP を使わない Headless Service を学びます
    1. 外部アプリケーションに接続する Service
    2. Service 名から各 Pod の IP アドレスを直接名前解決する Service

\2. は StatefulSet で学べるっぽい

$ cat <<EOF | kubectl create -f -
apiVersion: v1
kind: Service
metadata:
  name: headless-test
spec:
  clusterIP: None
  ports:
  - name: http
    port: 8086
    protocol: TCP
    targetPort: 8086
  selector:
    app: mattermost
EOF
service/headless-test created
$ kubectl run -i --rm test4 --image=k8spracticalguide/busybox:1.28 --restart=Never -- nslookup headless-test
If you don't see a command prompt, try pressing enter.
Error attaching, falling back to logs:
nslookup: can't resolve 'headless-test'
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

pod "test4" deleted

なんかうまく行かない・・・・

$ kubectl get po --show-labels mattermost-797c548f48-8rxwn
NAME                          READY   STATUS    RESTARTS   AGE   LABELS
mattermost-797c548f48-8rxwn   1/1     Running   0          17h   pod-template-hash=797c548f48,run=mattermost
headless-test.yamlを修正
$ kubectl edit service headless-test
〜省略〜
  selector:
-    app: mattermost
+    run: mattermost # label を run に変更

もう一度名前解決できるか確認

名前解決できた

$ kubectl run -i --rm test4 --image=k8spracticalguide/busybox:1.28 --restart=Never -- nslookup headless-test
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      headless-test
Address 1: 10.1.0.212 10-1-0-212.headless-test.default.svc.cluster.local
pod "test4" deleted

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

写経しながら「アプリケーションを外部に公開する」を学んでいきます

最後に

Kubernetes はやっぱり Label が重要だということを改めて実感しました
書籍でも Label で紐付けているとは記載されていますが、やってみて実感してアーキテクチャを感じることができました。

やっぱり、手を動かし、それが、自然と身につき、初めて、コマンドラインで機械と会話ができるって実感しました

今までの投稿

  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 実践入門の写経から学ぶ)通信編
  17. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)通信編 パート2
  18. 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)通信編 パート3