集团网站怎么建设,大连住房和城乡建设官网,想学销售去哪培训,静态网页设计作业成品Kubernetes那点事儿——暴露服务之Ingress 前言一、ingress负载均衡器Ingress Controller路由规则Ingress 二、Ingress Controller三、案例 前言 在 k8s 集群中#xff0c;如果我们将服务暴露出来#xff0c;提供访问#xff0c;可以使用Nodeport方式#xff0c;但是Nodepo… Kubernetes那点事儿——暴露服务之Ingress 前言一、ingress负载均衡器Ingress Controller路由规则Ingress 二、Ingress Controller三、案例 前言 在 k8s 集群中如果我们将服务暴露出来提供访问可以使用Nodeport方式但是Nodeport也有缺点比如端口号用尽只能支持4层的负载均衡。为了弥补Nodeport的不足Ingress应运而生。 一、ingress
Ingress 公开了从集群外部到集群内服务的HTTP和HTTPS路由。流量路由由Ingress资源上定义的规则控制。 下面是一个将所有流量都发送到同一Service的简单Ingress示例 Ingress分为两部分负载均衡器和路由规则 负载均衡器Ingress Controller 路由规则Ingress
# http示例.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: example-ingress
spec:rules:- host: example.ingress.comhttp:paths:- path: /pathType: Prefixbackend: service:name: web-service # serviceName对应service的名称port:number: 80 # servicePort对应service监听端口# https示例.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: tls-example-ingress
spec:tls:- hosts:- sslexample.ctnrs.com secretName: secret-tlsrules:- host: sslexample.ingress.comhttp:paths:- path: /pathType: Prefixbackend: name: web-service # serviceName对应service的名称port:number: 80 # servicePort对应service监听端口二、Ingress Controller
Ingress Controller有很多实现示例采用官方维护的基于Nginx实现的其他还可使用haproxy、lvs等。 Githubhttps://github.com/kubernetes/ingress-nginx 部署kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml
部署Ingress Controller
方案一2次反代 使用DaemonSet部署ingress-controllerds保证集群每个或者部分满足条件的node运行单个pod如果是打算让每个node都跑一个ingress还是部分满足条件节点跑ingress都需要ds这种部署模式ingress-controller需用hostnetwork直接将pod与host共享网命名空间host直接监控pod监听的端口。ingress可以直接转发请求到host。 user - LB - ingress-controller - pod
方案二3次反代
使用Deployment部署ingress-controller再使用service的nodeport方法去暴露ingress-controller与DaemonSet方式部署最大的区别该方式ingress-controller不需要hostnetwork但deployment可能会出现几个ingress都在一个或几个node上这不优雅也不能保证集群高可用。 user - LB - svc(nodePort) - ingress-controller - pod
kubectl apply -f ingress-controller.yamlkubectl get pods -n ingress-nginx -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESnginx-ingress-controller-hdx4b 1/1 Running 0 22m 10.7.7.221 k8s-node1 none nonenginx-ingress-controller-pqkx8 1/1 Running 0 22m 10.7.7.222 k8s-node2 none none因为controller采用DaemonSet模式所以集群每个节点都起一个podmaster节点有taint所以master节点没有pod三、案例
需求一个或多个特定的node上只运行ingress污点标签ds
打污点给node打上污点防止其他pod运行在此node上给ingress打上污点容忍允许pod可以运行在污点node上使用nodeSelector将ingress调度到污点node使用DaemonSet控制器控制每个污点node上都运行一个ingress