我正在尝试将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类型的服务,但没有提供不同的结果。
答案 0 :(得分:1)
网络配置假设是正确的。似乎对于“覆盖”,默认情况下,节点上的kubelet无法到达容器的IP。因此,它会不断返回超时和连接被拒绝的消息。
可能的解决方法: