对kubernetes来说是新的。 Helm2和3之间的文档和示例差异让我感到困惑。
我通过stable/nginx-ingress
安装了helm install app-name stable/nginx-ingress
图表。
第一个问题:
我需要将externalTrafficPolicy
更新为Local
。后来我了解到,可以在安装过程中通过将--set controller.service.externalTrafficPolicy=Local
添加到helm命令中来进行设置。
如何在不删除入口控制器并重新安装的情况下用新设置更新LoadBalancer服务?
第二个问题:
Helm3刚刚下载并设置了入口控制器,但未在本地保存任何内容。有没有办法备份我所有的k8s集群配置(不是我手动创建的配置)?
是否有办法备份我所有的k8s群集配置
kubectl cluster-info dump
显示了有关k8s集群的一些信息。/etc/kubernetes/
。我已经能够使用以下bash脚本转储k8s中所有命名空间中所有资源的清单,请根据需要进行编辑:
#!/usr/bin/env bash
while read -r line
do
output=$(kubectl get "$line" --all-namespaces -o yaml 2>/dev/null | grep '^items:')
if ! grep -q "\[\]" <<< $output; then
echo -e "\n======== "$line" manifests ========\n"
kubectl get "$line" --all-namespaces -o yaml
fi
done < <(kubectl api-resources | awk '{print $1}' | grep -v '^NAME')
以上bash脚本已通过以下方式测试:
v1.16.3
18.04.3
OSversion 4.4.20(1)-release (x86_64-pc-linux-gnu)
[我建议不要使用现有k8s群集的转储/清单来创建新的k8s群集,仅将其称为备份,并使用Kubeadm之类的安装程序来重新安装k8s。
我对Helm2和3之间的文档和示例差异感到困惑。
[如果您有兴趣,请检查helm-2to3工具-使用helm 2to3 move config
之类的命令将配置和数据从头盔2迁移到头盔3。
升级和转储已部署的YAML(用于入口版本的备份)
helm upgrade <your-release-name> stable/nginx-ingress \
--reuse-values \
--set controller.service.externalTrafficPolicy=Local \
--output yaml
对于公共图表,您可能需要将--version
选项设置为所使用图表的现有安装版本。如果您不想与该设置一起应用较新版本的任何更新。
有关完整的转储,请浏览this github issue。所有选项在边缘情况下都有些闪避。我建议从git之类的所有东西重新部署,从集群到应用程序。任何手动编辑的人都可以被射杀(嗯。至少要定期重新部署群集:)