gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:34:13 25 4
gpt4 key购买 nike

集群信息:
Kubernetes版本:GCP上的v1.12.8-gke.10

题:
我正在进行应用程序迁移。我要做的是获取相关资源的所有配置,然后将它们部署到新集群中。从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字段。

  • 我不确定还有其他字段会影响我需要删除的新部署吗?
  • 是否可以找到我可以删除的所有非便携式字段?
  • 另一个问题是:所有相关资源重要吗?现在,我只是从kubectl api-resources中获取资源列表,然后逐一获取它们的信息。我应该忽略诸如ReplicaSet之类的资源来迁移整个应用程序吗?

  • 例如,nginx部署的输出配置将类似于:
      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```

    最佳答案

    马上,就无法自动检测哪些字段是特定于群集的,kubectl get [resource] -o yaml正在输出资源的当前RESTful状态。但是,您可以使用一些Linux bash来操纵群集转储的输出,以获取所需的字段。看一看this blog post on medium

    至于“所有资源都重要”,答案是否定的。如果您有部署,则不需要copysetSet或pod资源,因为部署将在部署后对其进行管理和创建。您只需要顶级 Controller 资源(对于守护程序集和状态集也是如此)。

    另一方面,spec部分中的字段几乎都可以保留,要删除的值可能是您最初从未设置的默认值,但是删除它们并没有真正的好处。

    关于kubernetes - 如何从现有的kubernetes资源配置中查找不可移植的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57103755/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com