Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes Can';在我使用新的API版本应用yaml之后,我看不到K8s中的变化_Kubernetes_Yaml - Fatal编程技术网

Kubernetes Can';在我使用新的API版本应用yaml之后,我看不到K8s中的变化

Kubernetes Can';在我使用新的API版本应用yaml之后,我看不到K8s中的变化,kubernetes,yaml,Kubernetes,Yaml,我正在将K8s从1.15升级到1.16。在此之前,我必须将我的守护程序、部署、状态集等迁移到apps/v1版本。但是当我这么做的时候,我不理解K8s的行为 假设我们有一个守护程序: apiVersion: apps/v1beta2 kind: DaemonSet metadata: name: spot-interrupt-handler namespace: kube-system spec: selector: matchLabels: app: spot-i

我正在将K8s从1.15升级到1.16。在此之前,我必须将我的守护程序、部署、状态集等迁移到apps/v1版本。但是当我这么做的时候,我不理解K8s的行为

假设我们有一个守护程序:

apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
  name: spot-interrupt-handler
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: spot-interrupt-handler
  template:
    metadata:
      labels:
        app: spot-interrupt-handler
    spec:
      serviceAccountName: spot-interrupt-handler
      containers:
      - name: spot-interrupt-handler
        image: madhuriperi/samplek8spotinterrupt:latest
        imagePullPolicy: Always
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: SPOT_POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
      nodeSelector:
        lifecycle: Ec2Spot
我将第一行更改为apps/v1,并成功地将此yaml应用于K8s。之后没有任何变化,POD不会重新启动。 我收到以下通知:

daemonset.apps/spot-interrupt-handler configured
  • 这是正常的行为吗?在我更改API版本后是否应该重新启动它
  • 然后我想看看,这个API版本的改变是否真的适用于K8s etcd

    kubectl get ds spot-interrupt-handler -n default -o yaml
    
    这就是我在yaml定义开头看到的:

    apiVersion: extensions/v1beta1
    kind: DaemonSet
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"apps/v1","kind":"DaemonSet","metadata":{"annotations":{},"name":"spot-interrupt-handler","namespace":"default"},"spec":{"selector":{"matchLabels":{"app":"spot-interrupt-handler"}},"template":{"metadata":{"labels":{"app":"spot-interrupt-handler"}},"spec":{"containers":[{"env":[{"name":"POD_NAME","valueFrom":{"fieldRef":{"fieldPath":"metadata.name"}}},{"name":"NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}},{"name":"SPOT_POD_IP","valueFrom":{"fieldRef":{"fieldPath":"status.podIP"}}}],"image":"madhuriperi/samplek8spotinterrupt:latest","imagePullPolicy":"Always","name":"spot-interrupt-handler"}],"nodeSelector":{"lifecycle":"Ec2Spot"},"serviceAccountName":"spot-interrupt-handler"}}}}
      creationTimestamp: "2021-02-09T08:34:33Z"
    
  • 为什么扩展/v1beta1位于顶部?我希望它是apps/v1
  • 我明白了,新版本的API是在最后应用的配置中。这是否意味着此守护程序将在升级到1.16后工作

  • 提前感谢

    我在GKE环境中复制了您的设置,在将kubernetes版本从1.15升级到1.16之后,守护程序的
    apiVersion
    已更改为
    apiVersion:apps/v1

    我从GKE版本
    1.15.12
    开始,并应用了您的配置。成功应用后,我将apiVersion更改为
    apps/v1
    extensions/v1beta1
    仍为当前的
    apiVersion

    将kubernetes版本升级到
    version.Info{Major:“1”,Minor:“16+”,GitVersion:“v1.16.15-gke.6000”
    now
    apps/v1中的DS

    为了检查同样的行为是否会再次发生,我创建了一个DS并升级了kubernetes版本,但没有更改apiVersion,并且它本身已更改为
    apps/v1