K8S之Ingress部署
资料信息地址:
Ingress-Nginx-github 地址:https://github.com/kubernetes/ingress-nginx
Ingress-Nginx 官方地址:https://kubernetes.github.io/ingress-nginx
一、下载并修改配置文件
# 创建文件夹 [root@master ~]# mkdir ingree-controller [root@master ~]# cd ingree-controller/ # 获取Ingress-nginx,本次案例使用的是0.3版本 [root@master ingree-controller]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml [root@master ingree-controller]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml # 修改 mandatory.yaml 文件中的仓库地址,若七牛地址不行则改为阿里云镜像地址 # 修改quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0 # 七牛云地址:quay-mirror.qiniu.com/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0 # 阿里云地址:registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.30.0 # 创建Ingress-nginx [root@master ingree-controller]# vi mandatory.yaml
二、运行 Ingress 配置文件
# 1、修改并运行配置文件
[root@k8s-master ingress]# vi mandatory.yaml [root@k8s-master ingress]# kubectl apply -f mandatory.yaml namespace/ingress-nginx created deployment.extensions/default-http-backend created service/default-http-backend created configmap/nginx-configuration created configmap/tcp-services created configmap/udp-services created serviceaccount/nginx-ingress-serviceaccount created clusterrole.rbac.authorization.k8s.io/nginx-ingress-clusterrole created role.rbac.authorization.k8s.io/nginx-ingress-role created rolebinding.rbac.authorization.k8s.io/nginx-ingress-role-nisa-binding created clusterrolebinding.rbac.authorization.k8s.io/nginx-ingress-clusterrole-nisa-binding created deployment.extensions/nginx-ingress-controller created
# 2、查看运行结果
[root@master ingree-controller]# kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
nginx-ingress-controller-fbf967dd5-dp5gj 1/1 Running 0 29s
# 查看Service
[root@master ingree-controller]# kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx NodePort 10.100.202.188 <none> 80:32188/TCP,443:31107/TCP 45s
三、书写并运行 Service 服务
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: dev spec: replicas: 3 selector: matchLabels: app: nginx-pod template: metadata: labels: app: nginx-pod spec: containers: - name: nginx image: nginx:1.17.1 ports: - containerPort: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: tomcat-deployment namespace: dev spec: replicas: 3 selector: matchLabels: app: tomcat-pod template: metadata: labels: app: tomcat-pod spec: containers: - name: tomcat image: tomcat:8.5-jre10-slim ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: nginx-service namespace: dev spec: selector: app: nginx-pod clusterIP: None # service的ip地址,如果不写,默认会合成一个 type: ClusterIP ports: - port: 80 # service端口 targetPort: 80 # pod端口 --- apiVersion: v1 kind: Service metadata: name: tomcat-service namespace: dev spec: selector: app: tomcat-pod clusterIP: None # service的ip地址,如果不写,默认会合成一个 type: ClusterIP ports: - port: 8080 # service端口 targetPort: 8080 # pod端口
查看结果
# 创建 [root@master ingree-controller]# kubectl apply -f tomcat-nginx.yaml deployment.apps/nginx-deployment created deployment.apps/tomcat-deployment created service/nginx-service created service/tomcat-service created # 查看 [root@master ingree-controller]# kubectl get svc -n dev NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-service ClusterIP None <none> 80/TCP 28s tomcat-service ClusterIP None <none> 8080/TCP 28s
四、ingree-http代理
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-http namespace: dev spec: rules: - host: nginx.wangzy.com http: paths: - path: / backend: serviceName: nginx-service servicePort: 80 - host: tomcat.wangzy.com http: paths: - path: / backend: serviceName: tomcat-service servicePort: 8080
# 创建 [root@master ingree-controller]# kubectl apply -f ingress-http.yaml ingress.extensions/ingress-http created [root@master ingree-controller]# # 查看(ing为ingress的简写) [root@master ingree-controller]# kubectl get ing -n dev NAME HOSTS ADDRESS PORTS AGE ingress-http nginx.wangzy.com,tomcat.wangzy.com 80 13s
四、访问测试页面
## 方式一:不添加域名访问 curl -v http://192.168.141.160 -H 'host: nginx.wangzy.com'
## 方式二:windows本地域名配置 # 打开hosts配置文件,文件目录:C:\Windows\System32\drivers\etc # 添加解析内容 192.168.101.26 nginx.wangzy.com 192.168.101.26 tomcat.wangzy.com # 查看ingress暴露端口 [root@master ingree-controller]# kubectl get svc -n ingress-nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx NodePort 10.100.202.188 <none> 80:32188/TCP,443:31107/TCP 24h # 访问nginx地址 http://nginx.wangzy.com:32188