我正在尝试将我的应用部署到 Google容器中运行的 Kubernetes 发动机
该应用可在以下位置找到:https://github.com/Industrial/docker-znc。
Dockerfile 内置于 Google容器注册表上的图片中。
我已经通过+按钮在 Kubernetes 中部署了应用程序。我没有YAML 对此。
我已在 Kubernetes 中为应用程序所需的PEM文件插入 Secret 。
答案 0 :(得分:84)
获取部署的yaml(服务,pod,secret等):
kubectl get deploy deploymentname -o yaml --export
答案 1 :(得分:4)
既然 --export
已被弃用,要以“原始”格式从您的资源中获取输出(刚刚清理,没有有关当前对象状态的任何信息(在这种情况下是不必要的元数据)),您可以执行以下操作以下使用 yq
v4.x
:
kubectl get <resource> -n <namespace> <resource-name> -o yaml \
| yq eval 'del(.metadata.resourceVersion, .metadata.uid, .metadata.annotations, .metadata.creationTimestamp, .metadata.selfLink, .metadata.managedFields)' -
答案 2 :(得分:4)
从kubernetes下载yaml的语法
kubectl get [资源类型] -n [名称空间] [资源名称] -o yaml> [新文件名]
从运行的pod中创建yaml文件:
从运行的pod中创建副本集Yaml文件:
从运行的pod中创建部署Yaml文件:
答案 3 :(得分:3)
关于秘密的第二个问题,这是来自k8s文档。有关详情,请参阅https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets。
我已经使用过它并且工作正常。
答案 4 :(得分:2)
使用此命令获取服务的Yaml格式
kubectl get service servicename -o yaml
您也可以将其放入某些文件中
kubectl get service servicename -o yaml >service.yaml
答案 5 :(得分:1)
要获取所有 yaml 文件部署备份(不是特定部署):
kubectl get deployments -n <namespace> -o yaml > deployments.yaml
用于获取所有 yaml 文件服务备份(不是特定部署):
kubectl get services -n <namespace> -o yaml > services.yaml
享受吧。
答案 6 :(得分:1)
也可以使用 view-last-applied 命令,例如
kubectl apply view-last-applied services --all > services.yaml
将返回所有应用于创建服务的清单。您也可以通过 services/resource-name 标签指定某个 k8 资源。
答案 7 :(得分:1)
如何获取由以下人员创建的Deployment,Service和Pod的YAML: 通过填写表格来使用Kubernetes吗?
kubectl get deployment,service,pod yourapp -o yaml --export
回答@Sinaesthetic问题:
您知道如何针对整个群集(所有部署)执行此操作吗?
kubectl get deploy --all-namespaces -o yaml --export
此方法的问题是 export 不包含名称空间。因此,如果您想同时导出许多资源,建议您按名称空间进行操作:
kubectl get deploy,sts,svc,configmap,secret -n default -o yaml --export > default.yaml
不幸的是,kubernetes still doesn't support是真正的全部获取命令,因此您需要手动列出要导出的资源类型。您可以使用
获取资源类型列表kubectl api-resources
答案 8 :(得分:0)
讨论了同一问题at kubernetes GitHub issues page,用户“ alahijani”制作了一个bash脚本,该脚本导出所有yaml并将它们写入单个文件和文件夹。
由于此问题在Google上排名很高,并且由于我发现该解决方案非常好,所以在这里代表它。
Bash脚本将Yaml导出到子文件夹:
for n in $(kubectl get -o=name pvc,configmap,serviceaccount,secret,ingress,service,deployment,statefulset,hpa,job,cronjob)
do
mkdir -p $(dirname $n)
kubectl get -o=yaml --export $n > $n.yaml
done
另一个用户“ acondrat”制作了一个不使用目录的脚本,这使得以后制作kubectl apply -f
很容易。
Bash脚本将Yaml导出到当前文件夹:
for n in $(kubectl get -o=name pvc,configmap,ingress,service,secret,deployment,statefulset,hpa,job,cronjob | grep -v 'secret/default-token')
do
kubectl get -o=yaml --export $n > $(dirname $n)_$(basename $n).yaml
done
最后一个脚本不包括服务帐户。
答案 9 :(得分:0)
如果您需要查看和编辑文件,请使用:
COUNT(DISTINCT PRODUCT_TYPE)
答案 10 :(得分:0)
您可以使用此命令获取资源的yaml文件
kubectl -n <namespace> get <resource type> <resource Name> -o yaml
要将秘密带入您的吊舱,
使用类似这样的东西
env
- valueFrom
secretKeyRef:
name: secret_name
key: key_name
或
envFrom
- secretRef:
name: secret_name
答案 11 :(得分:0)
我知道答案太老了,但希望有人会觉得有帮助。
我们可以尝试使用以下命令从所有命名空间中获取一种导出-
kubectl get <kind> --all-namespaces --export -o yaml
答案 12 :(得分:0)
与@Janos Lenart的答案只有微小的区别!
kubectl get deploy deploymentname -o yaml > outputFile.yaml
会
答案 13 :(得分:0)
kubectl -n <namespace> get <resource type> <resource Name> -o yaml
使用上述命令,可以以YAML
格式导出Kubernetes中定义的任何资源。
答案 14 :(得分:0)
以下代码将一次提取所有 K8s 定义并将它们放在当前文件夹下的各个文件夹中。
{{1}}
答案 15 :(得分:0)
答案 16 :(得分:0)
您可以尝试使用 kube-dump bash 脚本
使用此实用程序,您可以将 Kubernetes 集群资源保存为纯 yaml 清单,而无需不必要的元数据。
答案 17 :(得分:0)
如果您有读取权限,我们可以通过命令行从 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