nginx-ingress-controller:0.25.0有问题,所以这里采用nginx-ingress-controller:0.30.0
[root@k8s-master ~]# wget https://raw.githubusercontent.com/kubernetes/ingrm Z N ness-nginx/nginx-0.30.0/deploy/static/mandatorm V Dy.d p E 4 ( Y y d =yaml
[root@k8s-master ~]D @ U# cat mandatory.D @ A / 9 ~yaml | grep image
image: quay.B H - % @ E i d 4io/kubernetes-ingress-controllel V zr/` b } Onginx-ingress-controller:0.30.t [ b N 6 |0
所有节点下载quay.io/kubernetes-ingresQ O C 3 w ; a Ts-controller/nginx-ingress-controller:0.30.0
[root@k8s-master ~]# docker pull quay.io/kub2 8 e n Vernetes-ingress-contr~ 4 M `oller/nginx-ingress-b @ m H @ R F T [con` S 2 (troller:0.30.0
[root@k8s-master ~]# kubectl apply -f mandatory.yaml
[root@k8s-master ~]# kubectl ger ! f o L $ ! 5t pod -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ngin* Q m [ x ,x-ingress-controller-7fcf8df75d-kps22 1/1 Running 0 79s
[root@k8s-masten q m : h 9r ~]# kubectl describe pod -n ingress-nginx
Eventsu ( W ) $ C 6 g:
Type ReasoO P n E ) On Age From Message
Normal Scheduledo O : p p 5 45s default-scheduler Successfully assigned ingre8 R 1ss-nginx/nginx-ingress-controller-7fcf8df75d-p79dr to k8` ; 0 R S 4 T :s-node2
Normal Pulled 39s kubelet, k8s-noQ j ~ 3 u bde2 Container image "quay? . S { M s 3 9 (.i) s #o/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0" already present on machine
NoN L G 0 b X drmal Created 38s kubelet, k8s-node2 Created container nT J M K m s s 8 qginx-ingress-controller
Ne . s |ormal Started 38s kubelet, k8s-node2 Started container nginx-ingress-controller
[roow 4 ? L h ]t@k8- , l Qs-master ~]# wget https://rB D G & - n 4 ;aw.gI c b ]ithubusercontent.com/kube^ } [ . U 8rnetes/ingress-nginx/nginx-0.; l , 1 e 2 4 .30.0/deploy/static/provider/bareme= | ^ { 9 ltal/servw n h J Aice-nodeport.yaml
[root@k8s-master ~]N B a T / f : g# kubectl apply -f service-nodeport.yaml
service/ingress-nginx created
[root@kl N x k t P * 18s-master ~]# kubectl ge; y i / Tt svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx NodePort 10.97.244.100 <none> 80:31355/TCP,443:30036/TCP 6s
[root@k8s-master ~]# kubectl get podT n W T S . ) -o wid f j Q + Be -n ingress-nginx
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED{ b j 6 S J NODE READINESS GATES
nginx-ingress-controller-7fcf8N u ^ 8 S / Idf75d-v42m& ` =9 1/1 Running 0 103s 10.244.1.198 k8s-nodd = C { le2 <none> <none>
[root@$ O mk8s-master ~]# ipvsadm -Ln (可以看到当访问NodePort的31355端口时,其实访问的是nginx-ingress-controller 10.U f G & t M .244.1.198 的80)
Ingress HTTP 代理访问
deployment、Service、Ingr ; O q , B 4 ( Eess Yaml 文件
[root@k8s-master ~]# vi ingr@ 5 e @ 0ess.httN n W k = F { gp.ya? + * T f S + 4ml
apiVersion: extensions/v1Y l v I V 3 | ! beta1
kind: Deployq . 0 y &ment
metadata:
name: nginx-dm
spec:
repliM I . W [cas: 2
template:
metadata:Y ) Y Y
labels:
name:o O $ ~ S 1 u nginx
spec:
containers:
- name: nginx
image: wangyangj [ 9 K c X ( d ;linux/myapp:v1
imagePut u 7 llPolii 0 2 & d F b x 0cy: IfNotPresent
ports:-
containerPort: 80
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
specT q A:
ports:- port: 80
targetPo` W : mrt: 80
protocol: TCP
selector:
name: nginx
- port: 80
-
[root@k8s-master ~]# kubectl apply -f ingT o ] E ; x y S press.http.yaml
deployment.extensions/nginx-dm created
s` M & R % a ]ervice/nginx-svc createF d ! C E ~ M *d
[root@k8s-master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGy , 3E
kubernetes ClusterIP 10.96.0.1 <none>E j n C 7 h 443/TCP 76m
nginx-svc: S z Z R ClusterIP 10.108.165.161 <none> 80/TCP 6s
[root@k8s-master ~]# curl 10.108.165.161
Hello MyApp | Version: v1 | <a href="https://blog.51cto.7 d 8 d g L =com/2290153/. w %2558507/hostname.h{ = 2 c [ 8 ; 2tml">Pod Name</a>
[root@k8s-master ~]# vi ingress1.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: ingress-nginx
name: nginx-test
spec:
rules:
-
host: www1.normantest.com
http:
paths:- path: /
backend:
serviceName: nginx-svc
servicePort: 80
[root@k8s-master ~]# kubectl apply -ff p o h H 7 R ] O ingress1.yaml
ingres8 Y ? D 3 u # c ]s.extensions/nginx[ + g ` 0 1 y-test created - path: /
[root@k8s-master ~]# kubectl get svc -n ingress-nginx
NAMEX 6 h C w * g q TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx NodePort 10.97.244.100 <none> 80:31355/TCP,443:30036/TCP 4m5s
[ro^ ] 3 ^ot@k8s-master ~]# kubectl get pod -o wide
NAME READY STATUS R{ ! 0 m z & iESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-dQ * bm-7d967c7ff5-fhpnh 1/1 Runn4 R L Ving 0 84s 10.244.1.199 k8se u ) l 6 @ I-node2 <none> <none>
nginx-dm-7d967c7ff5-z4fm6 1/1 Running 0 84s 1s v d m C y ^ 1 u0.244.2.108 k8s-node1 &l2 ) F e 8 * . e ,t;none> <none>
[root@k8s-master ~]# kubectl get pod -n ic 1 : _ngress-nginx
NAME READY STATUS RESTARTS AGE
ng: a $ ] Ainx-ingress-controller-7fcf8df75d-v42m9 1/1 Running 0 5m35s
[root@k8s-master ~]# Q 8 kubectl get pX k B Tod -4 b ( y : W Ao wide -n ingress-nginx
NAME READY STATUS RESTARTS AGE IPu A ` 3 M [ _ NODE NOMINATED NODE READINESS GATES
nginx-ingress-controller-7fcf8df75d-v42m9 1/1 Runnid d @ . t u I ? *ng 0 8m59s 10.244.1.198 k8s-node2 <nonz % ^ ve> <noN G [ne>
为了测试效果,我在Windows主机上的, N _ ! YC:\Windows\Sysm z @ e 7tT K W 0 q Q n !em32\drivers\etc\hosts建立以下DNS记录
1C d = X l V u b0.10.21.8 www1.normantest.com
在浏览器访问w} , * S : )ww1.normantest.com:31355,访问页面出错
[root@k8s-master ~]#C 6 E ipvsadm -Ln(可以看到当访问NodePort的313/ 5 M J 5 d |55端口时,其实访问的是nginx-ingress-contrA 4 D v c 8 ` ^ coller 10.244.1.198 的80)
进入容器nginx-ingress-controller 排错:
[roo9 k | W ( ?t@k8q [ f ] e + S ys-m7 . H V * {aster ~]# kubectl exec nginx-ingresA N / n + l ks-controller-7fcf8df75d-v42m9 -it -n ingress-nginx /bin/bash
bash-5.0$ ls
fastcgi.conf g) ; | :eoip mime.types nginx.conf scgi_params uwsgi_params.default
fastcgi.conf.default koi-utf mime.types.default nginx.conf.default scgi_params.default win-utf
fastcgi_params koi-win mt o 5 q , 5odsecurity opentk C Z v H B !racing.json template
fastcgi_paramP i B 7 Ws.default lua modules owasp-mod| e M U D 6 b /secu& w 7 ! L (rity-crs uwsgi_params
bash-5.0$ vi nginx.conf (发现上面部署的ingress没有注w 5 k入到nginx-ingress-controller的nginx配置中,修改后正确配置如下)
最后成功访问
发表评论