准备就绪调查失败,连接被拒绝

时间:2019-05-26 19:26:23

标签: kubernetes

我正在尝试将K8S设置为与两个Windows节点一起使用(2019)。一切似乎都运行良好,并且使用k8s服务可以正常使用和访问容器。但是,一旦我为就绪(或活动)探针引入了配置,一切都会失败。确切的错误是:

  

准备就绪探测失败:获取http://10.244.1.28:80/test.txt:拨打tcp 10.244.1.28:80:connectex:连接尝试失败,因为一段时间后连接方未正确响应,或者由于连接的主机已建立连接而失败无法回应。

当我尝试使用k8s master 中的URL时,它可以正常工作,并且得到200。但是我读到kubelet是执行探测的那个,实际上是从Windows节点尝试时-它不能达到(这很奇怪,因为容器在同一节点上运行)。因此,我认为该问题与某些网络配置有关。

我有一个配置了外部网络虚拟交换机的HyperV。按照https://docs.microsoft.com/en-us/virtualization/windowscontainers/kubernetes/network-topologies的说明,K8S配置为使用法兰绒覆盖(vxlan)。

有什么想法要解决和解决这个问题吗?

更新:提供Yaml:

apiVersion: v1
kind: Service
metadata:
  name: dummywebapplication
  labels:
    app: dummywebapplication
spec:
  ports:
    # the port that this service should serve on
  - port: 80
    targetPort: 80
  selector:
    app: dummywebapplication
  type: NodePort
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: dummywebapplication
  name: dummywebapplication
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: dummywebapplication
      name: dummywebapplication
    spec:
      containers:
      - name: dummywebapplication
        image: <my image>
        readinessProbe:
          httpGet:
            path: /test.txt
            port: 80
          initialDelaySeconds: 15
          periodSeconds: 30
          timeoutSeconds: 60
      nodeSelector:
        beta.kubernetes.io/os: windows

还有一个更新。在此文档(https://kubernetes.io/docs/setup/windows/intro-windows-in-kubernetes/)中写为:

  

我的Windows节点无法访问NodePort服务

     

从节点本身进行本地NodePort访问失败。这是已知的   局限性。 NodePort访问可从其他节点或外部节点进行   客户。

我不知道这是否相关,因为如上所述,我无法从其他节点连接到容器。我还尝试了LoadBalancer类型的服务,但没有提供不同的结果。

1 个答案:

答案 0 :(得分:1)

网络配置假设是正确的。似乎对于“覆盖”,默认情况下,节点上的kubelet无法到达容器的IP。因此,它会不断返回超时和连接被拒绝的消息。

可能的解决方法:

  1. 在节点上的C:\ k \ cni \ config的ExceptionList'OutBoundNAT'中插入一个'exception'。如果使用start.ps1启动节点,这会有些棘手,因为它每次都会覆盖此文件。我必须在c:\ k \ helper.psm1中调整“ Update-CNIConfig”功能,以在该文件中重新插入类似于“ l2bridge”的异常。
  2. 使用“ l2bridge”配置。似乎'overlay'正在更安全的隔离环境中运行,但l2bridge却没有。