k8s中使用service做四层负载均衡

在kubernetes中,Pod是有生命周期的,如果pod重启IP很有可能就会发生变化。如果我们的服务都是将pod的IP写死,pod的挂掉或者重启,和刚才重启的pod相关联的其他服务就会找不到它所关联的pod,为了解决这个问题,在kubernetes中定义了service资源对象,service定义了一个服务访问的入口,客户端通过这个入口即可访问服务背后的应用集群实例,service是一组pod的逻辑集合,这一组pod能够被service访问到,通常是Label Selectot实现的。

我们通过service访问k8s内部应用的时候数据包走向是从 客户端请求–>node节点的IP:端口–>service的ip:端口 -->pod的ip:端口

demo
创建一个k8s pod,通过service代理
cat pod_test.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      run: nginx
  replicas: 2
  template:
    metadata:
      labels:
        run: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

创建一个service
cat service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    run: nginx
spec:
  ports:
  - port: 80
    protocol: TCP
  selector:
    run: nginx
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐