背景
個人的にインフラの知識以上にこれからのアプリケーションが動く環境を作ってデプロイしたりしてこれからの知識を身に着けたい。そしてより一層、自分の知識のアップデートをしたいと思いました。
その中でこの本に出会い、これから少しずつやったことを残し、未来の自分への手紙としてもあり、見つめ直せればと思いました。
引用や参考と今回の自分の勉強用の書籍の紹介
技術評論社『Kubernetes実践入門』のサンプルコード
Kubernetes実践入門 プロダクションレディなコンテナ&アプリケーションの作り方
実際の学びについて
書籍を読みながら、章ごとに少しずつ進めていきたいと思います。
GitHub のソースコードも使いながら学んで行きたいと思います。
この章の勉強は本当に書籍の写経が主になるかもしれません・・・
勉強開始
- ExternalName を使って外部アプリケーションの名前を解決できることを確認します
書籍では -o wide
を使用して確認しているので違いを比較できるように一旦確認
-
SELECTOR
が表示されるかを確認します
前の章でも
Label
が重要なことが説明されていました
$ 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 16h
NAME ENDPOINTS AGE
endpoints/mattermost-db 10.1.0.207:3306 16h
$ kubectl get svc,ep mattermost-db -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/mattermost-db ClusterIP 10.104.31.215 <none> 3306/TCP 16h run=db
NAME ENDPOINTS AGE
endpoints/mattermost-db 10.1.0.207:3306 16h
Service を作成する
- ClusterIP が作成されてないことを確認
- Type が ExternalName になっていることを確認できます
$ kubectl create svc externalname ext-mattermost-db --external-name example.com
service/ext-mattermost-db created
$ kubectl get svc,ep ext-mattermost-db -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/ext-mattermost-db ExternalName <none> example.com <none> 35s app=ext-mattermost-db
NAME ENDPOINTS AGE
endpoints/ext-mattermost-db <none> 35s
作成した ext-mattermost-db / example.com の名前解決をしてみる
$ kubectl run -it --rm test3 --image=k8spracticalguide/busybox:1.28 --restart=Never -- /bin/sh
If you don't see a command prompt, try pressing enter.
/ # nslookup ext-mattermost-db
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: ext-mattermost-db
Address 1: 2606:2800:220:1:248:1893:25c8:1946
Address 2: 93.184.216.34 # ext-mattermost-dbを名前解決した結果
/ # nslookup example.com
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: example.com
Address 1: 2606:2800:220:1:248:1893:25c8:1946
Address 2: 93.184.216.34 # example.comを名前解決した結果
次は 3.5.4 章をやっていきます。
ClusterIP を使わない Headless Service を学んで行きます
最後に
個人的には、下記のようなコマンドで確認ができるよ!と書籍で記載してもらっているのが非常に助かりました。
何度も、コマンドラインで確認するために下記のようなコマンドが出現すると自然とこういう確認ができるよね!
って思える様になります
kubectl run -it --rm test3 --image=k8spracticalguide/busybox:1.28 --restart=Never -- /bin/sh
今回も、前回同様ポータビリティという言葉がぴったりハマりました。(ハマり はGood な意味です)
書籍の中で下記の言葉がすっごく印象的でした。引用させていただきます。
このように、クラスタ外部のアプリケーションであっても、ExternalName を使用することで内部のアプリケーションと同じように Service 名でアクセスできます。もし将来的に、本番環境のデータベースも Kubernetes クラスタ上にデプロイすることになったとしても、Service 名を変えずに Service の種類だけを変更できるので、データベースを使用するアプリケーションに変更が及びません。
今までの投稿
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Pod編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)NameSpace 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Label 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)ReplicaSet 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Deployment 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Service 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)ConfigMap 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Secret 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)操作編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編パート2
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編パート3(Label操作)
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編パート3(OwnerReference 操作)
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト(ConfigMap)編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)通信編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)通信編 パート2