Helm 与常用软件安装
Helm 是 Kubernetes 的包管理工具,类似于 Linux 中的 apt 或 yum,它可以帮我们快速安装、升级和管理复杂的 K8s 应用。
Helm 基础概念
- Chart:Helm 的软件包,包含运行应用所需的所有 K8s 资源定义
- Repository:Chart 的存储仓库
- Release:Chart 在集群中运行的一个实例
- Values:Chart 的配置参数,通过 values.yaml 定制
Helm 安装 ingress-nginx
ingress-nginx 是 Kubernetes 中最常用的 Ingress Controller,下面演示通过 Helm 安装的完整流程。
1. 添加 Helm 仓库
# 添加 ingress-nginx 官方仓库
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
# 添加其他常用仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add stable https://charts.helm.sh/stable
# 更新仓库
helm repo update
# 查看已添加的仓库
helm repo list
2. 搜索和下载 Chart
# 搜索
helm search repo ingress-nginx
# 查看 Chart 信息
helm show chart ingress-nginx/ingress-nginx
helm show values ingress-nginx/ingress-nginx
# 下载并解压(方便自定义配置)
helm pull ingress-nginx/ingress-nginx
tar -zxvf ingress-nginx-*.tgz
cd ingress-nginx
3. 修改 values.yaml
下载 Chart 后,需要根据实际情况修改 values.yaml,关键配置项:
controller:
# 使用 hostNetwork 让 Pod 直接使用宿主机网络
hostNetwork: true
# DNS 策略改为 ClusterFirstWithHostNet(与 hostNetwork 配合使用)
dnsPolicy: ClusterFirstWithHostNet
# 节点选择器:只调度到打了标签的节点
nodeSelector:
ingress: "true"
# 使用 DaemonSet 模式(每个节点运行一个 Pod)
kind: DaemonSet
# 修改镜像地址(如果默认地址无法访问)
image:
registry: registry.aliyuncs.com
repository: google_containers/nginx-ingress-controller
tag: "v1.8.0"
# 保持连接超时设置
config:
keep-alive: 75
keep-alive-requests: 10000
ssl-redirect: "false"
4. 安装
# 创建命名空间
kubectl create ns ingress-nginx
# 给需要运行 Ingress 的节点打标签
kubectl label node <node-name> ingress=true
# 安装 Chart
helm install ingress-nginx -n ingress-nginx ./ingress-nginx
5. 验证安装
# 查看 Pod 状态
kubectl get pods -n ingress-nginx -o wide
# 查看 Service
kubectl get svc -n ingress-nginx
# 测试是否正常工作
curl -I http://localhost
其他常用的 Helm 安装
安装 cert-manager(自动 HTTPS 证书)
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--set installCRDs=true
安装 Prometheus + Grafana(监控)
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# 创建单独的命名空间
helm install kube-prometheus prometheus-community/kube-prometheus-stack \
--namespace monitoring \
--create-namespace
国内镜像加速
由于网络原因,K8s 相关镜像往往无法直接拉取。常用替代方案:
# 阿里云镜像(registry.aliyuncs.com)
image:
registry: registry.aliyuncs.com
repository: google_containers/nginx-ingress-controller
# 或者使用 Docker Hub 的国内镜像
# 修改 Docker 配置
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
sudo systemctl restart docker
Helm 常用命令速查
helm list # 查看已安装的 Release
helm status <release> # 查看 Release 状态
helm upgrade <release> <chart> # 升级 Release
helm rollback <release> <rev> # 回滚到指定版本
helm uninstall <release> # 卸载 Release
helm history <release> # 查看版本历史
总结
Helm 极大地简化了 K8s 应用的安装和管理。掌握 Helm 后,部署 ingress-nginx、cert-manager、Prometheus 等常用组件只需几条命令,配合 values.yaml 自定义配置,就能快速搭建生产可用的 K8s 环境。
Comments | 0条评论