root@k8s-master-u2404-4-100-101:~/ingress_nginx_install# curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml > ingress_nginx.yaml
root@k8s-master-u2404-4-100-101:~/ingress_nginx_install# vim ingress_nginx.yaml
#添加423那一行
418 app.kubernetes.io/instance: ingress-nginx
419 app.kubernetes.io/name: ingress-nginx
420 app.kubernetes.io/part-of: ingress-nginx
421 app.kubernetes.io/version: 1.12.0-beta.0
422 spec:
423 hostNetwork: true
424 containers:
425 - args:
426 - /nginx-ingress-controller
427 - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller
428 - --election-id=ingress-nginx-leader
429 - --controller-class=k8s.io/ingress-nginx
430 - --ingress-class=nginx
#添加403那一行
#添加副本数
399 app.kubernetes.io/version: 1.12.0-beta.0
400 name: ingress-nginx-controller
401 namespace: ingress-nginx
402 spec:
403 replicas: 3
404 minReadySeconds: 0
405 revisionHistoryLimit: 10
406 selector:
## 可选
#365行添加 type: NodePort
#347行修改 externalTrafficPolicy: Cluster
#因为我们有matellb
##将Ingress Controller暴露,一般使用宿主机网络(hostNetwork: true)或者使用NodePort
##HostNetwork (yaml 文件中, 每个containers: 上面添加hostNetwork: true)
##是为了打通Cluster和node的网络,让Cluster直接监听node的端口,一般是80和443,不用再通过随机绑定的nodePort来访问集群服务
##可以看到不再需要随机绑定的nodePort了,因为hostNetwork直接监听集群的80端口
## 可选
#1. maxSkew
# 表示在不同拓扑区域(如节点)之间,Pod 的分布允许的最大偏差。
# 例如,当 maxSkew: 1 时,Kubernetes 会尽量将 Pod 分布均匀,但允许一个拓扑区域的 Pod 数量比另一个多
#2. topologyKey
# 指定拓扑区域的关键字段,定义了 Pod 分布的区域。
# 这里的 kubernetes.io/hostname 表示按照节点名称来分布 Pod。
#3. whenUnsatisfiable
# 指定当无法满足拓扑分布要求时的行为:
# DoNotSchedule:不调度新的 Pod,直到分布约束满足。
# ScheduleAnyway:即使分布约束无法满足,也会调度 Pod。
#当前配置为 ScheduleAnyway,表示即使无法完全均匀分布,也允许调度 Pod。
#4. labelSelector
# 定义了约束适用的 Pod 子集,通过标签选择器筛选。
# 在这里,选择具有标签 kubernetes.io/os=linux 的 Pod。
#pod调度打撒
418 app.kubernetes.io/component: controller
419 app.kubernetes.io/instance: ingress-nginx
420 app.kubernetes.io/name: ingress-nginx
421 app.kubernetes.io/part-of: ingress-nginx
422 app.kubernetes.io/version: 1.12.0-beta.0
423 spec:
424 topologySpreadConstraints:
425 - maxSkew: 1
426 topologyKey: kubernetes.io/hostname
427 whenUnsatisfiable: ScheduleAnyway
428 labelSelector:
429 matchLabels:
430 kubernetes.io/os: linux
431 hostNetwork: true
432 containers:
433 - args:
434 - /nginx-ingress-controller
435 - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller
436 - --election-id=ingress-nginx-leader
root@k8s-master-u2404-4-100-101:~/ingress_nginx_install# kubectl apply -f nginx_server.yaml