AWS EKS Kubernetes 和 DockerHub
AWS EKS Kubernetes and DockerHub
我在 AWS EKS 中创建了一个集群和节点。我将部署应用到该集群
kubectl apply -f deployment.yaml
其中 deployment.yaml 包含容器的规格以及 DockerHub 存储库和图像
但是,我在deployment.yaml中犯了一个错误,我需要重新将其应用到配置中
我的问题是:
1 - 如何使用 kubectl 将 deployment.yaml 重新应用到 AWS EKS 集群?
只是 运行 上面的命令不起作用 (kubectl apply -f deployment.yaml
)
2- 在我重新应用 deployment.yaml 之后,节点会去获取 DockerHub 镜像还是我还需要做其他事情(假设所有其他细节都正常)
下面的一些输出:
>> kubectl get pods
my-app-786dc95d8f-b6w4h 0/1 ImagePullBackOff 0 9h
my-app-786dc95d8f-w8hkg 0/1 ImagePullBackOff 0 9h
kubectl describe pod my-app-786dc95d8f-b6w4h
Name: my-app-786dc95d8f-b6w4h
Namespace: default
Priority: 0
Node: ip-192-168-24-13.ec2.internal/192.168.24.13
Start Time: Fri, 10 Jul 2020 12:54:38 -0400
Labels: app=my-app
pod-template-hash=786dc95d8f
Annotations: kubernetes.io/psp: eks.privileged
Status: Pending
IP: 192.168.7.235
IPs:
IP: 192.168.7.235
Controlled By: ReplicaSet/my-app-786dc95d8f
Containers:
simple-node:
Container ID:
Image: BAD_REPO/simple-node
Image ID:
Port: 80/TCP
Host Port: 0/TCP
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-mwwvl (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
default-token-mwwvl:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-mwwvl
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:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal BackOff 17m (x2570 over 9h) kubelet, ip-192-168-24-13.ec2.internal Back-off pulling image "BAD_REPO/simple-node"
Warning Failed 2m48s (x2634 over 9h) kubelet, ip-192-168-24-13.ec2.internal Error: ImagePullBackOff
BR
如需换图:
kubectl set image deployment.v1.apps/{your_deployment_name} image_name:tag
但你总能做到
kubectl delete -f deployment.yaml
kubectl create -f deployment.yaml
因为你的图像在 ImagePullBackOff
- 它无论如何都不起作用,你可以重新创建部署。通常你不会在产品上做 drop/create。这就是我一直使用图像更改的原因。只需更改每个新图像上的标签。
ImagePullBackOff
表示kubernetes无法拉取镜像
特别是,“默认”服务帐户无法拉取图像。
要解决此问题,您需要进行两项检查:
- 检查图片名称和标签是否有错字。该图像是公开的。
- 如果 Docker 注册表是私有的,请确保使用 dockerlogin 类型创建机密,然后使用此机密修补“默认”服务帐户。
我在 AWS EKS 中创建了一个集群和节点。我将部署应用到该集群
kubectl apply -f deployment.yaml
其中 deployment.yaml 包含容器的规格以及 DockerHub 存储库和图像
但是,我在deployment.yaml中犯了一个错误,我需要重新将其应用到配置中
我的问题是:
1 - 如何使用 kubectl 将 deployment.yaml 重新应用到 AWS EKS 集群?
只是 运行 上面的命令不起作用 (kubectl apply -f deployment.yaml
)
2- 在我重新应用 deployment.yaml 之后,节点会去获取 DockerHub 镜像还是我还需要做其他事情(假设所有其他细节都正常)
下面的一些输出:
>> kubectl get pods
my-app-786dc95d8f-b6w4h 0/1 ImagePullBackOff 0 9h
my-app-786dc95d8f-w8hkg 0/1 ImagePullBackOff 0 9h
kubectl describe pod my-app-786dc95d8f-b6w4h
Name: my-app-786dc95d8f-b6w4h
Namespace: default
Priority: 0
Node: ip-192-168-24-13.ec2.internal/192.168.24.13
Start Time: Fri, 10 Jul 2020 12:54:38 -0400
Labels: app=my-app
pod-template-hash=786dc95d8f
Annotations: kubernetes.io/psp: eks.privileged
Status: Pending
IP: 192.168.7.235
IPs:
IP: 192.168.7.235
Controlled By: ReplicaSet/my-app-786dc95d8f
Containers:
simple-node:
Container ID:
Image: BAD_REPO/simple-node
Image ID:
Port: 80/TCP
Host Port: 0/TCP
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-mwwvl (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
default-token-mwwvl:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-mwwvl
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:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal BackOff 17m (x2570 over 9h) kubelet, ip-192-168-24-13.ec2.internal Back-off pulling image "BAD_REPO/simple-node"
Warning Failed 2m48s (x2634 over 9h) kubelet, ip-192-168-24-13.ec2.internal Error: ImagePullBackOff
BR
如需换图:
kubectl set image deployment.v1.apps/{your_deployment_name} image_name:tag
但你总能做到
kubectl delete -f deployment.yaml
kubectl create -f deployment.yaml
因为你的图像在 ImagePullBackOff
- 它无论如何都不起作用,你可以重新创建部署。通常你不会在产品上做 drop/create。这就是我一直使用图像更改的原因。只需更改每个新图像上的标签。
ImagePullBackOff
表示kubernetes无法拉取镜像
特别是,“默认”服务帐户无法拉取图像。
要解决此问题,您需要进行两项检查:
- 检查图片名称和标签是否有错字。该图像是公开的。
- 如果 Docker 注册表是私有的,请确保使用 dockerlogin 类型创建机密,然后使用此机密修补“默认”服务帐户。