Kubernetes中的Port端口演示

在編排kubernetes時,Deployment、ReplicationController的Pod項有containerPort,Service文件裏的port,targetPort, nodePort

Deployment、ReplicationController中的

containerPort:容器暴露的端口

Service中的

port:service暴露在cluster ip上的端口,通過<cluster ip>:port訪問服務,通過此端口集羣內的服務可以相互訪問

targetPort:提供該服務的容器所暴露(EXPOSE)的端口號,沒有指定targetPort,則默認targetPort與port相同

nodePort:節點端口,<nodeIP>:nodePort 是提供給集羣外部客戶訪問service的入口,默認的,nodePort的範圍是30000-32767可以通過修改apiserver--service-node-port-range 的參數來修改默認範圍,如:--service-node-port-range 8000-9000

1. 創建 frontend-rc.yaml ,執行 kubectl apply -f frontend-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: frontend
spec:
  replicas: 1
  selector:
    tier: frontend
  template:
    metadata:
      labels:
        app: app-demo
        tier: frontend
    spec:
      containers:
      - name: tomcat-demo
        image: tomcat
        imagePullPolicy: IfNotPresent
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 8080
      - name: nginx-demo
        image: nginx
        imagePullPolicy: IfNotPresent
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 80

2. 創建 frontend-service.yaml: 執行 kubectl apply -f frontend-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    name: frontend
spec:
  ports:
  - port: 8080
    targetPort: 80 # nginx容器曝露的端口
    nodePort: 30000
  selector:
    tier: frontend
  type: NodePort # 使用NodePort向k8s集羣外部暴露服務

3. 查看dashboard

4. 訪問

運行 kubectl describe pod frontend-s4kd7 查看當前節點的IP地址爲10.1.0.62

 

運行kubectl exec -it frontend-s4kd7 -c nginx-demo /bin/bash  ,登錄nginx-demo容器

運行 curl http://10.1.0.62:8080  #10.1.0.62 爲節點 IP地址,訪問Tomcat容器

運行 curl http://10.1.0.62:80  # 10.1.0.62 爲節點 IP地址,訪問Nginx容器

運行 curl http://10.104.109.187:8080  #10.104.109.187 爲Cluster IP地址

ifconfig查看本機IP地址爲 192.168.10.7

在瀏覽器輸入http://192.168.10.7:30000/ # 30000爲nodePort曝露出來的端口

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章