Kubernetes Ingress 服务
Ingress服务具体概念请阅读官方文档:https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/
安装部署nginx-ingress
官方的Nginx-ingress对k8s是有版本要求的,注意选择适合你的版本:
1
| https://github.com/kubernetes/ingress-nginx
|

可以直接使用kubernetes官方自带的nginx-ingress控制清单来部署
1 2 3 4
| wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controllerv1.3.0/ deploy/static/provider/kind/deploy.yaml -O nginx-ingress-v1.3.0.yaml
https://github.com/kubernetes/ingress-nginx/archive/refs/tags/controllerv1.3.0.tar.gz
|
修改deploy.yaml镜像源为国内地址


1 2 3 4 5 6
| ---439行 image: registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.3.0 ---546行 image: registry.cn-hangzhou.aliyuncs.com/google_containers/kubewebhook-certgen:v1.1.1 ---595行 image: registry.cn-hangzhou.aliyuncs.com/google_containers/kubewebhook-certgen:v1.1.1
|
node节点增加标签
1
| kubectl label nodes node1 ingress-ready=true
|
应用资源配置
1
| kubectl apply -f deploy.yaml
|
查看创建的资源
1
| kubectl -n ingress-nginx get all
|

创建测试的服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx spec: selector: matchLabels: app: my-nginx template: metadata: labels: app: my-nginx spec: containers: - name: my-nginx image: nginx ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: my-nginx labels: app: my-nginx spec: ports: - port: 80 protocol: TCP name: http selector: app: my-nginx
|
1
| kubectl apply -f my-nginx.yaml
|
创建Ingress规则
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-nginx namespace: default spec: ingressClassName: nginx rules: - host: nginx.k8s.com http: paths: - path: / pathType: ImplementationSpecific backend: service: name: my-nginx port: number: 80
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-nginx namespace: default spec: ingressClassName: nginx # 匹配ingress类型为nginx rules: # 转发规则 - host: nginx.k8s.com # 匹配的域名 http: # 基于http协议解析 paths: # 基于路径进行匹配 - path: / # 匹配/路径 pathType: ImplementationSpecific # 路径类型 backend: # 匹配后跳转的后端服务 service: # 设置后端跳转到Service的配置 name: my-nginx # 跳转到名为my-nginx的clusterIP port: # 跳转到的端口 number: 80 # Service端口号
|
1
| kubectl apply -f my-nginx-ingress.yaml
|
pathType路径类型支持的类型:
1 2 3
| ImplementationSpecific Exact Prefix
|
访问测试
1 2
| 172.16.32.145 nginx.k8s.com
|
