更新时间:2024-09-29 GMT+08:00

为第三方私网集群安装Agent

操作场景

本指导适用于在不能访问公网的第三方私网集群上安装Agent。按照本指导配置完成后,HSS将自动在集群节点上安装Agent,并能够随集群扩容自动为新节点安装Agent,在集群缩容时同步卸载Agent。

前提条件

第三方私网集群已创建专线连接,与云上VPC实现了网络互通。如何创建专线连接请参见云专线入门指引

约束与限制

  • 集群编排平台限制:1.19及以上Kubernetes。
  • 节点操作系统限制:Linux系统。
  • 节点规格要求:CPU必须2核及以上,内存必须4GiB及以上,系统盘必须40GiB及以上,数据盘必须100GiB及以上。
  • 私网集群接入限制:目前仅北京一、北京四、上海一、上海二、广州、香港、新加坡、贵阳一、雅加达区域支持第三方云集群或自建集群通过私网接入HSS。
  • Agent不兼容galera3.34+mysql 5.6.51版本的集群。

步骤一:创建ECS

  1. 登录管理控制台,进入购买弹性云服务器页面。
  2. 根据页面提示,设置弹性云服务器参数。

    建议参考表1所示设置部分参数,其余参数请结合实际情况按需配置。

    表1 购买弹性云服务器参数说明

    参数名称

    参数说明

    取值样例

    计费模式

    弹性云服务器的付费方式。

    • 包年/包月:预付费模式,先付费再使用。根据订单的购买周期计费。
    • 按需计费:后付费模式,先使用再付费。根据实际使用时长秒级计费,按小时结算。
    • 竞价计费:后付费模式,先使用再付费,相对于按需计费有一定的折扣。包含竞价模式和竞享模式,根据实际使用时长秒级计费,按小时结算。

    按需计费

    CPU架构

    选择CPU架构,支持选择“x86计算”“鲲鹏计算”

    x86计算

    实例

    • 搜索规格:输入vCPUs、内存或规格名称直接搜索规格。

      当实例选择“规格类型选型”方式时,支持搜索规格。

    • 通过列表选择规格:通过实例类型和规格代系名称在列表中选择已上线的规格。

    通用计算型,2vCPUs,4GiB

    镜像

    镜像是一个包含了操作系统及必要配置的弹性云服务器模板,使用镜像可以创建弹性云服务器。

    公共镜像,EulerOS 2.5 64bit(40GIB)

    系统盘

    系统盘用于存储云服务器的操作系统,创建云服务器时自带系统盘,且系统盘自动初始化。

    超高IO

  3. 单击“立即购买”,在提示框中单击“同意并立即购买”,支付完成后,云服务器将自动创建,并默认开机。
  4. 在弹性云服务器列表中,查看创建成功的服务器,并记录私网IP地址。

步骤二:搭建nginx

  1. 登录步骤一:创建ECS创建好的服务器。
  2. 执行以下命令,进入temp目录。

    cd /temp

  3. 执行以下命令,创建install_nginx.sh文件。

    vi install_nginx.sh

  4. 按“i”键进入编辑模式,并将以下内容复制粘贴到install_nginx.sh文件。

    #!/bin/bash
    
    yum -y install pcre-devel zlib-devel popt-devel openssl-devel openssl
    wget http://www.nginx.org/download/nginx-1.21.0.tar.gz
    tar zxf nginx-1.21.0.tar.gz -C /usr/src/
    cd /usr/src/nginx-1.21.0/
    useradd -M -s /sbin/nologin nginx
    ./configure \
    --prefix=/usr/local/nginx \
    --user=nginx \
    --group=nginx \
    --with-file-aio \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --with-http_flv_module \
    --with-http_ssl_module \
    --with-stream \
    --with-pcre && make && make install
    ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
    nginx

  1. 粘贴完成后,按Esc键,输入以下命令,按回车键退出,完成配置。

    :wq!

  2. 执行以下命令,安装nginx。

    bash /tmp/install_nginx.sh

  3. 执行以下命令,修改nginx配置文件。

    cat <<END >> /usr/local/nginx/conf/nginx.conf
    stream {
      upstream backend_hss_anp {
        server {{anp代理地址}}:8091 weight=5 max_fails=3 fail_timeout=30s;
      }
      server {
        listen 8091 so_keepalive=on;
        proxy_connect_timeout 10s;
        proxy_timeout 300s;
        proxy_pass backend_hss_anp ;
      }
    }
    END

    “{{anp代理地址}}”请参考表2,修改为实际地址后,再执行命令。

    表2 anp代理地址

    区域

    anp代理地址

    贵阳一、曼谷、上海二、广州、北京四、北京二、上海一

    hss-proxy.区域代码.myhuaweicloud.com

    其他区域

    hss-anp.区域代码.myhuaweicloud.com

    区域代码请参见地区和终端节点

  4. 执行以下命令,使nginx配置生效。

    nginx -s reload

步骤三:准备kubeconfig文件

kubeconfig文件用于将集群的操作权限授权给HSS,方式一配置的kubeconfig文件包含集群管理员权限,方式二生成的kubeconfig文件仅包含HSS所需权限,如果您担心过度授权的问题,请通过方式二准备kubeconfig文件。

  • 方式一:配置默认的kubeconfig文件
    默认的kubeconfig文件在$HOME/.kube/config路径下,您需要按以下操作创建HSS的专属命名空间。
    1. 登录任一集群节点。
    2. 创建hss.yaml文件,并将以下内容复制到hss.yaml文件中。
      {"metadata":{"name":"hss"},"apiVersion":"v1","kind":"Namespace"}
    3. 执行以下命令,创建HSS的专属命名空间。
      kubectl apply -f hss.yaml
  • 方式二:生成HSS专用的kubeconfig文件
    1. 创建HSS的专属命名空间和服务账号。
      1. 登录任一集群节点。
      2. 创建hss-account.yaml文件,并将以下内容复制到hss-account.yaml文件中。
        {"metadata":{"name":"hss"},"apiVersion":"v1","kind":"Namespace"}{"metadata":{"name":"hss-user","namespace":"hss"},"apiVersion":"v1","kind":"ServiceAccount"}{"metadata":{"name":"hss-user-token","namespace":"hss","annotations":{"kubernetes.io/service-account.name":"hss-user"}},"apiVersion":"v1","kind":"Secret","type":"kubernetes.io/service-account-token"}
      3. 执行以下命令,创建HSS的专属命名空间和服务账号。
        kubectl apply -f hss-account.yaml
    2. 生成kubeconfig文件。
      1. 创建gen_kubeconfig.sh文件,并将以下内容复制到gen_kubeconfig.sh文件中。
        #!/bin/bash
        
        KUBE_APISERVER=`kubectl config view  --output=jsonpath='{.clusters[].cluster.server}' | head -n1 `
        CLUSTER_NAME=`kubectl config view -o jsonpath='{.clusters[0].name}'`
        kubectl get secret hss-user-token -n hss -o yaml |grep ca.crt: | awk '{print $2}' |base64 -d >hss_ca_crt
        
        kubectl config set-cluster ${CLUSTER_NAME} --server=${KUBE_APISERVER}  --certificate-authority=hss_ca_crt  --embed-certs=true --kubeconfig=hss_kubeconfig.yaml
        kubectl config set-credentials hss-user --token=$(kubectl describe secret hss-user-token -n hss | awk '/token:/{print $2}') --kubeconfig=hss_kubeconfig.yaml
        kubectl config set-context hss-user@kubernetes --cluster=${CLUSTER_NAME} --user=hss-user --kubeconfig=hss_kubeconfig.yaml
        kubectl config use-context hss-user@kubernetes --kubeconfig=hss_kubeconfig.yaml
      2. 执行以下命令,生成名称为“hss_kubeconfig.yaml”的kubeconfig文件
        bash gen_kubeconfig.sh

步骤四:为第三方私网集群安装Agent

集群所使用的镜像仓区分公网镜像仓和私网镜像仓:

  • 公网镜像仓:只要能连接外网,都可以访问的镜像仓库,通常由第三方提供,企业付费使用。
  • 私网镜像仓:企业自行部署和维护的镜像仓库,只有授权用户才能访问。

根据您的镜像仓类型,选择以下方式为集群安装Agent。