我试图将我的应用程序部署到运行在谷歌容器中的Kubernetes 引擎。

该应用程序可以在https://github.com/Industrial/docker-znc上找到。

Dockerfile内置于谷歌容器注册表上的映像中。

我已经通过+按钮在Kubernetes中部署了应用程序。我没有YAML 对于这个。

我已经在Kubernetes中插入了一个Secret,用于应用程序所需的PEM文件。

如何获得由创建的部署、服务和Pod的YAML Kubernetes通过填写表格? 我如何把秘密进入我的豆荚使用?


当前回答

我们可以使用下面的命令获取已部署资源的yaml。

kubectl get <resource name> -o yaml

                OR
kubectl get <resource name> <name of pod> -o yaml

例子:-

  kubectl get deploy Nginx -o yaml

以上命令将为您提供yaml输出。

如果您想将输出存储到任何文件中,可以使用以下命令。

kubectl get pod nginx -o yaml > Nginx-pod.yaml

上面的命令会将输出重定向到Nginx-pod。Yaml在您的当前目录。

其他回答

也可以使用view-last-applied命令。

kubectl apply view-last-applied services --all > services.yaml

它将返回用于创建服务的所有清单。此外,您还可以通过services/resource-name标签指定某个k8资源。

下面的代码将一次性提取所有K8s定义,并将它们放在当前文件夹下面的单独文件夹中。

for OBJ in $(kubectl api-resources --verbs=list --namespaced -o name)
do
   for DEF in $(kubectl get --show-kind --ignore-not-found $OBJ -o name)
   do
      mkdir -p $(dirname $DEF)
      kubectl get $DEF -o yaml \
      | yq eval 'del(.metadata.resourceVersion, .metadata.uid, .metadata.annotations, .metadata.creationTimestamp, .metadata.selfLink, .metadata.managedFields)' - > $DEF.yaml 
   done
done

要获得所有yaml文件部署的备份(不是特定的部署):

kubectl get deployments -n <namespace> -o yaml > deployments.yaml

对于获得所有yaml文件服务备份(不是特定部署):

kubectl get services -n <namespace> -o yaml > services.yaml

享受它。

如上所述,“——export”是获取与kubeernetes对象对应的清单的一个选项 但是"——export"被认为是有bug的,有人建议弃用它 目前更好的选择是执行"-o yaml"或"-o json"并删除不必要的字段 主要的区别是“——export”被期望删除集群特定的设置(例如k8s服务的集群服务IP)。但在这方面,它被发现是不一致的

如果您有读访问权限,我们可以通过命令行从Kubernetes集群中获取与任何类型相关的内容。

kubectl get <kind> <kindname> -n <namespace> -o <yaml or json>

例如,如果希望从名称空间导出部署,请执行以下命令-

kubectl get deploy mydeploy -n mynamespace -o yaml > mydeploy.yaml

kubectl get deploy mydeploy -n mynamespace -o json > mydeploy.json