У меня есть кластер EKS, в который я добавил поддержку для работы в гибридном режиме (другими словами, я добавил в него профиль Fargate). Я намерен запустить только указанную c рабочую нагрузку на AWS Fargate, сохраняя рабочие узлы EKS для других видов рабочей нагрузки.
Чтобы проверить это, мой профиль Fargate определен так:
- Ограничено указанием c пространства имен (скажем, mynamespace )
- Имеет специфицированную c метку, так что стручки должны соответствовать ей для того, чтобы быть запланированным на Fargate (метка: fargate: myvalue )
Для тестирования ресурсов 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.
Это вывод описания модуля:
$ 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, но не уверен, что он представляет.
Есть какие-нибудь идеи или обычные проблемы, которые могут возникнуть, и которые, возможно, стоит устранить в этом случае? Спасибо