K8S 之 负载均衡(Services)

一、Services作用

我们已经能够通过Deployment来创建一组Pod来提供具有高可用性的服务。虽然每个Pod都会分配一个单独的Pod IP,然而却存在如下两个问题:

  • Pod IP仅仅是集群内可见的虚拟IP,外部无法访问。
  • Pod IP会随着Pod的销毁而消失,当ReplicaSet对Pod进行动态伸缩时,Pod IP可能随时随地都会变化,这样对于我们访问这个服务带来了难度。

service是一组pod的服务抽象,相当于一组pod的LB,负责将请求分发给对应的pod。service会为这个LB提供一个IP,一般称为cluster IP 。使用Service对象,通过selector进行标签选择,找到对应的Pod

二、Svc的创建(关联对应的deployment)

1、yaml文件

apiVersion: v1
kind: Service
metadata:
  name: myblog
  namespace: kang
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8002
  selector:
    app: myblog              #此处需与deployment的标签选择器一致
  type: ClusterIP

K8S  之  负载均衡(Services)

2、创建查看状态

K8S  之  负载均衡(Services)
K8S  之  负载均衡(Services)

三、为mysql deployment 创建svc(用于app应用直接通过svc name 访问)

1、mysql svc 文件

apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: kang
spec:
  ports:
  - port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    app: mysql              #此处需与mysql deployment的标签选择器一致
  type: ClusterIP

2、将原有mysql deployemnt 的yaml 修改

K8S  之  负载均衡(Services)

K8S  之  负载均衡(Services)

3、查看mysql svc的关联情况

K8S  之  负载均衡(Services)

4、将原有的configMap yaml文件修改

K8S  之  负载均衡(Services)
K8S  之  负载均衡(Services)

5、重启pod,验证svc服务是否正常

K8S  之  负载均衡(Services)

四、pod与svc的关系

K8S  之  负载均衡(Services)

猜你喜欢

转载自blog.51cto.com/12965094/2641233