Helm介绍及使用

今天我来简单介绍 kubernetes 生态中一个重要一环-包管理工具 Helm。 介绍 Helm 是 Kubernetes 的开源包管理器。它提供了提供、共享和使用为 Kubernetes 构建的软件的能力。 Helm 于 2015 年在 Deis 创建,后来被微软收购。现在称为 Helm Classic 的是在当年 11 月的首届 KubeCon 上推出的。2016 年 1 月,Helm Classic 与谷歌的 Kubernetes 部署管理器合并到现在是 Helm 主要项目的存储库中。 该项目目前拥有超过 30,000 个 GitHub stars,每月从全球获得超过 200 万次下载。2020 年 4 月,Helm 在 CNCF 中获得毕业。 安装 Helm 二进制安装 1 打开 https://github.com/helm/helm/releases , 下载你需要的版本 2 解压安装包 3 将文件夹中的 helm 二进制文件移动到相应的位置 脚本安装 helm 官方提供了一个安装的脚本: 1 2 3 $ curl -fsSL -o get_helm....

February 4, 2023 · 3 min · overstarry

Kubernetes Configmaps mounted with subPath not update when changed

起因 最近在使用 k8s 部署应用时,我使用 ConfigMaps 的方式来挂载应用的配置文件。在我的知识储备中,k8s 修改 cm 的内容,pod 里的配置文件应该也会同步更新才是,但是我进入 pod , 发现配置还是旧版本没有更新,需要重启 pod 才会生效。 问题 那为什么配置没有及时更新呢? 通过查阅资料,我发现使用 subPath 挂载的容器不会接收到配置更新。这是为什么呢,相比于没有使用 subPath 有什么区别呢? subPath 使用了符号链接的方式挂载文件,容器内的文件是一个链接到存储在一个隐藏的带有时间戳目录中的同名文件。当 configMaps 更新时,符号链接会更新,但挂载在容器中的文件绑定保持不变。 解决 使用 path字段为特定 ConfigMap 项指定所需的文件路径 具体如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 apiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: registry.k8s.io/busybox command: [ "/bin/sh","-c","cat /etc/config/keys" ] volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: special-config items: - key: SPECIAL_LEVEL path: keys restartPolicy: Never 亲测这样是可以正常更新的,但同目录下的其它文件会删除掉,看了几个相关的 issues , 发现你还可以手动创建符号链接到相应的文件夹,...

October 2, 2022 · 1 min · overstarry

K8s_Finalizers

起因 在我们日常使用 k8s 中,可能会遇到这样的情况:在删除 namespace 时,往往会遇到资源没有被删除的情况,资源处于 terminating 的状态,这时我们该如何解决了,寻找到的解决方法往往是如下: 1 运行以下命令查看处于 terminating 状态的资源(这里以namespace 为例): kubectl get namespaces 2 选择一个Terminating namespace,并查看namespace 中的finalizer。运行以下命令: kubectl get namespace <terminating-namespace> -o yaml 得到类似这样的信息: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 apiVersion: v1 kind: Namespace metadata: creationTimestamp: "2021-01-20T15:18:06Z" deletionTimestamp: "2021-01-21T02:50:02Z" name: <terminating-namespace> resourceVersion: "3249493" selfLink: /api/v1/namespaces/knative-eventing uid: f300ea38-c8c2-4653-b432-b66103e412db spec: finalizers: - kubernetes status: phase: Terminating 3 导出json格式到tmp.json: kubectl get namespace <terminating-namespace> -o json > tmp....

January 23, 2022 · 1 min · overstarry

Kubernetes安装APISIX

今天介绍如何在 k8s 上安装 APISIX 相关组件(Apache APISIX、Apache APISIX Dashboard、Apache APISIX Ingress Controller)。 Apache APISIX 由于 APISIX helm 组件将相关组件集合在一起了,所以只要装一个就好了。 安装步骤 前提 要创建好相应的 PV . 命令 1 2 3 helm repo add apisix https://charts.apiseven.com helm repo update helm install apisix apisix/apisix --set gateway.type=NodePort --set ingress-controller.enabled=true --set dashboard.enabled=true --set etcd.volumePermissions.enabled=true --namespace ingress-apisix 如果看到如下信息并且执行 kubectl get pods -n ingress-apisix 就表示 apisix 安装成功。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 NNAME: apisix LAST DEPLOYED: Wed Oct 27 03:00:23 2021 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: 1....

October 27, 2021 · 1 min · overstarry

设置Rancher服务器的本地Kubernetes集群

本篇文章介绍如何在 k8s集群上安装rancher。 前提 需要安装 kubectl 和 helm。 安装 Rancher Helm Chart 添加 helm chart 仓库 使用 helm repo add rancher-<CHART_REPO> https://releases.rancher.com/server-charts/<CHART_REPO> 添加 helm 仓库。 请将命令中的<CHART_REPO>,替换为latest,stable或alpha。更多信息,请查看选择 Rancher 版本来选择最适合您的仓库。 latest: 建议在尝试新功能时使用。 stable: 建议在生产环境中使用。(推荐) alpha: 未来版本的实验性预览。 创建Namespace 创建一个名为 cattle-system 的Namespace。 1 kubectl create namespace cattle-system 安装 cert-manager 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # 如果你手动安装了CRD,而不是在Helm安装命令中添加了`--set installCRDs=true`选项,你应该在升级Helm chart之前升级CRD资源。 kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.1/cert-manager.crds.yaml # 添加 Jetstack Helm 仓库 helm repo add jetstack https://charts....

October 26, 2021 · 1 min · overstarry