運行三個httpd鏡像
創(chuàng)建service
① v1 是 Service 的 apiVersion。
② 指明當(dāng)前資源的類型為 Service。
③ Service 的名字為 httpd-svc。
④ selector 指明挑選那些 label 為 run: httpd 的 Pod 作為 Service 的后端。
⑤ 將 Service 的 8080 端口映射到 Pod 的 80 端口,使用 TCP 協(xié)議。
kubectl describe service httpd-svc #查看httpd-svc與Pod的對應(yīng)關(guān)系
iptables 將訪問 Service 的流量轉(zhuǎn)發(fā)到后端 Pod,而且使用類似輪詢的負(fù)載均衡策略。
在kube-public中部署service httpds-svc
通過namespace: kube-public指定資源所屬的namespace。多個資源可以在一個YAML文件中定義,用 --- 分割。
外網(wǎng)訪問Service
ClusterIP
Service 通過 Cluster 內(nèi)部的 IP 對外提供服務(wù),只有 Cluster 內(nèi)的節(jié)點和 Pod 可訪問,這是默認(rèn)的 Service 類型,前面實驗中的 Service 都是 ClusterIP。
NodePort
Service 通過 Cluster 節(jié)點的靜態(tài)端口對外提供服務(wù)。Cluster 外部可以通過 <NodeIP>:<NodePort> 訪問 Service。
LoadBalancer
Service 利用 cloud provider 特有的 load balancer 對外提供服務(wù),cloud provider 負(fù)責(zé)將 load balancer 的流量導(dǎo)向 Service。目前支持的 cloud provider 有 GCP、AWS、Azur 等。
使用Nodeport方式
PORT(S) 為 8080:30651。8080 是 ClusterIP 監(jiān)聽的端口,30651則是節(jié)點上監(jiān)聽的端口。Kubernetes 會從 30000-32767 中分配一個可用的端口,每個節(jié)點都會監(jiān)聽此端口并將請求轉(zhuǎn)發(fā)給 Service。
nodePort指定分配的端口
nodePort 是節(jié)點上監(jiān)聽的端口。
port 是 ClusterIP 上監(jiān)聽的端口。
targetPort 是 Pod 監(jiān)聽的端口。
版本回滾
默認(rèn)配置下,Kubernetes 只會保留最近的幾個 revision,可以在 Deployment 配置文件中通過 revisionHistoryLimit 屬性增加 revision 數(shù)量。
kubectl apply -f httpd.v1.yml --record
--record 的作用是將當(dāng)前命令記錄到 revision 記錄中,這樣我們就可以知道每個 revison 對應(yīng)的是哪個配置文件。
kubectl rollout history deployment httpd 查看revision歷史記錄
kubectl rollout undo deployment httpd --to-revision=1 #回滾到版本1