首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从现有的kubernetes资源配置中找到不可移植的字段?

如何从现有的kubernetes资源配置中找到不可移植的字段?
EN

Stack Overflow用户
提问于 2019-07-18 23:22:39
回答 1查看 51关注 0票数 1

集群信息: Kubernetes版本: v1.12.8-gke.10关于GCP

问:我现在正在进行应用程序迁移。我要做的就是抓取相关资源的所有配置,然后将它们部署到一个新的集群中。在从shell命令kubectl get <resource> -o yaml获得信息后,我注意到部署的YAML中没有很多信息。

我删除了.spec.clusterIP, .metadata.uid, .metadata.selfLink, .metadata.resourceVersion, .metadata.creationTimestamp, .metadata.generation, .status, .spec.template.spec.securityContext, .spec.template.spec.dnsPolicy, .spec.template.spec.terminationGracePeriodSeconds, .spec.template.spec.restartPolicy字段。

  1. 我不确定是否还有其他字段会影响我需要删除的新部署?
  2. 有没有办法找到我可以删除的所有不可移植的字段?
  3. 另一个问题是:所有相关资源都重要吗?现在,我只需从kubectl api-resources获取一个资源列表,然后逐个获取它们的信息。我应该忽略一些资源,比如ReplicaSet来迁移整个应用程序吗?

例如,nginx部署的输出配置如下所示:

代码语言:javascript
复制
  kind: Deployment
  metadata:
    annotations:
      deployment.kubernetes.io/revision: "1"
    creationTimestamp: "2019-07-16T21:55:39Z"
    generation: 1
    labels:
      app: nginx
    name: nginx-deployment
    namespace: default
    resourceVersion: "1482081"
    selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginx-deployment
    uid: 732377ee-a814-11e9-bbe9-42010a8a001a
  spec:
    progressDeadlineSeconds: 600
    replicas: 2
    revisionHistoryLimit: 10
    selector:
      matchLabels:
        app: nginx
    strategy:
      rollingUpdate:
        maxSurge: 25%
        maxUnavailable: 25%
      type: RollingUpdate
    template:
      metadata:
        creationTimestamp: null
        labels:
          app: nginx
      spec:
        containers:
        - image: nginx:1.7.9
          imagePullPolicy: IfNotPresent
          name: nginx
          ports:
          - containerPort: 80
            protocol: TCP
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
        dnsPolicy: ClusterFirst
        restartPolicy: Always
        schedulerName: default-scheduler
        securityContext: {}
        terminationGracePeriodSeconds: 30
  status:
    availableReplicas: 2
    conditions:
    - lastTransitionTime: "2019-07-16T21:55:41Z"
      lastUpdateTime: "2019-07-16T21:55:41Z"
      message: Deployment has minimum availability.
      reason: MinimumReplicasAvailable
      status: "True"
      type: Available
    - lastTransitionTime: "2019-07-16T21:55:39Z"
      lastUpdateTime: "2019-07-16T21:55:41Z"
      message: ReplicaSet "nginx-deployment-5c689d88bb" has successfully progressed.
      reason: NewReplicaSetAvailable
      status: "True"
      type: Progressing
    observedGeneration: 1
    readyReplicas: 2
    replicas: 2
    updatedReplicas: 2```
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-23 14:24:39

从一开始,就无法自动检测哪些字段是集群特定的,kubectl get [resource] -o yaml将输出资源的当前RESTful状态。但是,您可以使用一些linux来操作集群转储的输出,以获取所需的字段。看看这篇关于媒体的博客文章

至于“一切资源都重要”,答案是否定的。如果有部署,则不需要replicaSet或pod资源,因为部署一旦部署,就会管理和创建这些资源。您只需要顶级控制器资源(对于守护集和状态集也是如此)。

另外,spec部分中的字段基本上都可以保留,您要删除的值很可能是最初从未设置过的默认值,但是删除它们并没有真正的好处。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57103755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档