k8s之service服务(微服务)
生活随笔
收集整理的這篇文章主要介紹了
k8s之service服务(微服务)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、service介紹
- ClusterIP:默認值,k8s系統(tǒng)給service自動分配的虛擬IP,只能在集群內(nèi)部訪問。
- NodePort:將Service通過指定的Node上的端口暴露給外部,訪問任意一個NodeIP:nodePort都將路由到ClusterIP。
- LoadBalancer:在 NodePort 的基礎上,借助 cloud provider 創(chuàng)建一個外部的負載均衡器,并將請求轉(zhuǎn)發(fā)到 - - :NodePort,此模式只能在云服務器上使用。
- ExternalName:將服務通過 DNS CNAME 記錄方式轉(zhuǎn)發(fā)到指定的域名(通過 spec.externlName 設定)。
二、 實現(xiàn)方式
1.Service 是由 kube-proxy 組件,加上 iptables 來共同實現(xiàn)的.
2.kube-proxy 通過 iptables 處理 Service 的過程,需要在宿主機上設置相當多的 iptables 規(guī)則,如果宿主機有大量的Pod,不斷刷新iptables規(guī)則,會消耗大量的CPU資源。
3.IPVS模式的service,可以使K8s集群支持更多量級的Pod。
1 開啟kube-proxy的ipvs模式:
[root@server2 ~]# vim demo.yml --- apiVersion: v1 kind: Service metadata:name: myservice spec:selector:app: myappports:- protocol: TCPport: 80targetPort: 80---apiVersion: apps/v1 kind: Deployment metadata:name: demo2 spec:replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myappimage: myapp:v2 [root@server2 ~]# kubectl apply -f demo.yml [root@server2 ~]# kubectl get svc [root@server2 ~]# yum install -y ipvsadm ## 所有節(jié)點安裝 [root@server2 ~]# kubectl edit cm kube-proxy -n kube-system //修改IPVS模式 ## mode: "ipvs" [root@server2 ~]# kubectl get pod -n kube-system |grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'//更新kube-proxy pod
更新pod
查看是否生效:
IPVS模式下,kube-proxy會在service創(chuàng)建后,在宿主機上添加一個虛擬網(wǎng)卡:kube-ipvs0,并分配service IP
總結
以上是生活随笔為你收集整理的k8s之service服务(微服务)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: k8s之pod管理(控制器)
- 下一篇: bind-utils.x86_64(di