• 【k8s】svc-publishNotReadyAddresses


    环境

    1. kubernetes 1.20.4
    2. Spring Boot 2.5.0-M3

    目标

    publishNotReadyAddresses 表示是否将没有就绪的 Pod 的地址关联到服务上。
    默认情况是 false,只有就绪状态的 Pod 的地址才会关联到服务上。

    示例

    Deploy.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: spring-k8s
    spec:
      selector:
        matchLabels:
          app: spring-k8s
      template:
        metadata:
          labels:
            app: spring-k8s
        spec:
          containers:
            - name: spring-k8s
              image: jiangbo920827/spring-k8s:liveness
              readinessProbe:
                failureThreshold: 30
                exec:
                  command: ["sh", "-c", "cat /root/test.txt"]
              ports:
                - containerPort: 8080
    

    添加了一个就绪探针,因为这个文件不存在,所以 Pod 一直是未就绪,直到失败。

    查看 Pod

    [root@master ~]# kubectl get pod
    NAME                         READY   STATUS    RESTARTS   AGE
    spring-k8s-d8ccf5994-zbxzg   0/1     Running   0          4m16s
    

    Service.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: spring-k8s
    spec:
      selector:
        app: spring-k8s
      ports:
        - port: 80
          targetPort: 8080
    

    查看不发布就绪

    [root@master ~]# kubectl describe svc spring-k8s
    Name:              spring-k8s
    Namespace:         default
    Labels:            <none>
    Annotations:       <none>
    Selector:          app=spring-k8s
    Type:              ClusterIP
    IP Families:       <none>
    IP:                10.104.121.41
    IPs:               10.104.121.41
    Port:              <unset>  80/TCP
    TargetPort:        8080/TCP
    Endpoints:
    Session Affinity:  None
    Events:            <none>
    

    发布未就绪 Pod

    apiVersion: v1
    kind: Service
    metadata:
      name: spring-k8s
    spec:
      selector:
        app: spring-k8s
      publishNotReadyAddresses: true
      ports:
        - port: 80
          targetPort: 8080
    

    查看发布未就绪 Pod

    [root@master ~]# kubectl describe svc spring-k8s
    Name:              spring-k8s
    Namespace:         default
    Labels:            <none>
    Annotations:       <none>
    Selector:          app=spring-k8s
    Type:              ClusterIP
    IP Families:       <none>
    IP:                10.104.121.41
    IPs:               10.104.121.41
    Port:              <unset>  80/TCP
    TargetPort:        8080/TCP
    Endpoints:         10.244.2.232:8080
    Session Affinity:  None
    Events:            <none>
    [root@master ~]# kubectl get pod
    NAME                         READY   STATUS    RESTARTS   AGE
    spring-k8s-d8ccf5994-zbxzg   0/1     Running   0          7m16s
    

    总结

    publishNotReadyAddresses 可以控制是否将未就绪的 Pod 发布到 Service 上,一般不建议为 true。
    如果 Pod 还未就绪的话,发送到上面的请求可能得不到正常的响应。

    附录

  • 相关阅读:
    【原】相煎何太急——input的blur事件与button的click事件
    【原】jQuery与CSS自动生成验证码
    【转】HTML转义字符大全
    【原】来自于一位前端“布道者”的建议
    【原】如何在jQuery中实现闭包
    【转】Web前端研发工程师编程能力飞升之路
    【原】git如何删除本地和远程的仓库
    H5不同样式新闻垂直滚动效果
    mui防止软键盘弹起方法
    js显示对象所有属性和方法的函数
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/14775421.html
Copyright © 2020-2023  润新知