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 个问题。

  1. 部署中的 apiversion 是 apps/v1beta 根据文档,它需要是 apps/v1。 https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
  2. 有些地方没有在部署中提及选择器,这就是部署未创建的原因,您可能需要修复它。详细来说,部署(规范部分)中的选择器必须与服务(元数据)的标签相匹配。以下是来自上述项目的 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