我有一个EKS集群,我在其中添加了支持以在混合模式下工作(换句话说,我已经向其中添加了Fargate配置文件)。我的意图是仅在AWS Fargate上运行特定的工作负载,同时将EKS辅助节点保留用于其他类型的工作负载。
为了测试这一点,我的Fargate个人资料定义为:
为了测试k8s资源,我正在尝试部署如下所示的简单nginx部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: mynamespace
labels:
fargate: myvalue
spec:
selector:
matchLabels:
app: nginx
version: 1.7.9
fargate: myvalue
replicas: 1
template:
metadata:
labels:
app: nginx
version: 1.7.9
fargate: myvalue
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
当我尝试应用此资源时,我得到以下信息:
$ kubectl get pods -n mynamespace -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-deployment-596c594988-x9s6n 0/1 Pending 0 10m <none> <none> 07c651ad2b-7cf85d41b2424e529247def8bda7bf38 <none>
Pod保持在Pending状态,并且从未调度到AWS Fargate实例。
这是一个pod describe输出:
$ kubectl describe pod nginx-deployment-596c594988-x9s6n -n mynamespace
Name: nginx-deployment-596c594988-x9s6n
Namespace: mynamespace
Priority: 2000001000
PriorityClassName: system-node-critical
Node: <none>
Labels: app=nginx
eks.amazonaws.com/fargate-profile=myprofile
fargate=myvalue
pod-template-hash=596c594988
version=1.7.9
Annotations: kubernetes.io/psp: eks.privileged
Status: Pending
IP:
Controlled By: ReplicaSet/nginx-deployment-596c594988
NominatedNodeName: 9e418415bf-8259a43075714eb3ab77b08049d950a8
Containers:
nginx:
Image: nginx:1.7.9
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-784d2 (ro)
Volumes:
default-token-784d2:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-784d2
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events: <none>
我可以从此输出得出的结论是,选择了正确的Fargate配置文件:
eks.amazonaws.com/fargate-profile=myprofile
另外,我看到一些值被添加到NOMINATED NODE字段中,但不确定它代表什么。
在这种情况下,是否有任何想法或通常出现的问题值得我们进行故障排除?谢谢
最佳答案
事实证明,问题始终出在与Fargate配置文件关联的专用子网的网络设置中。
为了提供更多信息,这是我最初拥有的东西:
0.0.0.0/0 nat-xxxxxxxx
尽管我不确定AWS Fargate配置文件仅需要与私有(private)子网相关联的真正原因,但这解决了我上面遇到的问题。
关于kubernetes - 尝试在AWS Fargate上安排Pod时,其停留在Pending状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59649086/