上一篇,提到 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
[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 物件:
在預設情況下,pod 物件僅能於叢集之間存取,但例如此篇案例 hello-minikube 是個 http 應用程式
很多場景下,HTTP 應用層需要開放“埠”端口讓外部存取。
--type=NodePort
方式,透過 service 讓 K8s node 隨機監聽一個埠端口。
NodePort: <unset> 31472/TCP
就是隨機產生的“埠”端口。