K8S 之 服務svc的介紹

1、服務介紹

Kubernetes服務是一種爲一組功能相同的pod提供單一不變的接入點的資源。當服務存在時,它的IP地址和端口不會改變。客戶端經過IP地址和端口號創建鏈接,這些鏈接會被路由到提供該服務的任意一個pod上。經過這種方式,客戶端不須要知道每一個單獨的提供服務的pod的地址,這樣這些pod就能夠在集羣中隨時被建立或移除。node

2、爲一個pod建立service

一、建立一個pod
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: web             #標籤選擇器app:web
  namespace: test
spec:
  containers:
    - name: nginx-test
      image: test-harbor.cedarhd.com/public/nginx:curl
      ports:
        - containerPort: 80        #容器端口

 二、爲該pod建立對應的service
 apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: test
spec:
  ports:
    - port: 80                #該service服務的可用對外端口
      targetPort: 80       #服務將鏈接轉發到容器的端口
  selector:                  
    app: web               #具備app=web標籤的pod都屬於該服務

[root@test-nodes1 k8s-yaml-file]# kubectl get svc -n test
NAME    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
nginx   ClusterIP   192.168.81.180   <none>        80/TCP    8m8s
[root@test-nodes1 k8s-yaml-file]# kubectl get pod -o wide -n test
NAME    READY   STATUS    RESTARTS   AGE   IP           NODE                      NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          27m   172.7.21.6   test-nodes1.cedarhd.com   <none>           <none>
[root@test-nodes1 k8s-yaml-file]# ipvsadm -ln | grep -C 3 192.168.81.180
TCP  192.168.66.183:80 nq
  -> 172.7.21.3:8082              Masq    1      0          0         
  -> 172.7.22.4:8082              Masq    1      0          0         
TCP  192.168.81.180:80 nq    #對應
  -> 172.7.21.6:80                Masq    1      0          0         
TCP  192.168.96.231:80 nq
  -> 172.7.21.6:80                Masq    1      0          0

3、同一個服務暴露多個端口

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: test
spec:
  ports:
    - name: http     
      port: 80
      targetPort: 80
    - name: https
      port: 443
      targetPort: 443
  selector:
    app: web

備註:在建立一個有多個端口的服務的時候,必須給每一個端口指定名字。
相關文章
相關標籤/搜索