antony@notes:~/kubernetes$ cat "佈署-Deployment-Object-Application.md"
佈署 Deployment Object Application
佈署 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