前言
这一期实战一下K8S中Ingress Controller的安装和Ingress配置,Ingress Controller有很多种,我这里使用的是Ingress-Nginx,先体验一下整个配置到实现访问的过程吧!
简介
K8S集群在发布应用时,配置的端口有以下几种:port、targetPort、nodePort,自我理解分别是容器暴露出可以供容器之间互相访问的端口、容器内应用需要暴露的端口、暴露给宿主机ip可以访问的端口。为了外部域名访问时能给自动实现负载均衡的访问各个Pod,最好还是使用Ingress Controller来管理访问的接入。
环境
- K8S版本:v1.21.0
- Nginx-Ingress版本:1.9.1
安装Ingress Controller(Nginx-Ingress)
Pod等相关配置
执行如下命令,其中包含诸多Nginx-Ingress服务相关K8S配置1
kubectl apply -f https://kuboard.cn/install-script/v1.21.x/nginx-ingress.yaml
Service配置
编写ingress-svc.yml文件:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: nginx-ingress
name: nginx-ingress
namespace: nginx-ingress
spec:
type: NodePort
ports:
- port: 8880
targetPort: 80
nodePort: 31280
selector:
app: nginx-ingress
创建Service1
kubectl apply -f ingress-svc.yml
后续可以通过新增或修改Ingress规则,即可动态更新Nginx-Ingress服务中的配置了。
配置一个Ingress规则
下面以发布一个tomcat对外的ingress规则为例。
编写ingress规则文件my-ingress-tomcat.yml:1
2
3
4
5
6
7
8
9
10
11
12
13apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress-tomcat
spec:
rules:
- host: tomcat.yourdomain.com
http:
paths:
- path: /
backend:
serviceName: my-tomcat
servicePort: 8080
创建ingress规则:1
2 kubectl apply -f my-ingress-tomcat.yml
kubectl get ingress
发布my-tomcat应用
部署配置文件my-tomcat-deployment.yml如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20kind: Deployment
apiVersion: apps/v1
metadata:
name: my-tomcat
labels:
k8s-app: my-tomcat
spec:
replicas: 1
selector:
matchLabels:
k8s-app: my-tomcat
template:
metadata:
name: my-tomcat
labels:
k8s-app: my-tomcat
spec:
containers:
- name: my-tomcat
image: tomcat
Service配置文件my-tomcat-svc.yml如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16kind: Service
apiVersion: v1
metadata:
name: my-tomcat
labels:
k8s-app: my-tomcat
spec:
type: NodePort
ports:
- name: tcp-8080-8080-my-tomcat
protocol: TCP
port: 8080
targetPort: 8080
nodePort: 31187
selector:
k8s-app: my-tomcat
创建tomcat应用和Service1
2 kubectl apply -f my-tomcat-deployment.yml
kubectl apply -f my-tomcat-svc.yml
访问
完成上述步骤后,将你的域名解析到任意一台K8S的Node节点机器,即可通过 http://tomcat.yourdomain.com 访问k8s上的tomcat服务了。以后,我们可以随时通过kubectl scale 命令扩展成多个tomcat实例,Ingress-Controller(Nginx-Ingress)可以帮我们自动实现负载均衡。
这里主要做实战记录,具体理论知识不做过多介绍,想了解更多,推荐参考如下文档《Ingress通过互联网访问您的应用》
本文链接: https://www.xiajunyi.com/pages/p79.html
版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。转载请注明出处!