听说会Traefik就一定会Ingress-nginx

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

  • 编写配置清单,智能提示,体验俱佳

  • 无需命令行,应用配置清单,创建容器组

  • 无需登录平台,查看容器组运行状态

  • 双机Pod名称,直接在编辑区显示Pod的配置清单等等...

听说会Traefik就一定会Ingress-nginx_第1张图片 通过IDEA管理你的Kubernetes

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

开发集群环境

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

☸️  kubernetes-admin@kubernetes???? default  ???? ???? k get nodes
NAME      STATUS   ROLES    AGE    VERSION
master1   Ready    master   5d9h   v1.18.0
node1     Ready       5d9h   v1.18.0
node2     Ready       5d9h   v1.18.0
node3     Ready       5d9h   v1.18.0
node4     Ready       5d9h   v1.18.0

部署ingress-nginx

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

  • ingress-nginx默认监听所有的namespace,可以通过--watch-namespace指定

  • 如果多个ingress中指定的host是一样的,那么ingress会合并paths

部署ingress-nginx

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

-------------------------------------------------------------------------------
听说会Traefik就一定会Ingress-nginx_第2张图片 查看ingress-nginx的部署状态

验证Ingress-nginx

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

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的运行状态

听说会Traefik就一定会Ingress-nginx_第3张图片 tomcat服务运行状态

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

听说会Traefik就一定会Ingress-nginx_第4张图片 添加本地域名解析

然后即可在浏览器中访问

听说会Traefik就一定会Ingress-nginx_第5张图片 浏览器中访问服务

    • ???? 15 个 Kubectl 现有命令使用技巧 - 拿来即用

    • ???? 2020年最高效的10款Kubernetes助力神器

    • ???? 最流行的五款Kubernetes交互式可视化工具

    • ???? K8s节点故障:资源控制器会触发哪些动作

    • ???? 没有集群照样学Ansible:托管的容器环境(实用)

    • ???? GitLab CICD与Kubernetes实践·部署Flask Web服务 

    • ???? GitlabCI与Kubernetes实践·部署GitLab-Runner

    • ???? Gitlab CICD 与Kubernetes实践·部署GitLab

    • ???? 从GitLabCE CI/CD方法论中探索实践

    • ???? Jenkins在kubernetes上的初体验

    • ???? 走进Network Namespace学会容器网络调试

    • ???? 实践 | Kubernetes守护进程集之DaemonSet

    • ???? 神奇!如何快速成为一名优秀的YAML工程师?

    • ???? ab压力测试模拟实现kubernetes Pod水平自动伸缩

    • ???? 用Prometheus对业务服务进行监控

    • ???? Prometheus监控系列-监控篇

    • ???? kubernetes炼气期之掌握Kubernetes的背景

    • ???? Prometheus监控系列-部署篇

    • ???? 写给孩子看的Kubernetes动画指南 

    • ???? kubernetes的ingress控制器比较(traefik2.0.5安装指南)

    • ???? kubernetes深度探究Node和Pod的亲和性和反亲和性

    • ???? 在kuebernetes上通过nfs-server持久化postgresql

    • ???? kubernetes监控架构核心组件Metrics-server

    • ???? 基于BasicAuth认证的Traefik2.0.5

    • ???? 在Kubernetes上部署Nginx Ingress controller

    • ???? kubernetes安装方案大全

    • ???? kubernetes最常用的资源对象Deployment

    • ???? kubernetes炼气期之掌握kuebernetes背景

    • ???? kubernetes炼气期之k8s平台快速搭建

    • ???? 二进制部署Kubernetes集群1.9版本

你可能感兴趣的:(kubernetes,etcd,tapestry,bbs,aix)