• 干货|Kubernetes集群部署
Nginx-ingress Controller


    Kubernetes提供了两种内建的云端负载均衡机制用于发布公共应用,一种是工作于传输层的Service资源,它实现的是TCP负载均衡器;另一种是Ingress资源,它实现的是HTTP(S)负载均衡器。

    今天我们来重点讨论Ingress资源。HTTP(S)负载均衡器是应用层负载均衡机制的一种,支持根据环境做出更好的调度决策。与传输层调度器相比,它提供了可自定义URL映射和TLS等功能,并支持多种健康状态检查机制。

    Ingress是Kubernetes API的标准资源类型之一,它其实就是一组基于DNS名称或URL路径把请求转发至指定的Service资源的规则,用于将集群外部的请求流量转发至集群内部完成服务发布。然而,Ingress资源自身并不能进行“流量穿透”,它仅是一组路由规则的集合,这些规则要想真正发挥作用还需要其他功能的辅助,如监听某套接字,然后根据这些规则的匹配机制路由请求流量。这种能够为Ingress资源监听套接字并转发流量的组件称为Ingress Controller。

    一、部署Helm

    Helm是一个包管理工具, 把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,方便将其chart保存到chart仓库用来存储和分享, Helm支持发布应用配置的版本管理, 使发布可配置, 简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。

    • 安装Helm

    1、官网下载Helm二进制文件,当前最新版本为2.14.0;

    wget https://storage.googleapis.com/kubernetes-helm/helm-v2.14.0-linux-amd64.tar.gz
    

    2、解压缩文件并将目录中二进制文件移动到/usr/local/bin/下;

    tar -zxvf helm-v2.14.0-linux-amd64.tar.gz
    mv linux-amd64/helm /usr/local/bin/helm
    

    3、为Tiller添加权限,详见Role-based Access Control,新建rbac-config.yaml,内容如下:

     apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: tiller
    
      namespace: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRoleBinding
    metadata:
      name: tiller
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
      - kind: ServiceAccount
        name: tiller
        namespace: kube-system
    

    执行create命令:

    kubectl create -f rbac-config.yaml
    

    4、初始化 Helm 并安装 Tiller 服务

    helm init --upgrade --service-account tiller --tiller-image sapcc/tiller:v2.14.0
    

    5、查看helm版本,出现以下信息,确认安装成功:

    Client: &version.Version{SemVer:"v2.14.0", GitCommit:"8478fb4fc723885b155c924d1c8c410b7a9444e6", GitTreeState:"clean"}
    Server: &version.Version{SemVer:"v2.14.0", GitCommit:"8478fb4fc723885b155c924d1c8c410b7a9444e6", GitTreeState:"clean"}
    

    6、chart列表

    helm repo update
    

    7、测试chart是否可用

    helm search
    

    二、使用Helm安装nginx-ingress

    • 安装nginx-ingress

    1、执行helm install命令

    helm install stable/nginx-ingress --name my-nginx --set rbac.create=true
    --name:为安装的应用命名
    

    2、查看helm 列表

    3、查看ingress的service

    kuberctl get svc
    

    三、部署nginx实例应用

    • 部署nginx的deployment

    1、编辑nginx-app.yaml文件

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginxdemos/hello:latest
            ports:
            - containerPort: 80
    

    2、执行create创建命令

    kubectl  create  -f  nginx-app.yaml
    

    3、检测deployment部署情况

    kubectl  get deployment  nginx-deployment
    
    • 为nginx的deployment创建service

    1、执行expose命令

    kubectl expose deployment nginx-deployment --target-port=80 --port=80 --protocol=TCP --name=jdc-test
    

    2、确认服务创建完成

    kubectl  get  svc 
    

    • 为service创建ingress

    1、编辑 ingress-nginx.yaml文件

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: jdc-ingress-controller-test
      annotations:
        metadata.annotations.kubernetes.io/ingress.class: "nginx"   
    spec:
      rules:
      - host: test.nginx-ingress.jdc-test
        http:
          paths:
          - path: /
            backend:
              serviceName: jdc-test
              servicePort: 80
    

    2、执行create创建命令

    kubectl  create –f  ingress-nginx.yaml 
    

    3、查看ingress部署情况

    kubectl  get ingress
    

    4、在客户端添加静态解析,公网IP是nginx controller的service公网IP,域名是ingress的host:test.nginx-ingress.jdc-test

    5、浏览器输入url http://test.nginx-ingress.jdc-test/jdc-test访问测试

  • 相关阅读:
    [转]项目需求范围管理
    JavaScript 王者归来
    [转]大文件上传组件
    [转]使用vs2005自带的sql2005 express
    JS判断Caps Lock
    [转]Web项目管理思考
    [转]JS严格验证身份证
    两分钟用C#搭建IE BHO勾子, 窃取密码
    asp.net性能提升十个方法(Microsoft)
    [转]Asp.net 将js文件打包进dll 方法
  • 原文地址:https://www.cnblogs.com/jdclouddeveloper/p/11673123.html
Copyright © 2020-2023  润新知