在YAML中为Kubernetes服务设置注释的正确方法是什么

在YAML中为Kubernetes服务设置注释的正确方法是什么,kubernetes,yaml,kubernetes-service,Kubernetes,Yaml,Kubernetes Service,我试图在Kubernetes中的服务对象上设置注释,但是由于某种原因(即使k8s主机接受我的请求),注释没有被设置。这是我的YAML文件: --- apiVersion: v1 kind: Service metadata: name: myapp labels: app: myapp annotations: service.beta.kubernetes.io/aws-load-balancer-ssl-cert: 'arn:aws:acm:us-west-2:&

我试图在Kubernetes中的服务对象上设置注释,但是由于某种原因(即使k8s主机接受我的请求),注释没有被设置。这是我的YAML文件:

---
apiVersion: v1
kind: Service
metadata:
  name: myapp
  labels:
    app: myapp
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: 'arn:aws:acm:us-west-2:<redacted>:certificate/<redacted>'
    service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy: 'ELBSecurityPolicy-TLS-1-2-2017-01'
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: 'http'   
    service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: 'app=myapp'
    service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: true
spec:
  type: LoadBalancer
  selector:
    app: myapp-web
  ports:
    - protocol: TCP
      port: 80
      targetPort: 3000
但是,查询对象时不返回任何注释:

[ben@ubuntu simplenexus.com]$ kc get svc myapp -o yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"myapp"},"name":"myapp","namespace":"default"},"spec":{"ports":[{"port":80,"protocol":"TCP","targetPort":3000}],        "selector":{"app":"myapp-web"},"type":"LoadBalancer"}}
  creationTimestamp: "2019-04-11T16:27:45Z"
  labels:
    app: myapp
  name: myapp
  namespace: default
  resourceVersion: "2085328"
  selfLink: /api/v1/namespaces/default/services/myapp
  uid: <redacted>
spec:
  clusterIP: <redacted>
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 32118
    port: 80
    protocol: TCP
    targetPort: 3000
  selector:
    app: myapp-web
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - hostname: <redacted>.us-west-2.elb.amazonaws.com
[ben@ubuntusimplenexus.com]$kc get svc myapp-o yaml
版本:v1
种类:服务
元数据:
注释:
kubectl.kubernetes.io/last-applicated-configuration:|
{“apiVersion”:“v1”,“种类”:“服务”,“元数据”:{“注释”:{},“标签”:{“应用”:“myapp”},“名称”:“myapp”,“命名空间”:“默认”},“规范”:{“端口”:[{“端口”:80,“协议”:“TCP”,“目标端口”:3000}],“选择器”:{“应用”:“myapp web”},“类型”:“负载平衡器”}
creationTimestamp:“2019-04-11T16:27:45Z”
标签:
应用程序:myapp
名称:myapp
名称空间:默认值
资源版本:“2085328”
selfLink:/api/v1/namespace/default/services/myapp
uid:
规格:
集群:
外部流量策略:群集
端口:
-节点端口:32118
港口:80
协议:TCP
目标港:3000
选择器:
应用程序:myapp web
会话相关性:无
类型:负载平衡器
地位:
负载平衡器:
进入:
-主机名:.us-west-2.elb.amazonaws.com
我可以手动设置注释,它们将保持:

[ben@ubuntu simplenexus.com]$ kc annotate svc myapp newannot=success
service/myapp annotated
[ben@ubuntu simplenexus.com]$ kc get svc myapp -o yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"myapp"},"name":"myapp","namespace":"default"},"spec":{"ports":[{"port":80,"protocol":"TCP","targetPort":3000}],        "selector":{"app":"myapp-web"},"type":"LoadBalancer"}}
    newannot: success
  creationTimestamp: "2019-04-11T16:27:45Z"
  labels:
    app: myapp
  name: myapp
  namespace: default
  resourceVersion: "2085328"
  selfLink: /api/v1/namespaces/default/services/myapp
  uid: <redacted>
  ...
[ben@ubuntusimplenexus.com]$kc annotate svc myapp newannot=success
服务/myapp注释
[ben@ubuntusimplenexus.com]$kc get svc myapp-o yaml
版本:v1
种类:服务
元数据:
注释:
kubectl.kubernetes.io/last-applicated-configuration:|
{“apiVersion”:“v1”,“种类”:“服务”,“元数据”:{“注释”:{},“标签”:{“应用”:“myapp”},“名称”:“myapp”,“命名空间”:“默认”},“规范”:{“端口”:[{“端口”:80,“协议”:“TCP”,“目标端口”:3000}],“选择器”:{“应用”:“myapp web”},“类型”:“负载平衡器”}
纽瓦诺:成功
creationTimestamp:“2019-04-11T16:27:45Z”
标签:
应用程序:myapp
名称:myapp
名称空间:默认值
资源版本:“2085328”
selfLink:/api/v1/namespace/default/services/myapp
uid:
...

我做错了吗?在YAML文件中的Kubernetes服务对象上设置注释的正确方法是什么?

事实证明,您不能在注释中使用布尔值,下面是正在进行的操作。注释值必须是字符串,因此需要将值放在括号中进行清理。
“…”

我部署了您的YAML,它与:

    service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: 'true'

试着用一根YAML短绒把它穿过去。也许你的注释值周围的引号是无关的?谢谢你,我可能应该提到我运行了它,并且用Ruby和yaml解析了它,所有解析都与我预期的完全一样。我使用你的
.yaml
,创建了一个服务,并且所有注释都正确创建。你在运行什么kubernetes版本?@EduardoBaitello我正在使用AWS EKS,目前版本为1.11。我的客户机是1.14版。“你认为这会有所不同吗?”自由本当然会。看看:
您必须使用一个kubectl版本,该版本与集群的版本差异很小。例如,v1.2客户机应该与v1.1、v1.2和v1.3主机一起工作。使用最新版本的kubectl有助于避免出现不可预见的问题。
尝试使用1.11客户端。我建议你使用。
    service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: 'true'