Docker 尝试部署投票应用程序时将 YAML 转换为 JSON 的桌面错误
Docker Desktop error converting YAML to JSON while trying to deploy the voting app
我正在使用 Docker 桌面到 运行 投票应用程序,我正在关注 tutorial 命令行中的 link 已弃用:
kubectl apply -f https://raw.githubusercontent.com/docker/docker-birthday/master/resources/kubernetes-docker-desktop/vote.yaml
所以我尝试使用此存储库中的 link :
kubectl apply -f https://github.com/dockersamples/docker-fifth-birthday/blob/master/kubernetes-desktop/kube-deployment.yml
但是这个错误不断出现:
error: error parsing https://github.com/dockersamples/docker-fifth-birthday/blob/master/kubernetes-desktop/kube-deployment.yml: error converting YAML to JSON: YAML: line 92: mapping values are not allowed in this context
---
apiVersion: v1
kind: Service
metadata:
name: result
labels:
app: result
spec:
type: LoadBalancer
ports:
我做错了什么?
我尝试将文件获取到我的本地以执行,但使用 wget https://github.com/dockersamples/docker-fifth-birthday/blob/master/kubernetes-desktop/kube-deployment.yml 得到了与 92 行相同的错误。但是,我尝试只做了 copy/paste 的内容,它创建的服务很好,但是项目有 2 个问题。
- 部署中的 apiversion 是 apps/v1beta 根据文档,它需要是 apps/v1。 https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
- 有些地方没有在部署中提及选择器,这就是部署未创建的原因,您可能需要修复它。详细来说,部署(规范部分)中的选择器必须与服务(元数据)的标签相匹配。以下是来自上述项目的 service/deployment 的工作版本。
你为什么要这么做?每个部署都将 运行 一组 pods,它将维护一组相同的 pods,确保它们具有正确的配置和正确的编号,并且要访问这些,您将公开一个服务。这些服务将根据这些标签查找部署。
如果你正在寻找学习material,你可以查看下面的官方文档。
https://kubernetes.io/docs/tutorials/kubernetes-basics/deploy-app/deploy-interactive/
---
apiVersion: v1
kind: Service
metadata:
labels:
app: redis
name: redis
spec:
clusterIP: None
ports:
- name: redis
port: 6379
targetPort: 6379
selector:
app: redis
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: redis
labels:
app: redis
spec:
selector:
matchLabels:
app: redis
replicas: 1
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis:alpine
ports:
- containerPort: 6379
name: redis
我正在使用 Docker 桌面到 运行 投票应用程序,我正在关注 tutorial 命令行中的 link 已弃用:
kubectl apply -f https://raw.githubusercontent.com/docker/docker-birthday/master/resources/kubernetes-docker-desktop/vote.yaml
所以我尝试使用此存储库中的 link :
kubectl apply -f https://github.com/dockersamples/docker-fifth-birthday/blob/master/kubernetes-desktop/kube-deployment.yml
但是这个错误不断出现:
error: error parsing https://github.com/dockersamples/docker-fifth-birthday/blob/master/kubernetes-desktop/kube-deployment.yml: error converting YAML to JSON: YAML: line 92: mapping values are not allowed in this context
---
apiVersion: v1
kind: Service
metadata:
name: result
labels:
app: result
spec:
type: LoadBalancer
ports:
我做错了什么?
我尝试将文件获取到我的本地以执行,但使用 wget https://github.com/dockersamples/docker-fifth-birthday/blob/master/kubernetes-desktop/kube-deployment.yml 得到了与 92 行相同的错误。但是,我尝试只做了 copy/paste 的内容,它创建的服务很好,但是项目有 2 个问题。
- 部署中的 apiversion 是 apps/v1beta 根据文档,它需要是 apps/v1。 https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
- 有些地方没有在部署中提及选择器,这就是部署未创建的原因,您可能需要修复它。详细来说,部署(规范部分)中的选择器必须与服务(元数据)的标签相匹配。以下是来自上述项目的 service/deployment 的工作版本。
你为什么要这么做?每个部署都将 运行 一组 pods,它将维护一组相同的 pods,确保它们具有正确的配置和正确的编号,并且要访问这些,您将公开一个服务。这些服务将根据这些标签查找部署。
如果你正在寻找学习material,你可以查看下面的官方文档。 https://kubernetes.io/docs/tutorials/kubernetes-basics/deploy-app/deploy-interactive/
---
apiVersion: v1
kind: Service
metadata:
labels:
app: redis
name: redis
spec:
clusterIP: None
ports:
- name: redis
port: 6379
targetPort: 6379
selector:
app: redis
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: redis
labels:
app: redis
spec:
selector:
matchLabels:
app: redis
replicas: 1
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis:alpine
ports:
- containerPort: 6379
name: redis