EKS,Windows节点.networkPlugin cni失败



Perhttps://docs.aws.amazon.com/eks/latest/userguide/windows-support.html,我运行了命令,eksctl utils install vpc controllers--cluster<集群名称&gt--批准

我的心电图版本是v1.16.3。我尝试将Windows docker映像部署到Windows节点。我在下面出错了。

警告CreatePodSandBox 31s kubelet,ip-west-2.compute.internal创建pod沙盒失败:rpc错误:代码=未知desc=设置沙盒容器失败"ab8001f7b01f5c154867b7e";吊舱网络";mrestapi-67fb477548-v4njs":networkPlugin cni未能设置pod";mrestapi-67fb477548-v4njs_ui";network:无法解析Kubernetes参数:pod没有标签vpc.amazonaws.com/PrivateIPv4Address

$ kubectl logs vpc-resource-controller-645d6696bc-s5rhk -n kube-system
I1010 03:40:29.041761       1 leaderelection.go:185] attempting to acquire leader lease  kube-system/vpc-resource-controller...
I1010 03:40:46.453557       1 leaderelection.go:194] successfully acquired lease kube-system/vpc-resource-controller
W1010 23:57:53.972158       1 reflector.go:341] pkg/mod/k8s.io/client-go@v0.0.0-20180910083459-2cefa64ff137/tools/cache/reflector.go:99: watch of *v1.Pod ended with: too old resource version: 1480444 (1515040)

它抱怨资源版本太旧。如何升级版本?

  1. 我删除了windows节点,重新创建了具有不同实例类型的windows节点。但是,它没有起作用
  2. 删除了windows节点组,重新创建了windows节点。它不起作用
  3. 最后,我删除了整个EKS集群,重新创建了EKS集群。命令kubectl describe node<windowsnode>给我下面的输出
vpc.amazonaws.com/CIDRBlock           0         0
vpc.amazonaws.com/ENI                 0         0
vpc.amazonaws.com/PrivateIPv4Address  1         1

已部署windows-server-iis.yaml。它按预期工作。这个问题的根本原因是神秘。

要解决此问题,我会。。。

  1. 首先列出组件以确保它们正在运行:
$kubectl get pod -n kube-system | grep vpc
vpc-admission-webhook-deployment-7f67d7b49-wgzbg   1/1     Running   0          38h
vpc-resource-controller-595bfc9d98-4mb2g           1/1     Running   0          29
  1. 如果他们正在运行,请检查他们的日志
kubectl logs <vpc-yadayada> -n kube-system
  1. 确保您使用的实例类型每个ENI有足够的可用IP,因为在Windows世界中只使用一个ENI,并且限制为每个ENI的最大可用IP减去主IP地址的一个。我以前遇到过这个错误,我已经超过了ENI可用的IP数量。

  2. 确认吊舱的选择器是正确的

nodeSelector:
kubernetes.io/os: windows
kubernetes.io/arch: amd64

作为一个轶事,我已经完成了您迄今为止在几个集群上链接的文档的To enable Windows support for your cluster with a macOS or Linux client部分中提到的步骤,它们运行得很好。

的输出是什么

kubectl describe node <windows_node>

如果是这样的话:

vpc.amazonaws.com/CIDRBlock:           0
vpc.amazonaws.com/ENI:                 0
vpc.amazonaws.com/PrivateIPv4Address:  0

然后您需要重新创建具有不同实例类型的节点组。。。

然后尝试部署这个:

apiVersion: apps/v1
kind: Deployment
metadata:
name: windows-server-iis-test
namespace: default
spec:
selector:
matchLabels:
app: windows-server-iis-test
tier: backend
track: stable
replicas: 1
template:
metadata:
labels:
app: windows-server-iis-test
tier: backend
track: stable
spec:
containers:
- name: windows-server-iis-test
image: mcr.microsoft.com/windows/servercore:1809
ports:
- name: http
containerPort: 80
imagePullPolicy: IfNotPresent
command:
- powershell.exe
- -command
- "Add-WindowsFeature Web-Server; Invoke-WebRequest -UseBasicParsing -Uri 'https://dotnetbinaries.blob.core.windows.net/servicemonitor/2.0.1.6/ServiceMonitor.exe' -OutFile 'C:\ServiceMonitor.exe'; echo '<html><body><br/><br/><marquee><H1>Hello EKS!!!<H1><marquee></body><html>' > C:\inetpub\wwwroot\default.html; C:\ServiceMonitor.exe 'w3svc'; "
resources:
limits:
cpu: 256m
memory: 256Mi
requests:
cpu: 128m
memory: 100Mi
nodeSelector:
kubernetes.io/os: windows
---
apiVersion: v1
kind: Service
metadata:
name: windows-server-iis-test
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: windows-server-iis-test
tier: backend
track: stable
sessionAffinity: None
type: ClusterIP
kubectl proxy

打开浏览器http://localhost:8001/api/v1/namespaces/default/services/http:windows-服务器iis测试:80/proxy/default.html将显示带有Hello EKS文本的网页

最新更新