云服务器内容精选

  • 步骤1:创建命名空间 登录云容器实例管理控制台。 在左侧导航栏中选择“命名空间”,在右侧页面中“通用计算型”命名空间下单击“创建”。 填写命名空间名称。 设置VPC,选择使用已有VPC或新建VPC,新建VPC需要填写VPC网段,建议使用网段:10.0.0.0/8~22,172.16.0.0/12~22,192.168.0.0/16~22。 此处VPC和子网的网段不能为10.247.0.0/16,10.247.0.0/16是云容器实例预留给负载访问的网段。如果您使用此网段,后续可能会造成IP冲突,导致负载无法创建或服务不可用;如果您不需要通过负载访问,而是直接访问Pod,则可以使用此网段。 设置子网网段。 您需要关注子网的可用IP数,确保有足够数量的可用IP,如果没有可用IP,则会导致负载创建失败。 单击“创建”。
  • 安装容器引擎 上传镜像前,您需要安装容器引擎,如果您已经安装了容器引擎,请确保容器引擎为1.11.2及以上版本。 参考购买弹性云服务器创建一台带有公网IP地址的Linux弹性云服务器。 作为演示,弹性云服务器和公网IP的规格不需要太高,例如弹性云服务器的规格为“1vCPUs | 2GiB”、公网IP带宽为“1 Mbit/s”即可,操作系统请选择“CentOS 7.6”。 您也可以使用其他机器安装容器引擎,不创建弹性云服务器。 返回弹性云服务器列表,单击“远程登录”登录购买的弹性云服务器。 使用如下命令快速安装容器引擎。 curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh sudo systemctl daemon-reload sudo systemctl restart docker
  • 构建镜像 此处以如何使用Dockerfile,并使用nginx为基础镜像构建镜像2048为例。在构建镜像之前,需要先创建Dockerfile文件。 从镜像仓库拉取nginx镜像,作为基础镜像: docker pull nginx 下载2048静态页面应用: git clone https://gitee.com/jorgensen/2048.git 构建Dockerfile。 输入命令: vi Dockerfile 编辑Dockerfile文件内容: FROM nginx MAINTAINER Allen.Li@gmail.com COPY . /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] nginx为基础镜像,基础镜像可根据创建的应用类型进行选择,例如创建的是Java应用,基础镜像可选择Java镜像。 /usr/share/nginx/html为nginx存放Web静态页面的路径。 80为容器端口。 Dockerfile内容格式,详情请参考Dockerfile reference。 构建镜像2048。 输入命令: docker build -t='2048' . 创建镜像成功,如下图: 图1 成功构建镜像 查询镜像: docker images 显示如下图,说明镜像构建成功: 图2 查询镜像
  • 创建 IAM 用户 如果您需要多用户协同操作管理您账号下的资源,为了避免共享您的密码/访问密钥,您可以通过IAM创建用户,并授予用户对应权限。这些用户可以使用特别的登录链接和自己单独的用户账号访问华为云,帮助您高效的管理资源,您还可以设置账号安全策略确保这些账号的安全,从而降低您的企业信息安全风险。 华为云注册账号无需授权,由华为云账号创建的IAM用户需要授予相应的权限才能使用CCI,具体请参见权限管理。
  • 操作流程 操作步骤 说明 准备工作 您需要 注册华为账号 ,并为账户充值。 步骤一:构建镜像并上传至SWR镜像仓库 将应用构建镜像并上传镜像仓库,便于在云容器实例创建负载时,拉取上传的镜像。 步骤二:创建命名空间 您需要在CCI服务中创建一个命名空间,便于项目管理。 步骤三:创建负载 配置基本信息和访问信息。 步骤四:访问负载 通过IP或 域名 去访问创建好的负载。 步骤五:清理资源 如果您在完成实践后不需要继续使用CCI,请及时清理资源以免产生额外扣费。
  • 步骤二:创建命名空间 登录云容器实例管理控制台。 在左侧导航栏中选择“命名空间”,在右侧页面中“通用计算型”命名空间下单击“创建”。 填写命名空间名称。 设置VPC,选择使用已有VPC或新建VPC,新建VPC需要填写VPC网段,建议使用网段:10.0.0.0/8~22,172.16.0.0/12~22,192.168.0.0/16~22。 此处VPC和子网的网段不能为10.247.0.0/16,10.247.0.0/16是云容器实例预留给负载访问的网段。如果您使用此网段,后续可能会造成IP冲突,导致负载无法创建或服务不可用;如果您不需要通过负载访问,而是直接访问Pod,则可以使用此网段。 设置子网网段。 您需要关注子网的可用IP数,确保有足够数量的可用IP,如果没有可用IP,则会导致负载创建失败。 单击“创建”。
  • 方式二:使用profile控制pod调度到CCI 登录集群节点,配置profile资源。 vi profile.yaml 限制CCE集群最大负载数,配置local maxNum和scaleDownPriority的profile模板示例如下: apiVersion: scheduling.cci.io/v1 kind: ScheduleProfile metadata: name: test-cci-profile namespace: default spec: objectLabels: matchLabels: app: nginx strategy: localPrefer location: local: maxNum: 20 # 当前暂不支持local/cci同时配置maxNum scaleDownPriority: 10 cci: {} 限制CCI集群最大负载数,配置cci maxNum和scaleDownPriority的profile的模板示例如下: apiVersion: scheduling.cci.io/v1 kind: ScheduleProfile metadata: name: test-cci-profile namespace: default spec: objectLabels: matchLabels: app: nginx strategy: localPrefer location: local: {} cci: maxNum: 20 # 当前暂不支持local/cci同时配置maxNum scaleDownPriority: 10 strategy:调度策略选择。可配置策略值:auto、enforce、localPrefer。详情请参见调度策略。 location内可配置线下IDC和云上pod限制数量maxNum和pod缩容优先级scaleDownPriority,maxNum取值范围[0~int32],scaleDownPriority取值范围[-100, 100]。 local字段和cci字段不可以同时设置maxNum。 缩容优先级为非必填项参数,如果不配置缩容优先级,默认值将为空。
  • 约束与限制 当前只有负载的原生标签能够被ScheduleProfile匹配,使负载能够被ScheduleProfile管理,将CCE集群的Pod调度到CCI。例如通过ExtensionProfile加到负载上的标签不能够被ScheduleProfile匹配,因此不会被ScheduleProfile管理调度功能。 当弹性到CCI的资源调度失败时,bursting节点会被锁定半小时,期间无法调度至CCI。用户可通过CCE集群控制台,使用kubectl工具查看bursting节点状态,若节点被锁定,可手动解锁bursting。
  • 方式一:通过配置labels控制pod调度到CCI 通过CCE集群控制台(console)创建pod调度到CCI。通过CCE集群创建工作负载时,选择CCI弹性承载策略配置,选择“不开启”以外的任意策略。 在CCE集群控制台(console)创建工作负载时,CCI弹性承载支持勾选“bursting-node”或者“virtual-kubelet”,如果使用CCI 1.0请勾选“virtual-kubelet”,如果使用CCI 2.0请勾选“bursting-node”。目前CCI 2.0仅对白名单用户开放,如需使用CCI 2.0服务,请提交工单申请开启CCI 2.0服务。 通过yaml文件在CCE集群节点创建pod调度CCI。成功安装bursting插件后,登录CCE集群节点,在工作负载的yaml文件中添加virtual-kubelet.io/burst-to-cci标签。 apiVersion: apps/v1 kind: Deployment metadata: name: test namespace: default labels: virtual-kubelet.io/burst-to-cci: 'auto' # 弹性到CCI spec: replicas: 2 selector: matchLabels: app: test template: metadata: labels: app: test spec: containers: - image: 'nginx:perl' name: container-0 resources: requests: cpu: 250m memory: 512Mi limits: cpu: 250m memory: 512Mi volumeMounts: [] imagePullSecrets: - name: default-secret
  • 约束与限制 metrics-server无法采集到通过bursting插件弹性到CCI 2.0上的Pod的监控数据,可能会影响HPA工作。如果HPA无法正常工作,请参考弹性伸缩进行处理。 从CCE bursting弹到CCI 2.0的pod,与从CCI 2.0前端或API创建的pod,如非必要,命名空间和pod名请勿同时重复,这将导致CCI 2.0侧的pod监控数据异常。从CCE侧查看pod的监控不受影响。
  • 操作步骤 安装“云原生日志采集插件”和“CCE 突发弹性引擎 (对接 CCI)”插件。 登录CCE控制台。 选择CCE集群,单击进入CCE集群总览页面。 在导航栏左侧单击“插件中心”,进入插件中心首页。 选择“CCE 突发弹性引擎 (对接 CCI)”插件,单击“安装”。 在安装配置中需要勾选“网络互通”功能。 选择“云原生日志采集插件”,单击“安装”。 创建弹性到CCI的负载。 在导航栏左侧单击“工作负载”,进入工作负载首页。 单击“创建工作负载”,具体操作步骤详情请参见创建工作负载。 填写基本信息并完成工作负载创建。更多创建弹性到CCI负载的方式,请参考调度负载到CCI。 配置日志采集策略。 在导航栏左侧单击“日志中心”,进入日志中心首页。 单击“日志采集策略”,进入日志采集策略创建的界面。 配置具体日志采集策略,完成后单击“确定”。 弹性到CCI的Pod不支持日志策略热更新,更新日志采集策略后需要重新部署弹性到CCI的Pod才可生效。 查看弹性到CCI的pod yaml。 为支持CCI pod日志被采集到日志中心,CCE插件CCE Log Collector为pod注入了如下四个annotation: annotation 示例值 coordinator.cci.io/inject-volumes '[{"name":"log-agent-conf","configMap":{"name":"log-agent-cci-logging-config","defaultMode":384},"namespace":"monitoring"},{"name":"log-agent-cert","secret":{"secretName":"log-agent-ca-secret","defaultMode":384},"namespace":"monitoring"}]' logconf.k8s.io/fluent-bit-configmap-reference monitoring-log-agent-cci-logging-config logconfigs.logging.openvessel.io '{"testcci001":{"container_files":{"container-1":"/var/test/*/*.log"},"regulation":""}}'' sandbox-volume.openvessel.io/volume-names log-agent-conf,log-agent-cert 在日志中心查看日志上报。 CCE集群日志中心更详细的用法可以参考CCE插件CCE Log Collector相关文档指导。
  • 简介 CCE集群成功将负载弹性到CCI运行起负载后,用户可以通过CCE的“CCE Log Collector”插件来收集pod的日志,提升工作负载的可观测性。通过阅读本章用户可以快速搭建日志平台,在CCE的日志观测CCI侧日志。 弹性到CCI的负载会默认开启容器标准输出采集并上报到 应用运维管理 AOM 每月赠送每个租户500M的免费日志存储空间,超过500M时将根据实际使用量进行收费,计费规则请参见产品价格详情。 若要关闭标准输出采集可通过在Pod annotation中指定log.stdoutcollection.kubernetes.io: '{"collectionContainers": []}'实现,参考示例: kind: Deployment apiVersion: apps/v1 metadata: name: test namespace: default spec: replicas: 1 template: metadata: annotations: log.stdoutcollection.kubernetes.io: '{"collectionContainers": []}' spec: containers: - name: container-1 image: nginx:latest
  • 约束与限制 使用场景 使用说明 CCE内容器日志采集 + CCI集群容器日志采集 CCE集群内的工作负载支持三种日志采集类型: 容器标准输出:采集集群内指定容器日志,仅支持Stderr和Stdout的日志。 容器文件日志:采集集群内指定容器内的文件日志。 节点文件日志:采集集群内指定节点路径的文件。 须知: 弹性到CCI的工作负载仅支持“容器文件日志”类型的采集策略。 不支持采集的日志文件类型 不支持容器中软链路径的日志采集。 pod通过指定系统、设备、cgroup、tmpfs等挂载目录下的日志无法被采集。 弹性CCI的pod关联多个日志采集策略 为了更好的采集日志,建议为pod预留充足内存。pod被第一个日志策略关联请预留至少50MiB内存。每增加一个关联日志采集策略,建议多预留5MiB内存。 超长日志采集 单条日志最大容量为250KB,超过会被丢弃。 超长日志文件名 容器中长度超过190的日志文件无法被采集。容器中长度在180~190范围的日志文件仅支持采集第一个文件。 日志采集速率 单个Pod单行日志采集速率不超过10000条/秒,多行日志不超过2000条/秒。 最大采集文件数 单个Pod所有日志采集策略监听的文件数不超过2000个文件。 容器停止前日志采集 当容器被停止时,如果出现因网络延迟、资源占用多等原因导致的采集延时,可能会丢失容器停止前的部分日志。
  • CoreDNS域名解析插件版本发布记录 表2 CoreDNS域名解析插件版本记录 插件版本 支持的集群版本 更新特性 社区版本 1.30.6 v1.21 v1.23 v1.25 v1.27 v1.28 v1.29 v1.30 支持Corefile配置 适配CCE v1.30集群 1.10.1 1.29.5 v1.21 v1.23 v1.25 v1.27 v1.28 v1.29 修复部分问题 1.10.1 1.29.4 v1.21 v1.23 v1.25 v1.27 v1.28 v1.29 适配CCE v1.29集群 1.10.1 1.28.7 v1.21 v1.23 v1.25 v1.27 v1.28 支持插件热更新配置,无需滚动升级 1.10.1 1.28.5 v1.21 v1.23 v1.25 v1.27 v1.28 修复部分问题 1.10.1 1.28.4 v1.21 v1.23 v1.25 v1.27 v1.28 适配CCE v1.28集群 1.10.1 1.27.4 v1.19 v1.21 v1.23 v1.25 v1.27 - 1.10.1 1.27.1 v1.19 v1.21 v1.23 v1.25 v1.27 适配CCE v1.27集群 1.10.1 1.25.1 v1.19 v1.21 v1.23 v1.25 适配CCE v1.25集群 1.8.4 1.23.3 v1.15 v1.17 v1.19 v1.21 v1.23 插件依赖例行升级 1.8.4 1.23.2 v1.15 v1.17 v1.19 v1.21 v1.23 插件依赖例行升级 1.8.4 1.23.1 v1.15 v1.17 v1.19 v1.21 v1.23 适配CCE v1.23集群 1.8.4 1.17.15 v1.15 v1.17 v1.19 v1.21 适配CCE v1.21集群 1.8.4 1.17.9 v1.15 v1.17 v1.19 插件依赖例行升级 1.8.4 1.17.7 v1.15 v1.17 v1.19 同步至社区v1.8.4版本 1.8.4 1.17.4 v1.17 v1.19 适配CCE v1.19集群 1.6.5 1.17.3 v1.17 支持v1.17集群,修复存根域配置问题 1.6.5 1.17.1 v1.17 支持v1.17集群 1.6.5
  • 为CoreDNS配置存根域 集群管理员可以修改CoreDNS Corefile的ConfigMap以更改服务发现的工作方式。使用插件proxy可对CoreDNS的存根域进行配置。 如果集群管理员有一个位于10.150.0.1的Consul域名解析服务器,并且所有Consul的域名都带有.consul.local的后缀。在CoreDNS的ConfigMap中添加如下信息即可将该域名服务器配置在CoreDNS中: consul.local:5353 { errors cache 30 proxy . 10.150.0.1 } 修改后最终的ConfigMap如下所示: apiVersion: v1 data: Corefile: |- .:5353 { cache 30 errors health kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure upstream /etc/resolv.conf fallthrough in-addr.arpa ip6.arpa } loadbalance round_robin prometheus 0.0.0.0:9153 proxy . /etc/resolv.conf reload } consul.local:5353 { errors cache 30 proxy . 10.150.0.1 } kind: ConfigMap metadata: name: coredns namespace: kube-system