將一組pod公開為網路服務,通過service代理,可以實作負載均衡

一、ClusterIP
此方式只能在集群內訪問
1.使用命令暴露已存在的pod
(1)繼續使用前面章節的案例,查看名稱為nginx的deploy下的pod
kubectl get pod -n dev -owide

進入每個pod容器,更改index.html內容
kubectl exec nginx-6799fc88d8-2rf2c -it /bin/bash -n dev
cd /usr/share/nginx/html/
rm -rf index.html
touche index.html
echo 1111 >> index.html
kubectl exec nginx-6799fc88d8-rnhmd -it /bin/bash -n dev
cd /usr/share/nginx/html/
rm -rf index.html
touche index.html
echo 2222 >> index.htm
(2)使用curl命令訪問pod的ip,查看更改后的結果

(3)通過ClusterIP的方式暴露pod,默認就是ClusterIP
kubectl expose deploy nginx --name=svc-nginx --port=8000 --target-port=80 --type=ClusterIP -n dev
(4)查看暴露后的service
kubectl get svc -n dev

可以看到分配了一個ClusterIP
(5)訪問ClusterIp,查看結果
service把請求負載均衡的分發給后面代理的pod進行處理,可以看到輸出結果不一樣

(6) 在容器內部通過域名的方式訪問:服務名.命名空間.svc:port
進入某個pod容器
kubectl exec nginx-6799fc88d8-2rf2c -n dev -it /bin/bash
在容器內部執行curl命令訪問服務的域名

2.洗掉服務
kubectl delete svc svc-nginx -n dev
3.通過yaml創建服務
撰寫svc-nginx.yaml檔案
apiVersion: v1
kind: Service
metadata:
labels:
app: svc-nginx
name: svc-nginx
namespace: dev
spec:
selector:
#選擇指定標簽的Deployment
app: nginx
type: ClusterIP
ports:
- port: 8000
protocol: TCP
targetPort: 80
創建nginx服務
kubectl apply -f svc-nginx.yaml
二、NodePort
此方式不僅能在集群內訪問,也可以在集群外部訪問,NodePort范圍在 30000-32767 之間
1.使用命令暴露已存在的pod
(1)繼續使用前面章節的案例,查看名稱為nginx的deploy下的pod
kubectl get pod -n dev -owide

進入每個pod容器,更改index.html內容
kubectl exec nginx-6799fc88d8-2rf2c -it /bin/bash -n dev
cd /usr/share/nginx/html/
rm -rf index.html
touche index.html
echo 1111 >> index.html
kubectl exec nginx-6799fc88d8-rnhmd -it /bin/bash -n dev
cd /usr/share/nginx/html/
rm -rf index.html
touche index.html
echo 2222 >> index.htm
(2)使用curl訪問pod的ip查看更改后的結果

(3)通過NodePort的方式暴露pod,不指定--name引數,service的名稱默認為deploy的名稱
kubectl expose deploy nginx --port=8000 --target-port=80 --type=NodePort -n dev
(4)查看暴露后的service
kubectl get svc -n dev

(5)在集群內訪問ClusterIp,查看結果
service把請求負載均衡的分發給后面代理的pod進行處理

(6)在集群外訪問

2.洗掉服務
kubectl delete svc nginx -n dev
3.通過yaml創建服務
apiVersion: v1
kind: Service
metadata:
labels:
app: svc-nginx
name: svc-nginx
namespace: dev
spec:
selector:
#選擇指定標簽的Deployment
app: nginx
#注意指定type為NodePort
type: NodePort
ports:
- port: 8000
protocol: TCP
targetPort: 80
#指定暴露的埠號,不設定就默認隨機一個
#nodePort: 31234
創建成功之后,可以使用上面介紹的方法來查看測驗服務
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/460841.html
標籤:其他
下一篇:云原生架構下的微服務選型和演進
