[英]No pods created when deploying a Docker image to Google Cloud using a Kubernetes deployment YAML file
I am facing an issue when trying to create a deployment on Google Cloud using a Kubernetes YAML file.尝试使用 Kubernetes YAML 文件在 Google Cloud 上创建部署时遇到问题。 I see that no pods are created when using a YAML file;我看到使用 YAML 文件时没有创建任何 pod; however, if I use kubectl create deployment...
, pods do get created.但是,如果我使用kubectl create deployment...
,确实会创建 pod。
My YAML file is as follows:我的 YAML 文件如下:
#Deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
generation: 1
labels:
app: hello-world
name: hello-world
namespace: default
resourceVersion: "3691124"
spec:
progressDeadlineSeconds: 600
replicas: 3
revisionHistoryLimit: 10
selector:
matchLabels:
app: hello-world
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: hello-world
spec:
containers:
- image: myrepo/hello-world:0.0.4.RELEASE
imagePullPolicy: IfNotPresent
name: hello-world
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
#Service
apiVersion: v1
kind: Service
metadata:
labels:
app: hello-world
name: hello-world
namespace: default
resourceVersion: "3691877"
spec:
externalTrafficPolicy: Cluster
ports:
- nodePort: 32448
port: 8080
protocol: TCP
targetPort: 8001
selector:
app: hello-world
sessionAffinity: None
type: LoadBalancer
This is what I see when I run kubectl get all
:这是我在运行kubectl get all
时看到的:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/hello-world LoadBalancer Some IP Some IP 3 8001:32449/TCP 15m
service/kubernetes ClusterIP Some IP 2 <none> 444/TCP 12d
As you can see, the only resource that started was the service.如您所见,启动的唯一资源是服务。 I neither see any deployment nor see any pods being created.我既没有看到任何部署,也没有看到任何正在创建的 pod。
Note I have replaced the actual IP addresses with "Some IP" above for obvious reasons..请注意,出于显而易见的原因,我已将实际的 IP 地址替换为上面的“某些 IP”。
Question: Why are no pods getting created when I use the YAML but pods get created when I use kubectl create deployment
instead of using a YAML configuration file?问:为什么我使用 YAML 时没有创建 pod,但使用kubectl create deployment
而不是使用 YAML 配置文件时创建了 pod?
---
in YAML, when you have multiple resources in a single file.当您在单个文件中有多个资源时,您应该在 YAML 中使用---
。apiVersion: apps/v1
in deployment.您必须在部署中设置apiVersion: apps/v1
。---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
generation: 1
labels:
app: hello-world
name: hello-world
namespace: default
resourceVersion: "3691124"
spec:
progressDeadlineSeconds: 600
replicas: 3
revisionHistoryLimit: 10
selector:
matchLabels:
app: hello-world
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: hello-world
spec:
containers:
- image: myrepo/hello-world:0.0.4.RELEASE
imagePullPolicy: IfNotPresent
name: hello-world
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
labels:
app: hello-world
name: hello-world
namespace: default
resourceVersion: "3691877"
spec:
externalTrafficPolicy: Cluster
ports:
- nodePort: 32448
port: 8080
protocol: TCP
targetPort: 8001
selector:
app: hello-world
sessionAffinity: None
type: LoadBalancer
Output Output
$ kubectl get deply,po,svc
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/hello-world 0/3 3 0 5m34s
NAME READY STATUS RESTARTS AGE
pod/hello-world-6bd8d58486-7lzh9 0/1 ImagePullBackOff 0 3m49s
pod/hello-world-6bd8d58486-m56rq 0/1 ImagePullBackOff 0 3m49s
pod/hello-world-6bd8d58486-z9xmz 0/1 ImagePullBackOff 0 3m49s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/hello-world LoadBalancer 10.108.65.81 <pending> 8080:32448/TCP 3m49s
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9d
The best practice is to create different yaml files for different resources.最佳实践是为不同的资源创建不同的 yaml 文件。 use Helm if you need to package multiple kubernetes resources into a single entity.如果您需要将 package 多个 kubernetes 资源整合到一个实体中,请使用 Helm。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.