iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0
IoT

從開源kubernetes雲端運算到kubeedge雲邊協同系列 第 12

Day 12 KubeEdge 容器網路: Host port

  • 分享至 

  • xImage
  •  

昨天我們提到了如何存取容器的服務,在(容器運行的)邊緣節點上存取。但如果所有的服務都只有運行容器的節點自己可以存取的話,使用上會有很大的限制。所以今天來說明一種方法讓其他節點也能存取到不同節點的服務。

在YAML檔中有關容器port的設定我比較常用到兩個,一個是昨天講的containerPort,一個是今天要用的hostPort。containerPort負責將容器服務port對應出來,hostPort負責將對應出來的port再對應到節點的port上。

# 在24行處新增 hostPort:80
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  namespace: default
  labels:
    app: nginx-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-deploy
  template:
    metadata:
      labels:
        app: nginx-deploy
    spec:
      containers:
      - image: nginx:latest
        name: nginx
        ports:
        - containerPort: 80
          hostPort: 80
      nodeSelector:
        name: edge
# apply 
kubectl apply -f nginx-deploy.yaml


從上面的結果可以發現,我們可以在同一網域的其他節點上透過運行容器的節點IP對應的實體機port進行存取。

當然一樣能夠從運行容器的邊緣節點上直接存取服務,像昨天的方法:

此外也可以利用這種方式更改對應出來的port,意思是實體機對應出來的port可以跟container對應出來的port不同,像是下面這樣:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  namespace: default
  labels:
    app: nginx-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-deploy
  template:
    metadata:
      labels:
        app: nginx-deploy
    spec:
      containers:
      - image: nginx:latest
        name: nginx
        ports:
        - containerPort: 80
          hostPort: 30001
      nodeSelector:
        name: edge

將hostPort改成30001。

重新apply後改成透過curl 192.168.0.9:30001存取,仍然是可以使用的。
同樣的在邊緣節點上直接存取服務:

仍然是透過container-ip的80 port存取,因為我們只有修改實體機對應出來的port並沒有修改container對應出來的port。

小結一下昨天跟今天兩種port設定的影響。簡單來說如果只有給定container port的話,想要存取服務只能在邊緣節點上透過docker分配的容器IP以及container port進行存取;而今天使用的設定方式,透過給定Host port的方式,讓容器服務能被叢集外的使用者存取,但缺點就是一個節點的對外port有限,同一個port無法讓多個容器共享。


上一篇
Day 11 KubeEdge 容器網路: Container port
下一篇
Day 13: KubeEdge與Service(使用cluster-ip)
系列文
從開源kubernetes雲端運算到kubeedge雲邊協同30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言