集群信息: 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字段。
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```发布于 2019-07-23 14:24:39
从一开始,就无法自动检测哪些字段是集群特定的,kubectl get [resource] -o yaml将输出资源的当前RESTful状态。但是,您可以使用一些linux来操作集群转储的输出,以获取所需的字段。看看这篇关于媒体的博客文章。
至于“一切资源都重要”,答案是否定的。如果有部署,则不需要replicaSet或pod资源,因为部署一旦部署,就会管理和创建这些资源。您只需要顶级控制器资源(对于守护集和状态集也是如此)。
另外,spec部分中的字段基本上都可以保留,您要删除的值很可能是最初从未设置过的默认值,但是删除它们并没有真正的好处。
https://stackoverflow.com/questions/57103755
复制相似问题