ingress介绍
- Node(节点): kubernetes集群中的一台虚拟机或物理机。
- Cluster(集群): 一组与因特网通过隔离的节点,他们是是Kubernetes管理的主要计算资源。
- Edge router(边界路由器): 为您的集群强制执行防火墙策略的路由器。这可以是由云提供商管理的网关,也可以是物理硬件。
- Cluster network(集群网络): 根据Kubernetes网络模型,促进集群内通信的一组逻辑上的或物理上的链路。
- Service(服务): 一种Kubernetes服务,它使用标签选择器标识一组pod。除非另有说明,否则假定服务只有在集群网络中可路由的虚拟ip。
什么是ingress
ingress(在kubernetes v1.1时添加)暴露从集群外到集群内服务的HTTP
或HTTPS
路由。定义在ingress
资源上的规则控制流量的路由。
ingress实操
官网下载ingress-nginx部署所需资源清单,修改镜像get地址为本地harbor仓库。
vim deploy.yaml
##修改镜像文件路径harber仓库减少拉取时间
324 image: ingress-nginx/controller:v0.48.1
589 image: ingress-nginx/kube-webhook-certgen:v1.5.1
637 image: ingress-nginx/kube-webhook-certgen:v1.5.1
[root@server2 ingress]# kubectl apply -f deploy.yaml
[root@server2 ingress]# kubectl get ns
查看生成的namespace状态
[root@server2 ingress]# kubectl -n ingress-nginx get all
查看ingress-nginx的所有信息,可以看到ingress-nginx-controller已经running
[root@server2 ingress]# kubectl -n ingress-nginx get svc
##查看svc暴露端口
域名访问+ingress-nginx
[root@server2 ingress]# cat svc.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
ports:
- protocol: TCP
port: 80
targetPort: 80
selector:
app: nginx
---
apiVersion: v1
kind: Service
metadata:
name: myapp-svc
spec:
ports:
- protocol: TCP
port: 80
targetPort: 80
selector:
app: myapp
拉起服务并查看endpoint
[root@server2 ingress]# kubectl get svc
[root@server2 ingress]# kubectl describe svc nginx-svc
\
修改svc配置文件为负载均衡
查看修改内容
[root@server2 ingress]# kubectl -n ingress-nginx get svc
可以通过此方式动态分配IP,而不是占用主机资源
为标签为nginx-svc myapp-svc的deployment添加服务
[root@server2 ingress]# cat svc.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
ports:
- protocol: TCP
port: 80
targetPort: 80
selector:
app: nginx
---
apiVersion: v1
kind: Service
metadata:
name: myapp-svc
spec:
ports:
- protocol: TCP
port: 80
targetPort: 80
selector:
app: myapp
配置服务与ingress连接,并给定域名
[root@server2 ingress]# cat ingress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-nginx
spec:
rules:
- host: www1.westos.org
http:
paths:
- path: /
backend:
serviceName: nginx-svc
servicePort: 80
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-myapp
spec:
rules:
- host: www2.westos.org
http:
paths:
- path: /
backend:
serviceName: myapp-svc
servicePort: 80
添加本地解析
[root@foundation8 2]# vim /etc/hosts
172.25.8.11 www1.westos.org www2.westos.org
测试负载均衡
结束