

什么是ingress

下载配置文件
# 创建一个存放ingress-nginx配置文件的目录[root@node1 ~]# mkdir ingress-nginx[root@node1 ~]# cd ingress-nginx/[root@node1 ingress-nginx]#
# 查看命名空间[root@node1 ingress-nginx]# grep namespace mandatory.yaml -m 1namespace: ingress-nginx[root@node1 ingress-nginx]## 查看镜像,可以看到都是国内的地址,所以这次就不用翻墙了[root@node1 ingress-nginx]# grep image mandatory.yaml# Any image is permissible as long as:image: mirrorgooglecontainers/defaultbackend-amd64:1.5image: registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.20.0[root@node1 ingress-nginx]## 执行该文件[root@node1 ingress-nginx]# kubectl apply -f mandatory.yaml
查看创建结果
[root@node1 ingress-nginx]# kubectl get all -n ingress-nginxNAME READY STATUS RESTARTS AGEpod/default-http-backend-86dcdf4845-lkpkz 1/1 Running 0 23sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/default-http-backend ClusterIP 10.233.29.22 <none> 80/TCP 23sNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGEdaemonset.apps/nginx-ingress-controller 0 0 0 0 0 custom/ingress-controller-ready=true 23sNAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/default-http-backend 1/1 1 1 23sNAME DESIRED CURRENT READY AGEreplicaset.apps/default-http-backend-86dcdf4845 1 1 1 23s[root@node1 ingress-nginx]#
[root@node1 yunweijia]# kubectl -n ingress-nginx describe pod default-http-backend-86dcdf4845-lkpkz# 主要观察 Events内容
暴露一个端口出来访问
# 查看node节点名称[root@node1 ingress-nginx]# kubectl get nodeNAME STATUS ROLES AGE VERSIONnode2 Ready <none> 7d v1.20.2node3 Ready <none> 7d v1.20.2[root@node1 ingress-nginx]## 将node2节点打上一个ingress标签[root@node1 ingress-nginx]# kubectl label node node2 app=ingressnode/node2 labeled[root@node1 ingress-nginx]#
# 修改的就是我们上面下载的那个文件[root@node1 ingress-nginx]# vim mandatory.yaml# 找到272行,进行修改如下:272 spec:273 serviceAccountName: nginx-ingress-serviceaccount274 hostNetwork: true275 nodeSelector:276 #custom/ingress-controller-ready: "true"277 app: ingress278 containers:279 - name: nginx-ingress-controller280 image: registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.20.0281 args:# 主要是 app: ingress进行了修改,并注释了原内容
[root@node1 ingress-nginx]# kubectl apply -f mandatory.yaml# 稍等两分钟,会出现两个pod,并且为running的时候,就表示生效了[root@node1 ingress-nginx]# kubectl get pod -n ingress-nginxNAME READY STATUS RESTARTS AGEdefault-http-backend-86dcdf4845-lkpkz 1/1 Running 0 50mnginx-ingress-controller-qsgfk 1/1 Running 0 40m[root@node1 ingress-nginx]#
[root@node2 ~]# netstat -tunlp | grep 80tcp 0 0 0.0.0.0:18080 0.0.0.0:* LISTEN 44694/nginx: mastertcp 0 0 192.168.112.131:2380 0.0.0.0:* LISTEN 771/etcdtcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 44694/nginx: mastertcp6 0 0 :::18080 :::* LISTEN 44694/nginx: mastertcp6 0 0 :::80 :::* LISTEN 44694/nginx: master[root@node2 ~]# netstat -tunlp | grep 443tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 44694/nginx: mastertcp6 0 0 :::6443 :::* LISTEN 729/kube-apiservertcp6 0 0 :::443 :::* LISTEN 44694/nginx: master[root@node2 ~]#
[root@node1 ingress-nginx]# vim ingress-demo.yaml#deployapiVersion: apps/v1kind: Deploymentmetadata:name: tomcat-demospec:selector:matchLabels:app: tomcat-demoreplicas: 1template:metadata:labels:app: tomcat-demospec:containers:- name: tomcat-demoimage: registry.cn-hangzhou.aliyuncs.com/liuyi01/tomcat:8.0.51-alpineports:- containerPort: 8080---#serviceapiVersion: v1kind: Servicemetadata:name: tomcat-demospec:ports:- port: 80protocol: TCPtargetPort: 8080selector:app: tomcat-demo---#ingressapiVersion: extensions/v1beta1kind: Ingressmetadata:name: tomcat-demospec:rules:- host: tomcat.yunweijia.comhttp:paths:- path:backend:serviceName: tomcat-demoservicePort: 80[root@node1 ingress-nginx]#
[root@node1 ingress-nginx]# kubectl create -f ingress-demo.yaml
[root@node1 ingress-nginx]# kubectl get pod | grep tomcat-demotomcat-demo-54cbbcffdb-x8qck 1/1 Running 0 27m[root@node1 ingress-nginx]#
192.168.112.131 api.yunweijia.com192.168.112.131 tomcat.yunweijia.com
7、浏览器访问
http://api.yunweijia.com

http://tomcat.yunweijia.com

往期推荐


添加关注,带你高效运维
文章转载自运维家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




