Skip to content

antony@notes:~/kubernetes$ cat "佈署-Deployment-Object-Application.md"

佈署 Deployment Object Application

2021-10-28· kubernetes ·Kubernetes

佈署 Deployment Object Application

Kubernetes Service NodePort

Service External IP

  • External IP用的是node的IP

K8S Service External IP 範例

$ nano s1.externalip.yml 
kind: Service
apiVersion: v1
metadata:
  name: myextip
spec:
  externalIPs:
  - $IP       #這是這台電腦的IP,老師自己寫好的,在m1裡面打env可以看老師的設定
  selector:
    app: s1.pod
  ports:
  - port: 8080
    targetPort: 8888
    
$ cat s1.externalip.yml | envsubst | kubectl create  -f  - 
  • yaml檔沒辦法讀取Linux的環境變數,所以yaml檔裡面如果有寫到Linux環境變數,要在create的時候,變成要先catyaml檔後面接水管envsubst讓linux系統解讀裡面的環境變數,之後在接一個水管把命令傳給kubectl create -f - (最後一個"-",就是把接收最後一個水管傳過來的資料傳給kubectl create,代表"stdin,標準輸入")

例如: 接水管前

bigred@m1:~$ cat s1.externalip.yml
kind: Service
apiVersion: v1
metadata:
  name: myextip
spec:
  externalIPs:
  - $IP
  selector:
    app: s1.pod
  ports:
  - port: 8080
    targetPort: 8888

接水管後

bigred@m1:~$ cat s1.externalip.yml | envsubst
kind: Service
apiVersion: v1
metadata:
  name: myextip
spec:
  externalIPs:
  - 192.168.188.4
  selector:
    app: s1.pod
  ports:
  - port: 8080
    targetPort: 8888

可以看到externalIPs下面的$IP發生改變。

驗證port號8080有沒有開成功:

bigred@m1:~$ kg svc
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP     PORT(S)    AGE
kubernetes   ClusterIP   10.98.0.1     <none>          443/TCP    8d
myextip      ClusterIP   10.98.0.107   192.168.188.4   8080/TCP   7s
s1-service   ClusterIP   10.98.0.142   <none>          9999/TCP   43h

bigred@m1:~$ curl http://192.168.188.4:8080
<h1>Welcome to Spring Boot</h1>

在clusterIP也會開一個8080的port號。

bigred@m1:~$ curl http:// 10.98.0.107:8080
curl: (3) URL using bad/illegal format or missing URL
<h1>Welcome to Spring Boot</h1>

bigred@m1:~$ nslookup  #這命令是跟DNS講話
> server 10.98.0.10    #進去之後要打你要跟哪個server講話
Default server: 10.98.0.10
Address: 10.98.0.10#53
tags: Kubernetes