k8s學習(四) k8s使用nodeport方式配置service對外暴露服務


Pod是有生命周期的,使用凡人皆有一死來描述pod很貼切,當一個工作節點(node)銷毀時,節點上運行的pods也會被銷毀, ReplicationController會動態地在其他節點上創建Pod來保持應用程序的運行,每一個Pod都有一個獨立的IP地址,甚至是同一個節點上的Pod,可以看出Pod的IP是動態的,它隨Pod的創建而創建,隨Pod的銷毀而消失,這就引出一個問題:如果由一組Pods組合而成的集群來提供服務,那如何訪問這些Pods呢?
Kubenetes的Service就是用來解決這個問題的。一個Service可以看作一組提供相同服務的Pods的對外訪問接口,Service作用於哪些Pods是通過label selector來定義的,這些Pods能被Service訪問,Pod之間的發現和路由(如應用中的前端和后端組件)由Kubernetes Service處理。
Service有四種type: ClusterIP(默認)、NodePort、LoadBalancer、ExternalName. 其中NodePort和LoadBalancer兩類型的Services可以對外提供服務。
這是使用NodePort來配置

1、創建yaml service.yaml

---
apiVersion: v1
kind: Service
metadata:
  name: kube-node-service
  labels:
    name: kube-node-service
spec:
  type: NodePort      #這里代表是NodePort類型的
  ports:
  - port: 8080        #這里的端口和clusterIP對應,即ip:8080,供內部訪問。
    targetPort: 8080  #端口一定要和container暴露出來的端口對應
    protocol: TCP
    nodePort: 32143   # 所有的節點都會開放此端口,此端口供外部調用。
  selector:
    app: web          #這里選擇器一定要選擇容器的標簽,之前寫name:kube-node是錯的。

2、應用yaml

kubectl create -f service.yaml

3、檢驗配置是否正確

//測試主節點訪問
[root@k8s-node1 k8s]# curl 192.168.100.89:32143/index
hello,world

[root@k8s-node1 k8s]# kubectl get services
NAME                TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kube-node-service   NodePort    10.96.77.110   <none>        8080:32143/TCP   21m
kubernetes          ClusterIP   10.96.0.1      <none>        443/TCP          4d

//測試內部訪問(clusterIp:PORT)
curl 10.96.77.110:8080

[root@k8s-node1 k8s]# curl 10.96.77.110:8080/index
hello,world

[root@k8s-node1 k8s]# kubectl get pods -o wide
NAME                        READY   STATUS    RESTARTS   AGE   IP            NODE        NOMINATED NODE   READINESS GATES
kube-node-87dcfc9cf-9kj8j   1/1     Running   0          75m   10.244.1.23   k8s-node3   <none>           <none>
kube-node-87dcfc9cf-l2ppz   1/1     Running   0          75m   10.244.2.24   k8s-node2   <none>           <none>

[root@k8s-node1 k8s]# curl 10.244.1.23:8080/index
hello,world

[root@k8s-node1 k8s]# curl 10.244.2.24:8080/index
hello,world

//測試slave節點訪問
[root@k8s-node1 k8s]# curl 192.168.100.91:32143/index
hello,world
[root@k8s-node1 k8s]# curl 192.168.100.92:32143/index
hello,world

從瀏覽器訪問測試 http://192.168.100.89:32143/index
				 http://192.168.100.91:32143/index
				 http://192.168.100.92:32143/index


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM