通过学习《Kubernetes 实践入门》一书中的通信章节(初学者的Kubernetes入门)进行模仿练习,这是第二部分
背景情况
在我个人看来,我希望能够创建并部署能够运行未来应用程序的环境,以获得比基础设施知识更多的知识。我想要学习未来的知识,并进一步提升自己的知识更新。
在其中遇到这本书,并渐渐地记录下所做的事情,希望将来能够作为给未来的自己的一封信,并重新审视。
引用和参考以及介绍我这次学习所使用的书籍。
关于实际学习的内容
我打算一边阅读书籍,一边逐章逐章地慢慢学习。我还想借助GitHub上的源代码来学习。对于这一章的学习,可能主要是通过抄写书籍来进行的。
硬著頭皮開始
请使用以下链接获取 Kubernetes 实践指南的示例: https://github.com/kubernetes-practical-guide/examples/tree/master/ch3.5.2/manifests/mattermost
使用标签选择器来指定请求发送到的 Pod
$ kubectl create clusterip mattermost-db --tcp 3306 -o yaml --dry-run > 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
确认服务和终端点
$ 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实践入门》的写经中学习)体验篇第二部分
初学者的Kubernetes入门(从书籍《Kubernetes实践入门》的写经中学习)体验篇第三部分(Label操作)
初学者的Kubernetes入门(从书籍《Kubernetes实践入门》的写经中学习)体验篇第三部分(OwnerReference操作)
初学者的Kubernetes入门(从书籍《Kubernetes实践入门》的写经中学习)Manifest篇
初学者的Kubernetes入门(从书籍《Kubernetes实践入门》的写经中学习)Manifest(ConfigMap)篇
初学者的Kubernetes入门(从书籍《Kubernetes实践入门》的写经中学习)通信篇