『中級篇』k8s的Service簡介和演示(67)
阿新 • • 發佈:2018-10-07
emp containe get title 就是 mas it人 ngios label
>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>原文鏈接地址:『中級篇』k8s的Service簡介和演示(67)
我們在使用pod的時候,pod之前可以相互ping通的,機器本身也可以ping通pod和另外機器的pod,如果是一個serivce的話,我們通過端口號,就可以訪問service。源碼:https://github.com/limingios/docker/tree/master/No.10
不要直接使用和管理Pods,為什麽?
- 當我們使用ReplicaSet 或者ReplicationController做水平擴展scale的時候,Pods可能被結束。
- 當我們使用Deployment的時候,我們去更新Docker Image Version,舊的Pods會被結束,然後新的Pods創建,Ip地址發生了變化。
Service
- kubectl expoese命令,會給我們的pod創建一個Service,供外部訪問。
- Service 主要有三種類型:
- ClsterIP
- NodePort
- LoadBalancer
- 另外也可以使用DNS,但是需要DNS的add-on
Service的演示
- 創建service。
get pod
kubectl get pod -o wide
kubectl expose pods nginx
#查看到已經創建的service
kubectl get svc
- 訪問service
ping 10.254.233.245
- 創建deployment
cd deployk8s-master/ cd labs/ cd deployment/ more deployment_nginx.yml
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.12.2 ports: - containerPort: 80
kubectl create -f deployment_nginx.yml
kubectl get pods -o wide
我們進入node節點訪問這些deployment
- 創建deploy對應的service
kubectl get deployment
expose deployment nginx-deployment
kubectl get svc
service內部的修改部署
kubectl edit deployment nginx-deployment
PS:根據你修改的文件內容,它就自動更新了,但是ip沒有發生改變,這就是service的強大。但是目前這種直接改deloyment文件的形式,不是推薦的因為他不是滾動更新,下次說下滾動更新。
『中級篇』k8s的Service簡介和演示(67)