目录
2、在node节点部署ingress-1.11.tar镜像(根据部署环境选择版本)
7、设置http代理,创建ingress-http.yaml
10、在访问主机的hosts文件中添加pod运行节点的ip和域名
[12、修改 LoadBalancer](#12、修改 LoadBalancer)
一、准备
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

13、集群外部主机访问
