ingress主要用来将集群内的http服务暴露到集群外。ingress提供负载均衡,ssl/tls终结和基于名称的虚拟服务器功能。
下图是ingress架构图:
ingress用来暴露http和https服务,如果是其他的服务协议,无法通过ingress进行暴露,需要使用nodeport或者loadbalancer类型的服务。
ingress控制器
要使用配置ingress,需要集群内存在ingress控制器,ingress控制器负责将ingress的定义配置到具体的控制器服务上。kubernetes支持的ingress控制器参考:
https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/
此处我们使用nginx-ingress进行配置和演示,参考下面文档进行安装配置:
https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.3/deploy/static/provider/baremetal/deploy.yaml
kubectl annotate ingressclasses nginx ingressclass.kubernetes.io/is-default-class=true
# 改成LoadBalancer类型
kubectl edit svc -n ingress-nginx ingress-nginx-controller
# 修改deployment
# - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller
# - --enable-ssl-passthrough
kubectl edit deployments.apps -n ingress-nginx ingress-nginx-controller
# 创建测试应用
kubectl apply -f https://github.com/istio/istio/blob/1.11.3/samples/helloworld/helloworld.yaml
ingress
创建ingress资源进行测试。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /hello
pathType: Prefix
backend:
service:
name:…
kubernetes网络 – ingress资源
发布于