为第三方私网集群安装Agent
操作场景
本指导适用于在不能访问公网的第三方私网集群上安装Agent。按照本指导配置完成后,HSS将自动在集群节点上安装Agent,并能够随集群扩容自动为新节点安装Agent,在集群缩容时同步卸载Agent。
前提条件
第三方私网集群已创建专线连接,与云上VPC实现了网络互通。如何创建专线连接请参见云专线入门指引
约束与限制
- 集群编排平台限制:1.19及以上Kubernetes。
- 节点操作系统限制:Linux系统。
- 节点规格要求:CPU必须2核及以上,内存必须4GiB及以上,系统盘必须40GiB及以上,数据盘必须100GiB及以上。
- 私网集群接入限制:目前仅北京一、北京四、上海一、上海二、广州、香港、新加坡、贵阳一、雅加达区域支持第三方云集群或自建集群通过私网接入HSS。
- Agent不兼容Galera 3.34和MySQL 5.6.51或更早版本的集群。
步骤一:创建ECS
- 登录管理控制台,进入购买弹性云服务器页面。
- 根据页面提示,设置弹性云服务器参数。
建议参考表1所示设置部分参数,其余参数请结合实际情况按需配置。关于购买弹性云服务器更详细的参数介绍请参见自定义购买ECS。
表1 购买弹性云服务器参数说明 参数名称
参数说明
取值样例
计费模式
弹性云服务器的付费方式。
- 包年/包月:预付费模式,先付费再使用。根据订单的购买周期计费。
- 按需计费:后付费模式,先使用再付费。根据实际使用时长秒级计费,按小时结算。
- 竞价计费:后付费模式,先使用再付费,相对于按需计费有一定的折扣。包含竞价模式和竞享模式,根据实际使用时长秒级计费,按小时结算。
按需计费
CPU架构
选择CPU架构,支持选择“x86计算”、“鲲鹏计算”。
x86计算
实例
通用计算型,2vCPUs,4GiB
镜像
镜像是一个包含了操作系统及必要配置的弹性云服务器模板,使用镜像可以创建弹性云服务器。
公共镜像,EulerOS 2.5 64bit(40GIB)
系统盘
系统盘用于存储云服务器的操作系统,创建云服务器时自带系统盘,且系统盘自动初始化。
超高IO
- 单击“立即购买”,在提示框中单击“同意并立即购买”,支付完成后,云服务器将自动创建,并默认开机。
- 在弹性云服务器列表中,查看创建成功的服务器,并记录私网IP地址。
步骤二:搭建nginx
- 登录步骤一:创建ECS创建好的服务器。
- 执行以下命令,进入temp目录。
cd /temp
- 执行以下命令,创建install_nginx.sh文件。
vi install_nginx.sh
- 按“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
- 粘贴完成后,按Esc键,输入以下命令,按回车键退出,完成配置。
:wq!
- 执行以下命令,安装nginx。
bash /tmp/install_nginx.sh
- 执行以下命令,修改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
区域代码请参见地区和终端节点。
- 执行以下命令,使nginx配置生效。
nginx -s reload
步骤三:准备kubeconfig文件
kubeconfig文件用于将集群的操作权限授权给HSS,方式一配置的kubeconfig文件包含集群管理员权限,方式二生成的kubeconfig文件仅包含HSS所需权限,如果您担心过度授权的问题,请通过方式二准备kubeconfig文件。
- 方式一:配置默认的kubeconfig文件
默认的kubeconfig文件在$HOME/.kube/config路径下,您需要按以下操作创建HSS的专属命名空间。
- 登录任一集群节点。
- 创建hss.yaml文件,并将以下内容复制到hss.yaml文件中。
{"metadata":{"name":"hss"},"apiVersion":"v1","kind":"Namespace"}
- 执行以下命令,创建HSS的专属命名空间。
kubectl apply -f hss.yaml
- 方式二:生成HSS专用的kubeconfig文件
- 创建HSS的专属命名空间和服务账号。
- 登录任一集群节点。
- 创建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"}
- 执行以下命令,创建HSS的专属命名空间和服务账号。
kubectl apply -f hss-account.yaml
- 生成kubeconfig文件。
- 创建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
- 执行以下命令,生成名称为“hss_kubeconfig.yaml”的kubeconfig文件
bash gen_kubeconfig.sh
- 创建gen_kubeconfig.sh文件,并将以下内容复制到gen_kubeconfig.sh文件中。
- 创建HSS的专属命名空间和服务账号。
步骤四:为第三方私网集群安装Agent
集群所使用的镜像仓区分公网镜像仓和私网镜像仓:
- 公网镜像仓:只要能连接外网,都可以访问的镜像仓库,通常由第三方提供,企业付费使用。
- 私网镜像仓:企业自行部署和维护的镜像仓库,只有授权用户才能访问。
根据您的镜像仓类型,选择以下方式为集群安装Agent。