美文网首页
K8S学习之ingress网络实验

K8S学习之ingress网络实验

作者: david161 | 来源:发表于2022-03-15 16:22 被阅读0次

    实验一

    使用镜像
    docker pull tomcat:9.0.20-jre8-alpine 
    docker pull quay.io/kubernetes-ingress-controller/nginx-ingress- controller:0.30.0
    
    运行ingress-controller
    在mandatory.yaml文件的Deployment资源中增加属性sepc.template.sepc.hostNetWork 
    hostNetwork: true 
    hostNetwork网络,这是一种直接定义Pod网络的方式。如果在Pod中使用hostNetwork:true配置网络,那么Pod中运行的应用程序可以直接使用node节点的端口 
    
    运行ingress/mandatory.yaml文件 
    
    kubectl apply -f mandatory.yaml
    
    运行ingress服务
    运行ingress/service-nodeport.yaml文件 
    kubectl apply -f service-nodeport.yaml
    
    部署tomcat-服务

    ingress/tomcat-service.yml

    apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: tomcat-deploy 
      labels: 
        app: tomcat-deploy 
    spec: 
      replicas: 1 
      template: 
        metadata: 
          name: tomcat-deploy 
          labels: 
            app: tomcat-deploy 
        spec: 
          containers: 
            - name: tomcat-deploy 
              image: tomcat:9.0.20-jre8-alpine 
              imagePullPolicy: IfNotPresent 
              ports: 
                - containerPort: 8080 
          restartPolicy: Always 
      selector: 
        matchLabels: 
          app: tomcat-deploy 
    --- 
    apiVersion: v1 
    kind: Service 
    metadata: 
      name: tomcat-svc 
    spec: 
      selector: 
        app: tomcat-deploy 
      ports: 
        - port: 8080 
          targetPort: 8080
      type: NodePort
    
    运行tomcat-service

    kubectl apply -f tomcat-service.yml

    部署ingress规则文件

    ingress/ingress-tomcat.yml

    apiVersion: extensions/v1beta1 
    kind: Ingress 
    metadata: 
      name: nginx-ingress-test 
    spec: 
      backend: 
        serviceName: tomcat-svc 
        servicePort: 8080
    
    运行ingress规则
    kubectl apply -f ingress-tomcat.yml 
    
    查看ingress 
    kubectl get ingress 
    
    查看ingress服务:查看service的部署端口号 
    kubectl get svc -n ingress-nginx 
    
    查看ingress-controller运行在那个node节点 
    kubectl get pod -n ingress-nginx -o wide
    

    通过ingress访问tomcat

    http://192.168.198.158:31530/
    

    实验二

    上边案例的部署方式只能通过ingress-controller部署的节点访问。集群内其他节点无法访问ingress规则。本章节通过修改mandatory.yaml文件的控制类类型,让集群内每一个节点都可以正常访问ingress规则。

    ingress-controller

    ingress/mandatory.yaml

    修改mandatory.yaml配置文件 
    
    1.将Deployment类型控制器修改为:DaemonSet 
    2.属性:replicas: 1 # 删除这行
    
    service-nodeport固定端口

    ingress/service-nodeport.yml

    apiVersion: v1 
    kind: Service 
    metadata: 
      name: ingress-nginx 
      namespace: ingress-nginx 
      labels: 
        app.kubernetes.io/name: ingress-nginx 
        app.kubernetes.io/part-of: ingress-nginx 
    spec: 
      type: NodePort 
      ports: 
        - name: http 
          port: 80 
          targetPort: 80 
          nodePort: 31188 
          protocol: TCP 
        - name: https 
          port: 443 
          targetPort: 443 
          nodePort: 31443 
          protocol: TCP 
      selector: 
        app.kubernetes.io/name: ingress-nginx 
        app.kubernetes.io/part-of: ingress-nginx
    
    域名访问ingress规则

    service/ingress-tomcat.yml

    apiVersion: extensions/v1beta1 
    kind: Ingress 
    metadata: 
      name: nginx-ingress-test 
    spec: 
      rules: 
        - host: ingress-tomcat.lagou.com 
          http: 
            paths: 
              - path: / 
                backend: 
                  serviceName: nodeporttomcat-svc 
                  servicePort: 8080
    
    修改宿主机hosts文件

    C:\Windows\System32\drivers\etc\hosts

    增加ingress-tomcat.lagou.com 域名配置: 
    192.168.198.157 ingress-tomcat.lagou.com
    
    部署服务
    kubectl apply -f .
    
    浏览器测试
    http://ingress-tomcat.lagou.com:31188/
    
    nginx-controller原理
    查看ingress-nginx 命名空间下的pod 
    kubectl get pods -n ingress-nginx 
    
    进入ingress-nginx 的pod 
    kubectl exec -it nginx-ingress-controller-5gt4l -n ingress-nginx sh 
    
    查看nginx反向代理域名ingress-tomcat.lagou.com 
    cat nginx.conf
    

    相关文章

      网友评论

          本文标题:K8S学习之ingress网络实验

          本文链接:https://www.haomeiwen.com/subject/bsctdrtx.html