前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >听说会Traefik就一定会Ingress-nginx

听说会Traefik就一定会Ingress-nginx

作者头像
公众号: 云原生生态圈
发布2020-12-29 11:17:44
6720
发布2020-12-29 11:17:44
举报
文章被收录于专栏:云原生生态圈云原生生态圈

分享都要写在前面,在IDEA中使用Kubernetes插件查看和管理你的容器组

  • 编写配置清单,智能提示,体验俱佳
  • 无需命令行,应用配置清单,创建容器组
  • 无需登录平台,查看容器组运行状态
  • 双机Pod名称,直接在编辑区显示Pod的配置清单等等...

通过IDEA管理你的Kubernetes

好了,分享之后进入正题。?前段时间在使用ingress controller的时候选择的是traefik,最近新起的一台Kubernetes集群中,使用的是ingress controller,对于不同的ingress控制器,虽然使用理念都是差不多,但是实际使用区别上还是有些不同,接下来将会对Ingress Controller进行深入的学习和研究。依旧是如往常一样,在体验不同方案最好的理解就是上手折腾一番,以下就首先开始ingress controller的安装部署

开发集群环境

我们将在以下环境内进行一些学习和研究。K8s集群信息

代码语言:javascript
复制
☸️  kubernetes-admin@kubernetes? default  ? ? k get nodes
NAME      STATUS   ROLES    AGE    VERSION
master1   Ready    master   5d9h   v1.18.0
node1     Ready    <none>   5d9h   v1.18.0
node2     Ready    <none>   5d9h   v1.18.0
node3     Ready    <none>   5d9h   v1.18.0
node4     Ready    <none>   5d9h   v1.18.0

部署ingress-nginx

与traefik一样,ingress-nginx同样是部署在公网的边缘节点上,通过暴露一个端口,以及一系列的自定义规则将公网流量代理到集群内的service。ingress-nginx与traefik具体的使用还是有很大的区别,以后在使用中再说

  • ingress-nginx默认监听所有的namespace,可以通过--watch-namespace指定
  • 如果多个ingress中指定的host是一样的,那么ingress会合并paths

部署ingress-nginx

代码语言:javascript
复制
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml
# using NodePort
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml
# 验证服务的运行状态
kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx --watch
# 查看ingress-controller运行的状态
☸️  kubernetes-admin@kubernetes? ingress-nginx   master ●  ? ? POD_NAMESPACE=ingress-nginx   
☸️  kubernetes-admin@kubernetes? ingress-nginx   master ●  ? ? POD_NAME=$(kubectl get pods -n $POD_NAMESPACE -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.nme}')
☸️  kubernetes-admin@kubernetes? ingress-nginx   master ●  ? ? 
☸️  kubernetes-admin@kubernetes? ingress-nginx   master ●  ? ? kubectl exec -it $POD_NAME -n $POD_NAMESPACE -- /nginx-ingress-controller --version
-------------------------------------------------------------------------------
NGINX Ingress controller
  Release:       0.30.0
  Build:         git-7e65b90c4
  Repository:    https://github.com/kubernetes/ingress-nginx
  nginx version: nginx/1.17.8

-------------------------------------------------------------------------------

查看ingress-nginx的部署状态

验证Ingress-nginx

接下来将通过一个tomcat服务来验证ingress-nginx是否可用,这里将会通过deployment部署三个副本的tomcat容器,然后暴露tomcat的8080端口以及8009(ajp). 配置文件名为: tomcat.yaml

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat
  namespace: default
  labels:
    app: tomcat
spec:
  replicas: 3
  template:
    metadata:
      name: tomcat
      labels:
        app: tomcat
        release: canary
    spec:
      containers:
        - name: tomcat
          image: tomcat:8.5.32-jre8-alpine
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
  selector:
    matchLabels:
      app: tomcat
      release: canary
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat-svc
  namespace: default
spec:
  selector:
    app: tomcat
    release: canary
  ports:
    - port: 8080
      name: http
      targetPort: 8080
    - name: ajp
      targetPort: 8009
      port: 8009
---
kind: Ingress
apiVersion: networking.k8s.io/v1beta1
metadata:
  name: ingress-tomcat
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: tomcat.local.com
      http:
        paths:
          - path: /
            backend:
              serviceName: tomcat-svc
              servicePort: http

查看tomcat的运行状态

tomcat服务运行状态

最后,与traefik相似,我们通过域名以及ingress-nginx-controller暴露出来的NodePort端口进行访问.此处需要添加本地的DNS解析

添加本地域名解析

然后即可在浏览器中访问

浏览器中访问服务

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生生态圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开发集群环境
  • 部署ingress-nginx
    • 部署ingress-nginx
    • 验证Ingress-nginx
      • 查看tomcat的运行状态
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档