Setting a container in Kubernetes with cloudbuild.yaml error: unable to find container named "XXX" error
Setting a container in Kubernetes with cloudbuild.yaml error: unable to find container named "XXX" error
第一次在 Google Cloud Platform 中创建管道。
我一直在按照他们的指南进行操作,最后一步我想将构建容器设置到 Kubernetes 集群中。
这是我在最后一步失败的 yaml 文件。
steps:
# This steps clone the repository into GCP
- name: gcr.io/cloud-builders/git
args: ['clone', 'https://<user>:<password>@github.com/PatrickVibild/scrappercontroller']
# This step runs the unit tests on the app
- name: 'docker.io/library/python:3.7'
id: Test
entrypoint: /bin/sh
args:
- -c
- 'pip install -r requirements.txt && python -m pytest app/tests/**'
#This step creates a container and leave it on CloudBuilds repository.
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/abiding-robot-255320/scrappercontroller', '.']
#Adds the container to Google container registry as an artefact
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/abiding-robot-255320/scrappercontroller']
#Uses the container and replaces the existing one in Kubernetes
- name: 'gcr.io/cloud-builders/kubectl'
args: ['set', 'image', 'deployment/scrapper-config', 'scrappercontroller=gcr.io/abiding-robot-255320/scrappercontroller']
env:
- 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
- 'CLOUDSDK_CONTAINER_CLUSTER=n1scrapping'
我一直在使用 GCP 指南
- name: 'gcr.io/cloud-builders/kubectl'
args: ['set', 'image', 'deployment/myimage', 'frontend=gcr.io/myproject/myimage']
env:
- 'CLOUDSDK_COMPUTE_ZONE=us-east1-b'
- 'CLOUDSDK_CONTAINER_CLUSTER=node-example-cluster'
但我不知道在最后一个参数中我必须替换什么。 frontend=gcr.io/myproject/myimage
就我而言。
此外,我的目的是更换 kubernetes 上 运行 的容器,如果这有助于发现任何问题。
感谢您的帮助!
根据标题我猜你会在 CloudBuild 日志中看到这样的消息:
+ kubectl set image deployment/scrapper-config scrappercontroller=gcr.io/abiding-robot-255320/scrappercontroller
error: unable to find container named "scrappercontroller"
I dont know what do I have to replace in the last argument. frontend=gcr.io/myproject/myimage
in my case.
这个参数的意思是<container_name>=<image_ref>
.
您将此值设置为 scrappercontroller=gcr.io/abiding-robot-255320/scrappercontroller
.
这意味着:"set the image for the 'scrappercontroller' container in my Pods to this image from GCR".
您可以通过 运行 kubectl set image --help
:
了解更多信息
Update existing container image(s) of resources.
Possible resources include (case insensitive):
pod (po), replicationcontroller (rc), deployment (deploy), daemonset (ds), replicaset (rs)
Examples:
# Set a deployment's nginx container image to 'nginx:1.9.1', and its busybox container image to 'busybox'.
kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1
# Update all deployments' and rc's nginx container's image to 'nginx:1.9.1'
kubectl set image deployments,rc nginx=nginx:1.9.1 --all
# Update image of all containers of daemonset abc to 'nginx:1.9.1'
kubectl set image daemonset abc *=nginx:1.9.1
# Print result (in yaml format) of updating nginx container image from local file, without hitting the server
kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml
您正在使用 Deployment
object。
Deployments
使用他们的 spec.template
创建 Pods
。
Pods
可以有多个containers
,每个都有一个名字。
此命令将向您显示部署中 Pods 的容器名称:
kubectl get --output=wide deploy/scrapper-config
下面是一个 Deployment
的示例,它使用两个容器创建 Pods
:"myapp" 和 "cool-sidecar"。 (请参阅 CONTAINERS
列。)
kubectl get --output=wide deploy/myapp
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
myapp 1/1 1 0 10m myapp,cool-sidecar nginx,nginx run=myapp
您可以在最后一个参数中使用该容器名称:
'my-container-name=gcr.io/abiding-robot-255320/scrappercontroller'
如果您的 Pods 每个容器只有一个容器,您也可以只使用通配符 (*
):
'*=gcr.io/abiding-robot-255320/scrappercontroller'
希望对您有所帮助
第一次在 Google Cloud Platform 中创建管道。
我一直在按照他们的指南进行操作,最后一步我想将构建容器设置到 Kubernetes 集群中。
这是我在最后一步失败的 yaml 文件。
steps:
# This steps clone the repository into GCP
- name: gcr.io/cloud-builders/git
args: ['clone', 'https://<user>:<password>@github.com/PatrickVibild/scrappercontroller']
# This step runs the unit tests on the app
- name: 'docker.io/library/python:3.7'
id: Test
entrypoint: /bin/sh
args:
- -c
- 'pip install -r requirements.txt && python -m pytest app/tests/**'
#This step creates a container and leave it on CloudBuilds repository.
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/abiding-robot-255320/scrappercontroller', '.']
#Adds the container to Google container registry as an artefact
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/abiding-robot-255320/scrappercontroller']
#Uses the container and replaces the existing one in Kubernetes
- name: 'gcr.io/cloud-builders/kubectl'
args: ['set', 'image', 'deployment/scrapper-config', 'scrappercontroller=gcr.io/abiding-robot-255320/scrappercontroller']
env:
- 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
- 'CLOUDSDK_CONTAINER_CLUSTER=n1scrapping'
我一直在使用 GCP 指南
- name: 'gcr.io/cloud-builders/kubectl'
args: ['set', 'image', 'deployment/myimage', 'frontend=gcr.io/myproject/myimage']
env:
- 'CLOUDSDK_COMPUTE_ZONE=us-east1-b'
- 'CLOUDSDK_CONTAINER_CLUSTER=node-example-cluster'
但我不知道在最后一个参数中我必须替换什么。 frontend=gcr.io/myproject/myimage
就我而言。
此外,我的目的是更换 kubernetes 上 运行 的容器,如果这有助于发现任何问题。
感谢您的帮助!
根据标题我猜你会在 CloudBuild 日志中看到这样的消息:
+ kubectl set image deployment/scrapper-config scrappercontroller=gcr.io/abiding-robot-255320/scrappercontroller
error: unable to find container named "scrappercontroller"
I dont know what do I have to replace in the last argument.
frontend=gcr.io/myproject/myimage
in my case.
这个参数的意思是<container_name>=<image_ref>
.
您将此值设置为 scrappercontroller=gcr.io/abiding-robot-255320/scrappercontroller
.
这意味着:"set the image for the 'scrappercontroller' container in my Pods to this image from GCR".
您可以通过 运行 kubectl set image --help
:
Update existing container image(s) of resources.
Possible resources include (case insensitive):
pod (po), replicationcontroller (rc), deployment (deploy), daemonset (ds), replicaset (rs)
Examples:
# Set a deployment's nginx container image to 'nginx:1.9.1', and its busybox container image to 'busybox'.
kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1
# Update all deployments' and rc's nginx container's image to 'nginx:1.9.1'
kubectl set image deployments,rc nginx=nginx:1.9.1 --all
# Update image of all containers of daemonset abc to 'nginx:1.9.1'
kubectl set image daemonset abc *=nginx:1.9.1
# Print result (in yaml format) of updating nginx container image from local file, without hitting the server
kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml
您正在使用 Deployment
object。
Deployments
使用他们的 spec.template
创建 Pods
。
Pods
可以有多个containers
,每个都有一个名字。
此命令将向您显示部署中 Pods 的容器名称:
kubectl get --output=wide deploy/scrapper-config
下面是一个 Deployment
的示例,它使用两个容器创建 Pods
:"myapp" 和 "cool-sidecar"。 (请参阅 CONTAINERS
列。)
kubectl get --output=wide deploy/myapp
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
myapp 1/1 1 0 10m myapp,cool-sidecar nginx,nginx run=myapp
您可以在最后一个参数中使用该容器名称:
'my-container-name=gcr.io/abiding-robot-255320/scrappercontroller'
如果您的 Pods 每个容器只有一个容器,您也可以只使用通配符 (*
):
'*=gcr.io/abiding-robot-255320/scrappercontroller'
希望对您有所帮助