部署kubernetes/ingress-nginx(踩坑)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了部署kubernetes/ingress-nginx(踩坑),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5787字,纯文字阅读大概需要9分钟。
内容图文
nginx-ingress-controller:0.25.0有问题,所以这里采用nginx-ingress-controller:0.30.0
[root@k8s-master ~]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml
[root@k8s-master ~]# cat mandatory.yaml | grep image
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0
所有节点下载quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0
[root@k8s-master ~]# docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0
[root@k8s-master ~]# kubectl apply -f mandatory.yaml
[root@k8s-master ~]# kubectl get pod -n ingress-nginx
NAME READY STATUS RESTARTS AGE
nginx-ingress-controller-7fcf8df75d-kps22 1/1 Running 0 79s
[root@k8s-master ~]# kubectl describe pod -n ingress-nginx
Events:
Type Reason Age From Message
Normal Scheduled 45s default-scheduler Successfully assigned ingress-nginx/nginx-ingress-controller-7fcf8df75d-p79dr to k8s-node2
Normal Pulled 39s kubelet, k8s-node2 Container image "quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0" already present on machine
Normal Created 38s kubelet, k8s-node2 Created container nginx-ingress-controller
Normal Started 38s kubelet, k8s-node2 Started container nginx-ingress-controller
[root@k8s-master ~]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml
[root@k8s-master ~]# kubectl apply -f service-nodeport.yaml
service/ingress-nginx created
[root@k8s-master ~]# kubectl get 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 pod -o wide -n ingress-nginx
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-ingress-controller-7fcf8df75d-v42m9 1/1 Running 0 103s 10.244.1.198 k8s-node2 <none> <none>
[root@k8s-master ~]# ipvsadm -Ln (可以看到当访问NodePort的31355端口时,其实访问的是nginx-ingress-controller 10.244.1.198 的80)
Ingress HTTP 代理访问
deployment、Service、Ingress Yaml 文件
[root@k8s-master ~]# vi ingress.http.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-dm
spec:
replicas: 2
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: wangyanglinux/myapp:v1
imagePullPolicy: IfNotPresent
ports:-
containerPort: 80
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
ports:- port: 80
targetPort: 80
protocol: TCP
selector:
name: nginx
- port: 80
-
[root@k8s-master ~]# kubectl apply -f ingress.http.yaml
deployment.extensions/nginx-dm created
service/nginx-svc created
[root@k8s-master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 76m
nginx-svc ClusterIP 10.108.165.161 <none> 80/TCP 6s
[root@k8s-master ~]# curl 10.108.165.161
Hello MyApp | Version: v1 | <a href="hostname.html">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 -f ingress1.yaml
ingress.extensions/nginx-test created - path: /
[root@k8s-master ~]# kubectl get 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 4m5s
[root@k8s-master ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-dm-7d967c7ff5-fhpnh 1/1 Running 0 84s 10.244.1.199 k8s-node2 <none> <none>
nginx-dm-7d967c7ff5-z4fm6 1/1 Running 0 84s 10.244.2.108 k8s-node1 <none> <none>
[root@k8s-master ~]# kubectl get pod -n ingress-nginx
NAME READY STATUS RESTARTS AGE
nginx-ingress-controller-7fcf8df75d-v42m9 1/1 Running 0 5m35s
[root@k8s-master ~]# kubectl get pod -o wide -n ingress-nginx
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-ingress-controller-7fcf8df75d-v42m9 1/1 Running 0 8m59s 10.244.1.198 k8s-node2 <none> <none>
为了测试效果,我在Windows主机上的C:\Windows\System32\drivers\etc\hosts建立以下DNS记录
10.10.21.8 www1.normantest.com
在浏览器访问www1.normantest.com:31355,访问页面出错
[root@k8s-master ~]# ipvsadm -Ln(可以看到当访问NodePort的31355端口时,其实访问的是nginx-ingress-controller 10.244.1.198 的80)
进入容器nginx-ingress-controller 排错:
[root@k8s-master ~]# kubectl exec nginx-ingress-controller-7fcf8df75d-v42m9 -it -n ingress-nginx /bin/bash
bash-5.0$ ls
fastcgi.conf geoip 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 modsecurity opentracing.json template
fastcgi_params.default lua modules owasp-modsecurity-crs uwsgi_params
bash-5.0$ vi nginx.conf (发现上面部署的ingress没有注入到nginx-ingress-controller的nginx配置中,修改后正确配置如下)
最后成功访问
内容总结
以上是互联网集市为您收集整理的部署kubernetes/ingress-nginx(踩坑)全部内容,希望文章能够帮你解决部署kubernetes/ingress-nginx(踩坑)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。