# Services ###### tags: `Kubernetes` 若想要讓外面的人可以存取pod裡面的application,就需要透過services的幫忙。 這些 IP 僅有在 K8s cluster 內部才有辦法存取的到 > Service Type 有以下三種。 > * NodePort > * ClusterIP > * LoadBalancer ![](https://i.imgur.com/kpiMhRw.png) ### YAML範例檔 * NodePort 設定想對外的port * Selector 選想要apply到的那個pod,使用他的 Label 若Master node IP 為 10.0.2.15 若有兩個service對應到兩個pod(網頁),對外的 port 個別是30008、300010,所有的node(master、worker),都可以直接localhost存取到兩個網頁 ``` $ vim svc.yaml apiVersion: v1 kind: Service metadata: name: nodeport-service spec: type: NodePort ports: - targetPort: 80 port: 80 nodePort: 30008 selector: app: MyApp ``` 上面是nodeport的範例,可以會對外 service 的 cluster ip 都可以在cluster 裡面的node存取到 也可以透過以下方式建立: ``` #創建的Service會自動將該Pod的label填入selector欄位 $ kubectl expose po <pod-name> --name=<svc-name> --type=<type-of-svc> --port=<port> #這邊的port是service上面的port $ kubectl expose po nginx --name=service --type=NodePort --port 80 ``` ![](https://i.imgur.com/SlYrW5H.png)