云服务器内容精选

  • 集群备份 本地备份 创建备份文件压缩包存放的目录。 执行备份命令: ./ucs-ctl backup 集群名 --path 备份路径 --type local 示例如下: ./ucs-ctl backup gpu-test --path /home/ggz/gpu-test --type local 执行成功后,会在指定的备份路径下产生名为:集群名-backup-时间戳.tar.gz这样一个备份压缩文件。 备份压缩文件存在ha.yaml、etcd-snapshot目录、crt目录,etcd-snapshot包含etcd备份数据,crt包含证书与加解密材料。 远端备份
  • 磁盘挂卷 表6 磁盘挂卷 节点类型 磁盘挂载点 可用大小(GB) 用途 集群管理节点 /var/lib/containerd 50 存放containerd镜像目录 /run/containerd 30 containerd运行时目录 /var/paas/run 50 etcd数据目录(推荐使用ssd盘) /var/paas/sys/log 20 存放日志目录 /mnt/paas 40 容器运行挂载目录 /tmp 20 临时文件目录 集群计算节点 /var/lib/containerd 100 存放containerd镜像目录 /run/containerd 50 containerd运行时目录 /mnt/paas 50 容器运行挂载目录 /tmp 20 临时文件目录
  • 用户规划 表9 用户规划 用户 用户组 用户ID 用户组ID 密码 用途 root root 0 0 - U CS 本地集群安装时使用的默认用户,也可以指定其他用户来安装本地集群。安装用户要求满足如下条件: 规划的所有集群管理节点密码一致。 用户具有完全的root用户权限。 说明: 安装完成后用户可以自行修改该用户密码或限制该用户root权限。 paas paas 10000 10000 - UCS本地集群服务进程的运行用户、用户组,在安装过程中创建。该用户和用户组对应名称为paas:paas,用户ID和用户组ID对应为10000:10000,因此安装前需要保证用户名、用户组名、用户ID和用户组ID不被占用。若发生冲突,需提前删除对应的用户或者用户组。
  • 外部依赖 表5 外部依赖项 依赖项 功能解释 DNS服务器 DNS服务器需要能够解析OBS、SWR、 IAM 、DNS等服务的 域名 ,这些服务的域名请参见地区及终端节点。 公网接入情况下,节点可自动识别默认DNS配置,需提前将DNS服务器上游设置为公网DNS,接下来无需再手动进行DNS服务器配置。 私网接入情况下,节点无法识别默认DNS配置,因此需提前配置VPCEP解析能力,详情请参考安装前准备。若您还未搭建DNS服务器,可参考DNS进行搭建。 apt源或yum源 确保有可用的apt源或yum源,因为在本地集群执行纳管节点时(纳管节点是指待添加到本地集群管理的服务器),部分安装组件如ntp等,需要从apt源或yum源中获取依赖包。 须知: apt源操作适用于操作系统为Ubuntu的节点,yum源操作适用于操作系统为HCE或Redhat。 NTP服务器 可选,用于保证集群各节点时间同步,如果使用,推荐用户提供外置NTP服务器。
  • 资源规格 UCS所安装的本地集群为HA版,适用于商用场景,以满足容灾高可用需求。商用版资源规格如下所述: 表2 容器平台基础能力资源规格 节点类型 数量 CPU (Cores) Mem (GiB) Disk (G)-系统盘 Disk (G)-高性能盘 Disk (G)-数据盘 备注 集群管理节点 3 8 16 100 50 300 需要提供一个VIP用于高可用。 集群计算节点 按需 2 4 40 - 100 数量按需可扩展。 表3 容器智能分析节点资源规格 节点类型 CPU (Cores) Mem (GiB) 监控prometheus Requests:1 Limits:4 Requests:2 Limits:12 事件log-agent Requests:0.5 Limits:3 Requests:1.5 Limits:2.5 表4 云原生服务中心计算节点资源规格 类型 数量 CPU (Cores) Mem (GiB) Disk (G)-系统盘 Disk (G)-高性能盘 Disk (G)-数据盘 operator-chef 1 Requests:0.5 Limits:2 Requests:0.5 Limits:2 不涉及 不涉及 10(日志) helm-operator 1 Requests:0.3 Limits:1.5 Requests:0.3 Limits:1.5 不涉及 不涉及 10(日志) ops-operator 1 Requests:0.3 Limits:1.5 Requests:0.3 Limits:1.5 不涉及 不涉及 10(日志)
  • 防火墙规划 防火墙的规划需符合表1中要求。 表1 防火墙规划 源设备 源IP 源端口 目的设备 目的IP 目的端口(侦听) 协议 端口说明 侦听端口是否可更改 认证方式 加密方式 ucsctl执行机 源设备所在节点IP ALL 所有节点 目的设备所在节点IP 22 TCP SSH 否 证书/用户名密码 TLS v1.2 所有节点 源设备所在节点IP ALL NTP server 目的设备所在节点IP 123 UDP ntp 否 无 无 所有节点 源设备所在节点IP ALL DNS server 目的设备所在节点IP 53 UDP dns 否 无 无 所有节点 源设备所在节点IP ALL 自建APT源 目的设备所在节点IP 80/443 TCP http 否 无 无 所有节点 源设备所在节点IP ALL 集群负载均衡/VIP 目的设备所在节点IP 5443 TCP kube-apiserver 否 https+证书 TLS v1.2 所有节点 源设备所在节点IP 1024-65535 所有节点 目的设备所在节点IP 1024-65535 ALL 无 否 无 无 所有节点 源设备所在节点IP ALL 所有节点 目的设备所在节点IP 8472 UDP vxlan端口 否 无 无 需要访问ingress的节点 源设备所在节点IP ALL 网络节点 目的设备所在节点IP 80/443/按需指定端口 TCP http 否 https+证书 TLS v1.2 所有节点 源设备所在节点IP ALL 3台master节点 目的设备所在节点IP 5444 TCP kube-apiserver 否 https+证书 TLS v1.2 ucsctl执行机 源设备所在节点IP ALL 华为云OBS服务 obs.cn-north-4.myhuaweicloud.com 443 TCP http 否 https+证书 TLS v1.2 3台master节点 源设备所在节点IP ALL 华为云UCS服务 124.70.21.61 proxyurl.ucs.myhuaweicloud.com 30123 TCP grpc 否 https+证书 TLS v1.2 3台master节点 源设备所在节点IP ALL 华为云IAM服务 iam.cn-north-4.myhuaweicloud.com 443 TCP http 否 https+证书 TLS v1.2 所有节点 源设备所在节点IP All 华为云SWR服务 swr.cn-north-4.myhuaweicloud.com 443 TCP http 否 https+证书 TLS v1.2 所有节点 源设备所在节点IP ALL Ubuntu官方源/国内代理源 按需配置 80/443 TCP http 否 无 无 监控节点 源设备所在节点IP ALL 华为云 AOM 域名对应IP地址 443 TCP http 否 https+证书 TLS v1.2 监控节点 源设备所在节点IP ALL 华为云LTS 域名对应IP地址 443 TCP http 否 https+证书 TLS v1.2
  • 卸载节点 方法一: 在执行机上执行 ./ucs-ctl delete node -c [集群名称] -n [node ip1],[node ip2],… 使用-n指定具体IP,使用英文逗号分隔。 方法二: 在执行机执行 ./ucs-ctl delete node -c [集群名称] -m node.csv 使用-m指定纳管时使用的节点文件,可以一次性卸载所有节点。 如果命令执行失败,请参考如何手动清理本地集群节点?处理。
  • 纳管节点 在执行机上使用./ucs-ctl config generator -t node -o node.csv命令生成纳管节点时使用的配置文件。 将所需节点的参数写入配置文件,使用英文逗号分隔,如下所示。参数描述如表1。 表1 配置文件参数描述 参数 描述 Node IP 节点IP User SSH连接用户 Password SSH连接密码 示例: Node IP,User,Password 123.45.6.789,root,******** 123.45.6.890,root,******** 在执行机上执行以下命令./ucs-ctl create node -c [集群名称] -m node.csv,完成节点的纳管。 node.csv文件中存在密钥信息,请妥善保管。
  • 上传配置文件 登录UCS控制台,单击待接入集群栏的“点击接入”进入集群接入界面,可选择“公网接入”和“私网接入”。 选择接入方式并下载代理配置文件。 若选择“公网接入”,直接在界面单击“下载文件”,下载本地集群代理配置文件“agent-[集群名称].yaml”。 若选择“私网接入”,需要先选择项目,再选择安装前准备(私网接入)中创建的终端节点,然后单击“下载文件”,下载本地集群代理配置文件“agent-[集群名称].yaml”。 集群代理配置文件存在私有密钥信息,每个集群仅能下载一次,请您妥善保管。 输入集群安装所需参数并下载集群配置文件“cluster-[集群名称].yaml”。 若集群为1.28.5及之后版本,此处可选择“集群架构”X86 或者 ARM类型。 图1 下载集群配置文件 当前集群的节点CPU架构暂不支持异构混部。若本地集群安装失败,请参考本地集群安装失败怎么办? 1.28.5及之后集群版本,支持集群架构选择。 通过远程传输工具,使用root用户将下载的“agent-[集群名称].yaml”和“cluster-{集群名称}.yaml”文件上传到执行机的“/root/”目录下。 若您需要使用L4或L7负载均衡能力,则需要将集群网络类型配置为BGP,具体操作请参见Cilium。 执行机如果出现SSH连接超时,请参考虚拟机SSH连接超时处理方法处理。 选择集群架构后,请确认ucs-ctl的执行机与集群架构一致。
  • 获取本地集群私钥签发的jwks 使用kubectl连接本地集群。 执行如下命令获取公钥。 kubectl get --raw /openid/v1/jwks 返回结果为一个 json 字符串,是当前集群的签名公钥,用于访问身份提供商。 { "keys": [ { "kty": "RSA", "e": "AQAB", "use": "sig", "kid": "Ew29q....", "alg": "RS256", "n": "peJdm...." } ] }
  • 配置身份提供商 登录IAM控制台,创建身份提供商,协议选择OpenID Connect。 图2 创建身份提供商 单击“确定”,然后修改身份提供商信息,需要修改的信息如表1 身份提供商配置参数说明。若需要创建身份转换规则,单击“创建规则”进行创建。 图3 修改身份提供商信息 图4 创建身份转换规则 表1 身份提供商配置参数说明 参数 说明 访问方式 选择“编程访问” 配置信息 身份提供商 URL:https://kubernetes.default.svc.cluster.local。 客户端 ID:ucs-cluster-identity。 签名公钥:本地集群的jwks,获取方法请参见获取本地集群私钥签发的jwks。 身份转换规则 身份映射规则是将工作负载的 ServiceAccount 和 IAM 用户组做映射。 例如:在集群default命名空间下创建一个名为 XXX 的 ServiceAccount,映射到 demo 用户组(后续使用身份提供商 ID 访问云服务就具有 demo 用户组的权限)。 值的格式为:system:serviceaccount:Namespace:ServiceAccountName 单击“确定”。
  • 方案流程 使用工作负载Identity的流程如图1 使用工作负载Identity流程,具体流程如下: 前置授权。 在UCS获取本地集群私钥签发的jwks,该公钥用于验证集群签发的ServiceAccount Token。 在 IAM 配置身份供应商,标志当前集群在IAM侧的身份。 为身份提供商配置集群签发的公钥,后续负载使用Token发送请求时,IAM使用该公钥验证Token。 添加 ServiceAccount 与 IAM 账号的映射规则,配置后,当前 ServiceAccount 拥有对应用户的 IAM 权限。 工作负载配置Token。 部署应用并配置ServiceAccount。 挂载对应ServiceAccount的Token。 验证获取的Token能否正常进行访问。 访问IAM接口获取IAM Token。 使用IAMToken 访问云服务。 图1 使用工作负载Identity流程
  • 获取IAM Token 创建 ServiceAccount,此处 ServiceAccount 的名称需要与2时填写的 ServiceAccountName 保持一致。 apiVersion: v1 kind: ServiceAccount metadata: name: test_sa_name # 与配置身份转换规则处保持一致 如下所示,在工作负载中新增 ServiceAccount 以及 Volume 相关配置。 apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: nginx version: v1 template: metadata: labels: app: nginx version: v1 spec: containers: - name: container-1 image: nginx:latest volumeMounts - mountPath: "/var/run/secrets/tokens" # 将Kubernetes生成的ServiceAccountToken 挂载到 /var/run/secrets/tokens/token_path 文件内 name: token-volume imagePullSecrets: - name: default-secret serviceAccountName: test_sa_name # 上一步创建的ServiceAccount的名称 volumes: - name: token-volume projected: defaultMode: 420 sources: - serviceAccountToken: audience: ucs-cluster-identity # 此处取值必须为身份提供商的客户端ID expirationSeconds: 7200 # 过期时间 path: token_path # 路径名称,可自定义 创建完成后,登录到容器中获取 Token。 构造请求体数据,项目ID的获取请参见获取项目ID。 { "auth" : { "id_token" : { "id" : "eyJhbGciOiJSUzIXXXXX" // 上一步获得的 token 内容 }, "scope": { "project" : { "id" : "05495693df80d3c92fa1c01795c2be02", // 项目 ID "name" : "cn-north-7" } } } } 请求IAM接口以获取IAM Token,IAM的Endpoint信息请参见地区和终端节点。 curl -i --location --request POST 'https://{{iam endpoint}}/v3.0/OS-AUTH/id-token/tokens' --header 'X-Idp-Id: {{workload_identity}}' --header 'Content-Type: application/json' --data @token_body.json workload_identity为1中注册的身份提供商名称,此示例内为 ucs-cluster-identity。 token_body.json 为构造的请求体数据文件。 返回体内获取IAM Token,响应消息头中 X-Subject-Token 字段即为 IAM Token。
  • 使用IAM Token访问云服务 本小节以请求LTS服务为例,介绍如何使用IAM Token访问云服务。 在使用IAM Token访问云服务前,应为用户组配置相应服务的权限。 请求LTS服务需要在用户组中加上 LTS FullAccess 权限,如图所示。 执行如下命令,调用对应服务接口。 curl --location --request GET 'https://ltsperform.cn-north-7.myhuaweicloud.com/v2/{{项目 ID}}/groups/{{日志组 ID}}/streams' \--header 'Content-Type: application/json;charset=utf-8' \--header 'X-Auth-Token: {{上一步获得的 IAM token}}' \--data-raw '' 日志组ID可在LTS服务内进行查询。 期望的返回结果如图所示
  • 为什么需要Cilium Cilium是一种高性能、高可靠性的容器网络解决方案,它通过eBPF技术在Linux内核层面实现网络和安全通信。它支持多种传输层协议,例如TCP、UDP和HTTP,并提供了多种安全特性,例如应用层访问控制和服务网格支持。Cilium还支持Kubernetes网络策略,并提供了全局网络和服务发现功能,能够帮助管理员更好地管理和部署云原生应用和服务。 Cilium的eBPF 技术通过在Linux内核层面实时监控网络流量,实现了高效的安全数据包交换。该技术在网络功能虚拟化、容器网络和边缘计算等场景中都有广泛应用,能够帮助企业提升网络性能和安全性,为云原生应用提供更好的基础设施支持。 基本功能 为容器提供网络互通:Cilium通过为每个容器分配一个独特的IP地址来实现容器间的网络互通,同时支持多种网络协议。 具备网络安全检测能力:Cilium支持通过集成第三方的网络安全检测服务,如Snort等,来进行网络流量分析和检测。 自动进行 容器安全 策略管理:Cilium通过基于Kubernetes 的自定义资源定义(CRD)机制,为每个容器自动创建安全策略,保障容器的安全。 实现容器级别的负载均衡:Cilium支持实现容器级别的负载均衡,允许通过多种负载均衡算法来分配网络请求流量。 提供服务发现功能:Cilium支持借助基于Kubernetes的服务探测机制,自动发现容器内的服务,并将其注册到Kubernetes API中,以便于其他容器访问。