ingress-nginx部署

ingress介绍

在kubernetes中,POD,SVC的IP地址只能集群内部使用,集群外部是无法访问的。
为了能让外部的应用访问进来,kubernetes提供了如下几种方案:

  • NodePort
  • LoadBalancer
  • Ingress

ingress工作原理

  • 本质:7层http/https代理
  • ingress controller通过和kubernetes apiserver交互,动态的获取集群中的ingress规则
  • 解析ingress规则,生成proxy服务的配置,比如nginx配置
  • 再写到ingress proxy的pod中,如果pod运行的是nginx服务,就生成nginx配置,并放到/etc/nginx/nginx.conf中
  • 然后reload服务

ingress解决那些问题?

  • 通过yaml配置动态配置ingress服务
  • 减少不必要的端口暴露
  • 卸载https,让集群内部用http

ingress当前的实现方式

官网文档:https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/

图片.png

本次使用基于nginx的ingress
github地址:https://github.com/kubernetes/ingress-nginx/tree/nginx-0.30.0

部署Ingress-nginx

部署文件介绍,准备

deploy的yaml

项目官网deploy方式部署的yaml配置地址:https://github.com/kubernetes/ingress-nginx/tree/nginx-0.30.0/deploy/static

图片.png

configmap.yaml 存储配置信息,key/value值
namespace.yaml 建命名空间
mandatory.yaml 包含部署deploy相关所有资源(configmap.yaml,namespace.yaml,rbac.yaml,with-rbac.yaml)
rbac.yaml rbac授权配置,创建Ingress需要使用的ServiceAccount,ClusterRole,Role,RoleBinding,ClusterRoleBinding
with-rbac.yaml 能使用rbac授权的deploy配置,用于构建ingress-controller

service的yaml

自建集群用:


图片.png

https://github.com/kubernetes/ingress-nginx/blob/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml

公有云上用:


图片.png

亚马孙云上用:


图片.png

国外源改为国内源

修改mandatory.yaml或者with-rbac.yaml里面的image地址,避免原地址镜像拉取超时

镜像国外源地址 版本号 镜像国内源地址
quay.io/kubernetes-ingress-controller/nginx-ingress-controller 0.30.0 quay.azk8s.cn/kubernetes-ingress-controller/nginx-ingress-controller

部署

自建集群部署

wget https://github.com/kubernetes/ingress-nginx/blob/nginx-0.30.0/deploy/static/mandatory.yaml
sed -i 's/quay.io/quay.azk8s.cn/' mandatory.yaml
kubectl apply -f mandatory.yaml
kubectl apply -f https://github.com/kubernetes/ingress-nginx/blob/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml

验证

查看deploy

[root@nw61 nginx-ingress]# kubectl -n ingress-nginx get pods
NAME                                        READY   STATUS    RESTARTS   AGE
nginx-ingress-controller-55c9df84c6-8x4kk   1/1     Running   0          18h

查看pod详情
kubectl -n ingress-nginx describe pod nginx-ingress-controller-55c9df84c6-8x4kk
查看svc

[root@nw61 nginx-ingress]# kubectl -n ingress-nginx get svc
NAME            TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx   NodePort   10.107.133.174           80:30708/TCP,443:31055/TCP   18h

访问测试

[root@nw61 nginx-ingress]# curl http://10.107.133.174/

404 Not Found

404 Not Found


nginx/1.17.8
[root@nw61 nginx-ingress]# ping 10.107.133.174 PING 10.107.133.174 (10.107.133.174) 56(84) bytes of data. 64 bytes from 10.107.133.174: icmp_seq=1 ttl=64 time=0.063 ms 64 bytes from 10.107.133.174: icmp_seq=2 ttl=64 time=0.044 ms

你可能感兴趣的:(ingress-nginx部署)