【问题标题】:Deployment in version "v1" cannot be handled as a Deployment:版本“v1”中的部署不能作为部署处理:
【发布时间】:2020-02-14 00:18:42
【问题描述】:

helm 安装失败并出现以下错误

命令

helm install --name helloworld helm

下面是我运行上面命令后的错误

Error: release usagemetrics failed: Deployment in version "v1" cannot be handled as a Deployment: v1.Deployment.Spec: v1.DeploymentSpec.Template: v1.PodTemplateSpec.Spec: v1.PodSpec.Containers: []v1.Container: v1.Container.LivenessProbe: readObjectStart: expect { or n, but found 9, error found in #10 byte of ...|ssProbe":9001,"name"|..., bigger context ...|"imagePullPolicy":"IfNotPresent","livenessProbe":9001,"name":"usagemetrics-helm","ports":[{"containe|...

下面是deployment.yaml文件,我觉得活性和探测配置有问题。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: release-name-helm
spec:
  replicas: 1
  selector:
    matchLabels:
      app: release-name-helm
      release: release-name
  template:
    metadata:
      labels:
        app: release-name-helm
        release: release-name
    spec:
      containers:
        - name: release-name-helm
          imagePullPolicy: IfNotPresent
          image: hellworld
          ports:
            - name: "http"
              containerPort: 9001
          envFrom:
            - configMapRef:
                name: release-name-helm
            - secretRef:
                name: release-name-helm
          livenessProbe:
            9001
          readinessProbe:
            9001

【问题讨论】:

    标签: kubernetes kubernetes-helm kubernetes-deployment


    【解决方案1】:

    问题似乎与livenessProbereadynessProbe 都错误有关。

    文档here 中http 的livenessProbe 示例是:

    livenessProbe
    
      httpGet:
        path: /healthz
        port: 8080
        httpHeaders:
          - name: Custom-Header
            value: Awesome
        initialDelaySeconds: 3
        periodSeconds: 3
    

    如果你只想检查端口,你的 yamls 应该是这样的:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: release-name-helm
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: release-name-helm
          release: release-name
      template:
        metadata:
          labels:
            app: release-name-helm
            release: release-name
        spec:
          containers:
            - name: release-name-helm
              imagePullPolicy: IfNotPresent
              image: hellworld
              ports:
                - name: "http"
                  containerPort: 9001
              envFrom:
                - configMapRef:
                    name: release-name-helm
                - secretRef:
                    name: release-name-helm
              livenessProbe:
                tcpSocket:
                  port: 9001
                initialDelaySeconds: 5
                periodSeconds: 10
              readinessProbe:
                tcpSocket:
                  port: 9001
                initialDelaySeconds: 5
                periodSeconds: 10
    

    【讨论】:

    • 因为你已经在ports 中命名了你的端口,在livenessProbereadinessProbeport 部分你可以使用http(端口的名称)而不是9001 .
    猜你喜欢
    • 2021-09-15
    • 2019-12-05
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2018-12-24
    • 2021-06-13
    相关资源
    最近更新 更多