iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 8
0
Kubernetes

KK8s系列 第 8

回顧第一次部署,淺談 Service

上一篇,提到 deployment 物件,此物件與建立 service 物件有連帶關係的~
透過回顧此篇,可以知道透過kubectl export指令,即會建立 service 物件。

# Expose it as a new Kubernetes Services
[user@minikube ~]$ kubectl expose deployment hello-minikube --type=NodePort service/hello-minikube exposed

查看 Service 資訊

[user@minikube ~]$ kubectl get services -o wide
NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE   SELECTOR
hello-minikube   NodePort    10.97.219.147   <none>        8080:31472/TCP   3d    run=hello-minikube
kubernetes       ClusterIP   10.96.0.1       <none>        443/TCP          5d    <none>
[user@minikube ~]$

[user@minikube ~]$ kubectl describe services hello-minikube
Name:                     hello-minikube
Namespace:                default
Labels:                   run=hello-minikube
Annotations:              <none>
Selector:                 run=hello-minikube
Type:                     NodePort
IP:                       10.97.219.147
Port:                     <unset>  8080/TCP
TargetPort:               8080/TCP
NodePort:                 <unset>  31472/TCP
Endpoints:                172.17.0.4:8080
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

上面的資訊中~透過 kubectl get services 會看見兩個 service~
其中,kubernetes 是由 K8s 叢集自動建立的,其用途就是讓應用程式與 API 溝通。
看下項目 hello-minikube service 物件:

  • 欄位 SELECTOR 中可以看到 “run=hello-minikube” 資訊,這是由 deployment 物件中 Selector 定義並提取出來。
  • 欄位 PORT(S) 看到 8080 埠,這是由 deployment 物件中 Port 定義並提取出來。
  • 10.97.219.147 此 IP 是虛擬 IP,存在於 pod 內的網路資訊。

開放 Service 給予外部存取

在預設情況下,pod 物件僅能於叢集之間存取,但例如此篇案例 hello-minikube 是個 http 應用程式
很多場景下,HTTP 應用層需要開放“埠”端口讓外部存取。

  • 有個簡單方式是使用--type=NodePort方式,透過 service 讓 K8s node 隨機監聽一個埠端口。
    • 讓你無需關注 pod 運作在哪個 K8s node。
    • NodePort: <unset> 31472/TCP 就是隨機產生的“埠”端口。

上一篇
回顧第一次部署,淺談 Pod、Deployment
下一篇
今日來介紹 Pod 靜態文件~ Manifest
系列文
KK8s30

尚未有邦友留言

立即登入留言