|NO.Z.00163|——————————|^^ 部署 ^^|——|KuberNetes&服务发布.V14|——|ingress.v02|ingress部署.V01|部署helm|
一、Ingress安装使用
### --- Ingress安装使用
~~~ # 首先安装helm管理工具:
~~~ https://helm.sh/docs/intro/install/
~~~ # 使用helm安装ingress:
~~~ https://kubernetes.github.io/ingress-nginx/deploy/#using-helm


二、安装helm并添加ingress的helm仓库
### --- 安装helm的客户端工具到k8s集群中:https://helm.sh/docs/intro/install/
~~~ 下载helm二进制程序包:
[root@k8s-master01 ~]# wget https://get.helm.sh/helm-v3.5.4-linux-amd64.tar.gz
[root@k8s-master01 ~]# tar -zxvf helm-v3.5.4-linux-amd64.tar.gz
[root@k8s-master01 ~]# mv linux-amd64/helm /usr/local/bin/helm
[root@k8s-master01 ~]# helm version
version.BuildInfo{Version:"v3.5.4", GitCommit:"1b5edb69df3d3a08df77c9902dc17af864ff05d1", GitTreeState:"clean", GoVersion:"go1.15.11"}
### --- 添加ingress的helm仓库(课程讲解的版本已经上传至百度网盘)
[root@k8s-master01 ~]# helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
### --- 查看已经有的helm的仓库
[root@k8s-master01 ~]# helm repo list
NAME URL
ingress-nginx https://kubernetes.github.io/ingress-nginx
### --- 下载ingress的版本包
### --- 下载ingress的helm包至本地
~~~ 查看当前helm下Ingress的版本,建议使用040.2以上的版本;因为0.35在k8s1.9是不太好用的。
[root@k8s-master01 ~]# helm search repo ingress-nginx
NAME CHART VERSION APP VERSION DESCRIPTION
ingress-nginx/ingress-nginx 3.29.0 0.45.0 Ingress controller for Kubernetes using NGINX a...
### --- 第一个ingress-nginx是仓库的名称,第二个ingress-nginx是helm的包名
[root@k8s-master01 ~]# helm pull ingress-nginx/ingress-nginx
### --- 更改对应的配置
[root@k8s-master01 ~]# tar -zxvf ingress-nginx-3.6.0.tgz
三、修改ingress版本包配置参数
### --- 需要修改的位置
[root@k8s-master01 ~]# cd ingress-nginx
### --- helm的配置文件
[root@k8s-master01 ingress-nginx]# vim values.yaml
controller:
image:
repository: registry.cn-beijing.aliyuncs.com/dotbalo/controller # 定义为阿里云的镜像仓库
tag: "v0.40.2"
#digest: sha256:46ba23c3fbaafd9e5bd01ea85b2f921d9f2217be082580edc22e6c704a83f02f //哈希值给去掉
#******省略部分内容**********
hostNetwork: true # 部署ingress的方式推荐使用hostNetwork去部署,hostNetwork是直接使用宿主机的端口号,这样它的性能可能会好一点。
#******省略部分内容**********
dnsPolicy: ClusterFirstWithHostNet # 若是使用hostNetwork的话dns策略是需要更改为ClusterFirstWithHostNet。不然k8s的pod是解析不了k8s内部的service,所以一定要设置成这个
#******省略部分内容**********
kind: DaemonSet # 使用DaemonSet去部署,使用deployment也是可以的,但是使用DaemonSet更受控制,我们可以固定到某个节点上面。这样就可以直接在宿主机上暴露一个端口号,这样k8s外部的集群就可以直接代理到Ingress上面。若是使用Deployment的话,可能需要deploymentservice可能暴露一个notepad,这样性能可能不是很好,推荐使用DaemonSet去部署,DaemonSet在去部署ingress的pod,暴露它的80和443端口,然后在外部的service代理到这个ingress所在的节点上的IP地址和端口号就可以。
nodeSelector:
kubernetes.io/os: linux
ingress: "true" # 我们不是所有节点上都不熟ingress,只有ingress为true这个标签的部署,没有就不用去部署了。
#******省略部分内容**********
resources: # 这个位置是没有更改的,若是在生产环境下建议限制一下,若是专有节点的话,可以不用去限制。它可以占用整个宿主机的资源。这个资源给的大一点,应为它是k8s的入口,占用的资源还是比较多的。
# limits:
# cpu: 100m
# memory: 90Mi
requests:
cpu: 100m
memory: 90Mi
#******省略部分内容**********
type: ClusterIP # 这边不使用LoadBalancer;LoadBalancer是在云环境中会使用到,若是在我们的机房,就不适用LoadBalancer,因为我们是通过Clusetnetwork去部署的,我们直接通过宿主机IP+端口号就可以访问到资源,所以不使用LoadBalancer;若是云环境的话就需要配置。
#******省略部分内容**********
admissionWebhooks: # 是准入控制;若是你的版本过低的话,比如你的版本是0.35的,这个enabled是不能设置为true的,设置为true的话,部署ingress会报错,报错你的证书版本不正确,但是在0.40之后是不会报错的。
annotations: {}
enabled: true
failurePolicy: Fail
# timeoutSeconds: 10
port: 8443
certificate: "/usr/local/certificates/cert"
key: "/usr/local/certificates/key"
namespaceSelector: {}
objectSelector: {}
#******省略部分内容**********
patch:
enabled: true
image:
repository: registry.cn-beijing.aliyuncs.com/dotbalo/kube-webhook-certgen
tag: v1.3.0
pullPolicy: IfNotPresent
### --- 注释详解
~~~ Controller和admissionWebhook的镜像地址,
~~~ 需要将公网镜像同步至公司内网镜像仓库(和课程不一致的版本,
~~~ 需要自行同步gcr镜像的,可以百度查一下使用阿里云同步gcr的镜像,也可以参考这个连接
~~~ https://blog.csdn.net/weixin_39961559/article/details/80739352,
~~~ 或者参考这个连接:
~~~ https://blog.csdn.net/sinat_35543900/article/details/103290782)
~~~ hostNetwork设置为true
~~~ dnsPolicy设置为 ClusterFirstWithHostNet
~~~ NodeSelector添加ingress: "true"部署至指定节点
~~~ 类型更改为kind: DaemonSet
五、部署ingress
### --- 创建namespace
~~~ 部署ingress:给需要部署ingress的节点上打标签;建议Ingress部署在我们创建的namespace上
[root@k8s-master01 ingress-nginx]# kubectl create ns ingress-nginx
namespace/ingress-nginx created
[root@k8s-master01 ingress-nginx]# kubectl get ns
ingress-nginx Active 11s
### --- 为需要部署的宿主机打标签
[root@k8s-master01 ingress-nginx]# kubectl label node k8s-master03 ingress=true //我们在k8s-master03上去部署Ingress,给master03打个label,因为在生产环境下并不是每个节点上都需要部署Ingress的,需要指定节点,哎Ingress的配置文件中匹配这个标签就可以了
node/k8s-master03 labeled
### --- 安装ingress-nginx
~~~ 提示信息可以使用这个例子去创建一个Ingress
[root@k8s-master01 ingress-nginx]# helm install ingress-nginx -n ingress-nginx .
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: example
namespace: foo
spec:
rules:
- host: www.example.com
http:
paths:
- backend:
serviceName: exampleService
servicePort: 80
path: /
# This section is only required if TLS is to be enabled for the Ingress
tls:
- hosts:
- www.example.com
secretName: example-tls
### --- 查看创建的ingress
~~~ 这个pod正在创建过程中,创建完成
[root@k8s-master01 ingress-nginx]# kubectl get po -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-controller-cxtgg 0/1 Running 0 2m9s
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了