背景
個人的にインフラの知識以上にこれからのアプリケーションが動く環境を作ってデプロイしたりしてこれからの知識を身に着けたい。そしてより一層、自分の知識のアップデートをしたいと思いました。
その中でこの本に出会い、これから少しずつやったことを残し、未来の自分への手紙としてもあり、見つめ直せればと思いました。
引用や参考と今回の自分の勉強用の書籍の紹介
技術評論社『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 を指定できることがわかったので前回の話としてポータビリティがバチッとハマった感じで良かったです。
今までの投稿
- 初心者の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 実践入門の写経から学ぶ)通信編