4. 安装ingress

本文档详细介绍了如何在Kubernetes集群中安装Ingress Controller,并使用Metallb作为负载均衡器。首先从github获取controller的最新版本,接着修改镜像并创建Ingress-Controller。然后,安装Metallb以实现外部访问,配置ConfigMap指定可用IP范围。最后,确认Ingress-nginx的外部IP,并说明这个IP将用于解析域名,以便外部客户端能访问集群内的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. github 地址 controller-v0.41.2

https://github.com/kubernetes/ingress-nginx/blob/controller-v0.41.2/deploy/static/provider/do/deploy.yaml 
文件重命名->ingress-nginx-controller.yaml

1. 修改镜像

k8s.gcr.io/ingress-nginx/controller:v0.41.2@sha256:1f4f402b9c14f3ae92b11ada1dfe9893a88f0faeb0b2f4b903e2c67a0c3bf0de  
## 替换成
registry.cn-beijing.aliyuncs.com/lingshiedu/ingress-nginx-controller:0.41.2

## 因为k8s.gcr.io的镜像国内没法下载,所以替换成阿里云的镜像

2. 创建Ingress-Controller

kubectl create -f ingress-nginx-controller.yaml

3. 安装Metallb

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/metallb.yaml
# On first install only
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"

说明:为啥要安装metallb?

答案:默认的ingress-controller配置的是Loadbalance模式,而Service后端的Pod是随机分配在Worker节点的,所以需要一个前置的loadbalance将流量转发到后端的ingress-controller,如果是在Cloud环境中部署,可以使用云厂商提供的负载均衡服务替代MetalLb。 此外还可以用NodePort模式,会将Ingress-Controller对应的Service的端口映射到master节点的端口上,然后通过masterip:port的形式访问

参考 https://kubernetes.github.io/ingress-nginx/deploy/baremetal/

4. 添加ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.10.150-192.168.10.155

addresses:是一个可用的ip地址范围,和master(192.168.10.144)节点在一个IP段内

5. 确认Ingress-nginx的external ip

kubectl -n ingress-nginx get svc
# 输出:
NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)                      AGE
ingress-nginx-controller             LoadBalancer   10.108.29.249   192.168.10.150   80:30232/TCP,443:30452/TCP   16h
ingress-nginx-controller-admission   ClusterIP      10.108.47.162   <none>           443/TCP                      16h

192.168.10.150 即Metallb的集群地址,后续将我们需要使用的域名解析到该地址即可

安装了Ingress之后,我们已经打通了Pod->集群外客户端的通道,接下来就可以部署自己的应用了。如果没有具体的应用,可以参考Dashboard的部署。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值