K8s v1.23.9使用helm安装ingress controller
- 安装helm
# 我这里是将helm安装到的master节点,所以下面的命令实在master节点执行的,这里最好是直接使用root用户执行。
wget https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz
tar -zxvf helm-v3.7.2-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/
- 指定ingress controller 安装的节点
# 为了便于将集群中的服务暴露到集群外部,需要使用Ingress。
# 接下来使用Helm将ingress-nginx部署到Kubernetes上。
# Nginx Ingress Controller被部署在Kubernetes的边缘节点上。
# 这里的 node 后面跟的是你的节点名称,我这里是使用的master节点
kubectl label node master node-role.kubernetes.io/edge=
# 下载ingress-nginx的helm chart
wget https://github.com/kubernetes/ingress-nginx/releases/download/helm-chart-4.0.13/ingress-nginx-4.0.13.tgz
# 查看ingress-nginx-4.0.13.tgz这个chart的可定制配置
helm show values ingress-nginx-4.0.13.tgz
定制velue.yaml
controller:
ingressClassResource:
name: nginx
enabled: true
default: true
controllerValue: "k8s.io/ingress-nginx"
admissionWebhooks:
enabled: false
replicaCount: 1
image:
# registry: k8s.gcr.io
# image: ingress-nginx/controller
# tag: "v1.1.0"
registry: docker.io
image: unreachableg/k8s.gcr.io_ingress-nginx_controller
tag: "v1.1.0"
digest: sha256:4f5df867e9367f76acfc39a0f85487dc63526e27735fa82fc57d6a652bafbbf6
hostNetwork: true
nodeSelector:
node-role.kubernetes.io/edge: ''
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- nginx-ingress
- key: component
operator: In
values:
- controller
topologyKey: kubernetes.io/hostname
tolerations:
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule
- key: node-role.kubernetes.io/master
operator: Exists
effect: PreferNoSchedule
nginx ingress controller的副本数replicaCount为1,将被调度到master主节点上。这里并没有指定nginx ingress controller service的externalIPs,而是通过hostNetwork: true设置nginx ingress controller使用宿主机网络。 因为k8s.gcr.io被墙,这里替换成unreachableg/k8s.gcr.io_ingress-nginx_controller提前拉取一下镜像:
docker pull unreachableg/k8s.gcr.io_ingress-nginx_controller:v1.1.0
因为这里作者使用的是1.23.9的版本,该版本还可以使用docker,所以作者这里就直接使用的docker作为k8s的运行时!
- 安装并校验运行是否成功
helm install ingress-nginx ingress-nginx-4.0.13.tgz --create-namespace -n ingress-nginx -f values.yaml
# 校验ingress-nginx是否运行成功
kubectl get pod -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-controller-7f574989bc-xwbf4 1/1 Running 0 117s
# 测试访问http://master节点IP,返回默认的nginx 404页,则部署完成。
参考文章、博客:
使用kubeadm部署Kubernetes 1.23
国内环境Ubuntu-20.04安装Kubernetes-1.23.9