1. 程式人生 > >『中級篇』k8s的Service簡介和演示(67)

『中級篇』k8s的Service簡介和演示(67)

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 主要有三種類型:
    1. ClsterIP
    2. NodePort
    3. 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)