K8S集群-基于Ingress资源实现域名访问
目录
一、准备
1、在master节点部署ingress的资源清单文件
2、在node节点部署ingress-1.11.tar镜像(根据部署环境选择版本)
二、基于NodePort模式验证
1、在master节点进入ingress的资源清单文件
2、修改deploy.yaml文件
3、生成deploy.yaml资源
4、在node节点中将ingress镜像导入
5、现在修改NodPort
6、写一个nginx资源清单
7、设置http代理,创建ingress-http.yaml
8、创建ingress-http.yaml资源
9、查看pod运行节点和端口号
10、在访问主机的hosts文件中添加pod运行节点的ip和域名
11、通过域名访问
三、基于LoadBalancer模式验证
1、在master节点部署metallb负载均衡器
2、进入metallb配置文件
3、创建一个IP地址池
4、关联IP地址池
5、加载metallb资源清单
6、加载IP池
7、加载地址池关联规则
8、创建nginx资源清单
9、向http域名解析文件中添加新域名
10、更新域名解析文件
11、加载nginx资源清单
12、修改 LoadBalancer
13、访问
一、准备
1、在master节点部署ingress的资源清单文件
2、在node节点部署ingress-1.11.tar镜像(根据部署环境选择版本)
二、基于NodePort模式验证
1、在master节点进入ingress的资源清单文件
cd /ingress/ingress-nginx-controller-v1.11.3/deploy/static/provider/cloud
2、修改deploy.yaml文件
- type修改为NodePort(可以在文件中直接修改,也可以启动后修改)
- 删除文件内所有版本后的哈希算法
3、生成deploy.yaml资源
kubect create -fdeploy.yaml
会生成新的资源清单ingress-nginx
4、在node节点中将ingress镜像导入
docker load -i ingress-1.11.tar
5、现在修改NodPort
kubectl -n ingress-nginx edit svc ingress-nginx-controller
6、写一个nginx资源清单
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-deploy
name: nginx-deploy
spec:
replicas: 3
selector:
matchLabels:
app: nginx-deploy
template:
metadata:
labels:
app: nginx-deploy
spec:
containers:
- image: nginx:latest
imagePullPolicy: IfNotPresent
name: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx-deploy
name: nginx-svc
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx-deploy
type: ClusterIP
7、设置http代理,创建ingress-http.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress # 创建一个类型为Ingress的资源
metadata:
name: nginx-ingress # 这个资源的名字为 nginx-ingress
spec:
ingressClassName: nginx # 使用nginx
rules:
- host: nginx.jx.com # 访问此内容的域名
http:
paths:
- backend:
service:
name: nginx-svc # 对应nginx的服务名字,该规则的namespace必须与service的一致
port:
number: 80 # 访问的端口
path: / # 匹配规则
pathType: Prefix # 匹配类型,这里为前缀
8、创建ingress-http.yaml资源
kubectl apply -f ingress-http.yaml
9、查看pod运行节点和端口号
node1节点
端口号31382
10、在访问主机的hosts文件中添加pod运行节点的ip和域名
11、通过域名访问
三、基于LoadBalancer模式验证
1、在master节点部署metallb负载均衡器
2、进入metallb配置文件
cd /metallb-0.14.8/config/manifests
3、创建一个IP地址池
cat >IPAddressPool.yaml<<EOF
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: planip-pool #这里与下面的L2Advertisement的ip池名称需要一样
namespace: metallb-system
spec:
addresses:
- 192.168.158.135-192.168.158.150 #自定义ip段,不要与集群IP冲突
EOF
4、关联IP地址池
cat >L2Advertisement.yaml<<EOF
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: planip-pool
namespace: metallb-system
spec:
ipAddressPools:
- planip-pool #这里需要跟上面ip池的名称保持一致
EOF
5、加载metallb资源清单
6、加载IP池
7、加载地址池关联规则
8、创建nginx资源清单
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-deploy1
name: nginx-deploy1
spec:
replicas: 3
selector:
matchLabels:
app: nginx-deploy1
template:
metadata:
labels:
app: nginx-deploy1
spec:
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: nginx1
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx-deploy1
name: nginx-svc1
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx-deploy1
type: LoadBalancer
9、向http域名解析文件中添加新域名
10、更新域名解析文件
11、加载nginx资源清单
12、修改 LoadBalancer
kubectl -n ingress-nginx edit svc ingress-nginx-controller