IPVS模式的service
Service 是由 kube-proxy 组件,加上 iptables 来共同实现的。
kube-proxy 通过 iptables 处理 Service 的过程,需要在宿主机上设置相当多的 iptables 规则,如果宿主机有大量的Pod,不断刷新iptables规则,会消耗大量的CPU资源。
IPVS模式的service,可以使K8s集群支持更多量级的Pod。
yum install -y ipvsadm #所有节点安装
kubectl edit cm kube-proxy -n kube-system #修改IPVS模式
将mode的模式改为ipvs
更新kube-proxy pod
kubectl get pod -n kube-system |grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
IPVS模式下,kube-proxy会在service创建后,在宿主机上添加一个虚拟网卡:kube-ipvs0,并分配service IP
vim svc.yaml
apiVersion: v1
kind: Service
metadata:
name: mysvc
spec:
ports:
- protocol: TCP
port: 80
targetPort: 80
selector:
app: myapp
创建svc
查看网卡
ip addr
kube-proxy通过linux的IPVS模块,以rr轮询方式调度service中的Pod
k8s service的四种类型
ClusterIP
这个类型的service有一个ClusterIP,其实就一个VIP。具体实现原理依靠kubeproxy组件,通过iptables或是ipvs实现,这种类型的service只能在集群内访问
vim svc.yaml
apiVersion