云服务器内容精选
-
策略实例示例 以下策略实例展示了策略定义生效的资源类型,pararmeters中表示不允许容器镜像tag为latest。 apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sDisallowedTags metadata: name: container-image-must-not-have-latest-tag spec: match: kinds: - apiGroups: [""] kinds: ["Pod"] namespaces: - "default" parameters: tags: ["latest"] exemptImages: ["openpolicyagent/opa-exp:latest", "openpolicyagent/opa-exp2:latest"]
-
符合策略实例的资源定义 容器镜像tag不为latest,符合策略实例。 apiVersion: v1 kind: Pod metadata: name: opa-allowed spec: containers: - name: opa image: openpolicyagent/opa:0.9.2 args: - "run" - "--server" - "--addr=localhost:8080"
-
不符合策略实例的资源定义 容器镜像tag为latest,不符合策略实例。 apiVersion: v1 kind: Pod metadata: name: opa-disallowed-2 spec: containers: - name: opa image: openpolicyagent/opa:latest args: - "run" - "--server" - "--addr=localhost:8080"
-
为什么需要控制扩缩速率 HPA controller默认的扩缩容总原则是:快速扩容,低速缩容。然而,若仅依靠配置稳定窗口时长,在窗口时长过后即失去了对扩缩容速率的控制能力,无法真正实现对扩缩容速率的准确控制。您可以通过配置负载伸缩策略的YAML文件中spec的behavior结构,来更准确灵活地控制FederatedHPA的自动扩缩速度。该结构支持为每个FederatedHPA策略独立配置扩缩容速率,以及为扩容与缩容配置不同的速率。
-
单独使用CronFederatedHPA 当不使用FederatedHPA策略,仅使用CronFederalHPA策略时,CronFederalHPA策略直接作用于工作负载,定时扩缩Pod数量。您可以通过设置CronFederalHPA策略的生效时间与目标Pod数,实现在固定时间段将工作负载自动扩缩至期望数量。 图2 单独使用CronFederatedHPA策略工作原理 具体流程为: 创建CronFederalHPA策略,设置CronFederatedHPA的生效时间与目标Pod数。 生效时间:CronFederalHPA策略会在该生效时间自动触发工作负载扩缩。 目标Pod数:在到达生效时间时,所期望的Pod数。 到达生效时间时,比较工作负载中的现有Pod数与1中设置的目标Pod数:目标Pod数大于现有Pod数时扩容工作负载,目标Pod数小于现有Pod数时缩容工作负载。 现有Pod数:CronFederatedHPA策略生效之前,工作负载中的Pod数量。
-
约束与限制 仅华为云账号或具备U CS FullAccess权限的用户可进行策略中心的启用操作。 为非华为云集群启用策略中心前,请确保集群能够拉取公网镜像。 启用策略中心功能后,系统将在舰队或集群上安装Gatekeeper插件。需要注意的是,插件会占用部分集群资源(如表1所示)。因此,在启用策略中心功能之前,请确保您的集群具有足够的资源。这将有助于确保策略中心功能的顺利部署,同时避免对现有工作负载的性能产生负面影响。 表1 Gatekeeper插件的资源占用情况 CPU Mem Requests:100m * 3 Limits:1000m * 3 Requests:256Mi * 3 Limits:512Mi * 3 “* 3”表示有3个Pod。 当舰队或集群处于启用中的状态时,请避免在该舰队或集群上执行任何操作。在启用过程中执行操作可能会影响启用的成功。
-
操作步骤 登录UCS控制台,在左侧导航栏中选择“策略中心”。 单击页面中的“启用”按钮,弹出“启用策略管理功能”对话框。 在下拉列表中选择容器舰队或集群,单击“确定”,返回主页面。 您将会看到舰队或集群的策略管理状态显示为启用中。请耐心等待大约3分钟,策略管理将成功启用。 如果在启用策略管理功能时出现“The thorttling threshold has been reached: policy ip over ratelimit”,说明因为启用集群较多被限流了,请稍等一会再重试即可。
-
策略实例示例 以下策略实例展示了策略定义生效的资源类型,pararmeters中定义了允许的组列表allowedGroups和允许的用户列表allowedUsers。 # IMPORTANT: Before deploying this policy, make sure you allow-list any groups # or users that need to deploy workloads to kube-system, such as cluster- # lifecycle controllers, addon managers, etc. Such controllers may need to # update service account names during automated rollouts (e.g. of refactored # configurations). You can allow-list them with the allowedGroups and # allowedUsers properties of the NoUpdateServiceAccount Constraint. apiVersion: constraints.gatekeeper.sh/v1beta1 kind: NoUpdateServiceAccount metadata: name: no-update-kube-system-service-account spec: match: namespaces: ["kube-system"] kinds: - apiGroups: [""] kinds: # You can optionally add "Pod" here, but it is unnecessary because # Pod service account immutability is enforced by the Kubernetes API. - "ReplicationController" - apiGroups: ["apps"] kinds: - "ReplicaSet" - "Deployment" - "StatefulSet" - "DaemonSet" - apiGroups: ["batch"] kinds: # You can optionally add "Job" here, but it is unnecessary because # Job service account immutability is enforced by the Kubernetes API. - "CronJob" parameters: allowedGroups: [] allowedUsers: []
-
符合策略实例的资源定义 没有更新ServiceAccount,符合策略实例。 # Note: The gator tests currently require exactly one object per example file. # Since this is an update-triggered policy, at least two objects are technically # required to demonstrate it. Due to the gator requirement, we only have one # object below. The policy should allow changing everything but the # serviceAccountName field. kind: Deployment apiVersion: apps/v1 metadata: name: policy-test namespace: kube-system labels: app: policy-test spec: replicas: 1 selector: matchLabels: app: policy-test-deploy template: metadata: labels: app: policy-test-deploy spec: # Changing anything except this field should be allowed by the policy. serviceAccountName: policy-test-sa-1 containers: - name: policy-test image: ubuntu command: - /bin/bash - -c - sleep 99999
-
使用云原生日志采集插件采集日志 查看并配置日志采集策略。 登录容器舰队控制台,单击集群名称进入集群,选择左侧导航栏的“日志中心”。 右上角单击“日志采集策略”,将显示当前集群所有上报LTS的日志策略。 图1 查看日志策略 若安装插件时勾选了采集标准输出和采集Kubernetes事件,将创建两个日志策略,并对接默认的LTS日志组、日志流。 创建日志策略:单击上方“创建日志策略”,输入要采集的配置信息。 策略模板:若安装插件时未勾选需要采集的日志策略,或者删除了对应的日志策略,可通过该方式重新创建默认日志策略。 图2 使用策略模板 自定义策略:用于配置自定义日志策略。 图3 自定义策略 表2 自定义策略参数说明 参数 说明 日志类型 指定采集哪类日志。 容器标准输出:用于采集容器标准输出,可以按命名空间、工作负载名称、实例标签配置采集策略。 容器文件路径:用于采集容器内的日志,可以按工作负载和实例标签配置采集策略。 节点文件路径:用于采集节点上的日志文件,一条日志策略只能配置一个文件路径。 日志源 采集哪些容器的日志。 所有容器:可以指定采集某个命名空间的所有容器,如不指定则采集所有命名空间的容器。 指定工作负载:指定采集哪些工作负载容器的日志,可以指定采集工作负载中具体容器的日志,如不指定则采集所有容器的日志。 指定实例标签:根据标签指定采集哪些工作负载容器的日志,可以指定采集工作负载中具体容器的日志,如不指定则采集所有容器的日志。 路径配置 用于配置需要采集的日志路径。 文件路径必须以/ 开头,只能包含大写字母、小写字母、数字或特殊字符-_/*?,且长度不能超过512个字符。 文件名称只能包含大写字母、小写字母、数字或特殊字符-_*?.。 日志文件夹:请填写绝对路径。日志文件名:不支持.gz、.tar、.zip后缀类型。 最多有三级目录采用通配符匹配,且第一级目录不能使用通配符。 目录名和文件名支持完整名称和通配符模式,通配符只支持星号(*)和半角问号(?)。 星号(*)表示匹配多个任意字符。半角问号(?)表示匹配单个任意字符。例如: 日志路径为/var/logs/* 文件名*.log,表示/var/logs下所有目录中后缀名为.log的文件。 日志路径为 /var/logs/app_* 文件名*.log,表示/var/logs目录下所有符合app_*格式的目录中后缀名为.log的文件。 如果业务容器的数据目录是通过数据卷(Volume)挂载的,插件不支持采集它的父目录,需设置采集目录为完整的数据目录。例如/var/log/service目录是数据卷挂载的路径,则设置采集目录为/var/log或/var/log/*将采集不到该目录下的日志,需设置采集目录为/var/log/service。 日志格式 单行文本 每条日志仅包含一行文本,以换行符 \n 作为各条日志的分界线。 多行文本 有些程序打印的日志存在一条完整的日志数据跨占多行(例如 Java 程序日志)情况,日志采集系统默认是按行采集。如果您想在日志采集系统中按整条显示日志,可以开启多行文本,采用首行正则的方式进行匹配,当选择多行文本时,需填写日志匹配格式。 例如: 需采集的日志格式如下,则需填写时间的正则匹配,在日志匹配格式处填写:\d{4}-\d{2}-\d{2} \d{2}\:\d{2}\:\d{2}.* 则下面以日期开头三行日志会作为一条完整日志。 2022-01-01 00:00:00 Exception in thread "main" java.lang.RuntimeException: Something has gone wrong, aborting! at com.myproject.module.MyProject.badMethod(MyProject.java:22) at com.myproject.module.MyProject.oneMoreMethod(MyProject.java:18) 上报到 云日志 服务(LTS) 用于配置日志上报的日志组和日志流。 使用默认日志组/日志流:将为您自动选择默认日志组(k8s-log-{集群ID})和默认的日志流(stdout-{集群ID})。 自定义日志组/日志流:可在下拉框选择任意日志组和日志流。 日志组 日志组是云日志服务进行日志管理的基本单位。如果您未创建日志组,CCE会提示您进行创建,默认名称为k8s-log-{集群ID},如 k8s-log-bb7eaa87-07dd-11ed-ab6c-0255ac1001b3。 日志流 日志流(LogStream):日志流是日志读写的基本单位,日志组中可以创建日志流,将不同类型的日志分类存储,方便对日志进一步分类管理。在安装插件或者根据模板创建日志策略时,会自动创建以下日志流: 容器日志:默认名称为stdout-{集群ID},如 stdout-bb7eaa87-07dd-11ed-ab6c-0255ac1001b3 k8s事件:默认名称为event-{集群ID},如 event-bb7eaa87-07dd-11ed-ab6c-0255ac1001b3 编辑日志策略:单击“编辑”按钮,可对已经存在的日志策略进行修改。 删除日志策略:单击“删除”按钮,可对已经存在的日志策略进行删除。 查看日志。 登录容器舰队控制台,单击集群名称进入集群,选择左侧导航栏的“日志中心”。 日志中心下有5个页签,支持不同类型日志查看。 容器日志:显示默认日志组(k8s-log-{集群ID})下默认日志流(stdout-{集群ID})中的所有日志数据,华为云集群支持通过工作负载搜索。 图4 容器日志查询 Kubernetes事件:显示默认日志组(k8s-log-{集群ID})下默认日志流(event-{集群ID})中的所有日志数据,用于查询集群产生的Kubernetes事件。 控制面组件日志:显示默认日志组(k8s-log-{集群ID})下默认日志流({组件名}-{集群ID})中的所有日志数据,用于查看集群控制面重要组件的日志信息。 控制面审计日志:显示默认日志组(k8s-log-{集群ID})下默认日志流audit-{集群ID})中的所有日志数据,用于查看集群控制面审计日志信息。 全局日志查询:支持查看所有日志组日志流下的日志信息。可通过选择日志流查看所选日志流中的日志信息,默认会选择集群默认日志组(k8s-log-{集群ID}),可通过单击切换日志组右侧的图标切换其他日志组。 图5 全局日志查询 单击右上角“日志采集策略”,单击“查看日志”,可以直接跳转至对应日志策略的日志列表。 图6 查看日志
-
集群数据面组件说明 当前支持收集以下两种类型的控制面日志,每个日志流对应一个Kubernetes控制层面组件。关于这些组件的更多信息,请参见Kubernetes组件。 表1 集群控制面组件说明 类别 组件 日志流 说明 数据面组件日志 default-stdout stdout-{clusterID} 采集标准输出。默认日志组:k8s-logs-{集群ID}。 default-event event-{clusterID} 采集Kubernetes事件。默认日志组:k8s-logs-{集群ID}。
-
本地集群 关于本地集群KubeConfig详情请参见本地集群KubeConfig文件。 获取本地集群的KubeConfig需要使用ucs-ctl工具,获取步骤如下: 使用ucs-ctl获取集群名称。 ./ucs-ctl get cluster 使用ucs-ctl导出指定集群的KubeConfig。 ./ucs-ctl get kubeconfig -c test-redhat86 -o kubeconfig 可以使用ucs-ctl get kubeconfig -h查看获取KubeConfig所使用到的参数。 -c, --cluster:指定待导出KubeConfig的集群名。 -e, --eip:指定API server的eip。 -o, --output:指定KubeConfig导出文件名。
-
第三方云厂商集群 由于第三方云厂商集群提供的KubeConfig文件格式存在差异,您需要自行创建一个具有所有集群资源操作权限的ServiceAccount,并获取这个ServiceAccount的token,用于配置UCS支持的KubeConfig文件。 通过kubectl连接集群。 创建ucs-service-account.yaml文件。 apiVersion: v1 kind: ServiceAccount metadata: name: ucs-user --- apiVersion: v1 kind: Secret metadata: name: ucs-user-token annotations: kubernetes.io/service-account.name: "ucs-user" type: kubernetes.io/service-account-token --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: ucs-user-role rules: - apiGroups: - '*' resources: - '*' verbs: - '*' - nonResourceURLs: - '*' verbs: - get --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: ucs-user-role-binding subjects: - kind: ServiceAccount name: ucs-user namespace: default roleRef: kind: ClusterRole name: ucs-user-role apiGroup: rbac.authorization.k8s.io 在集群中执行以下命令创建ServiceAccount。 kubectl apply -f ucs-service-account.yaml 使用以下命令获取token。 kubectl get secret ucs-user-token -n default -oyaml | grep token: | awk '{print $2}' | base64 -d ;echo 配置KubeConfig文件。 参考以下示例创建一个kubeconfig.yaml文件,并将token替换为4中获取的值。 kubeconfig.yaml: kind: Config apiVersion: v1 preferences: {} clusters: - name: internalCluster cluster: server: 'https://kubernetes.default.svc.cluster.local:443' insecure-skip-tls-verify: true users: - name: ucs-user user: token: 'MIIFbAYJKo*****' contexts: - name: internal context: cluster: internalCluster user: ucs-user current-context: internal KubeConfig文件中的关键参数说明如下: 参数名 参数值 说明 是否可选 server 'https://kubernetes.default.svc.cluster.local:443' APIServer的集群内访问地址。由于部分厂商集群对APIServer地址做了外部访问限制,可能导致UCS无法正常接入集群,因此建议使用集群内访问地址。 必选 insecure-skip-tls-verify true 如使用该参数,表示跳过证书认证,参数值必须为true。 二选一 说明: 当server字段为集群内访问地址时,优选跳过证书认证。 certificate-authority-data base64加密字符串 如使用该参数,表示集群开启双向认证,参数值为经base64加密后的服务端证书。 原生K8s集群的服务端证书默认地址为master节点的“/etc/kubernetes/pki/ca.crt”。 token 字符串 用户以token方式进行认证,参数值为4中获取的token值。 三选一 说明: 优选token方式,UCS不支持除这三种方式外的其他认证方式。 client-certificate-data client-key-data base64加密字符串 用户以证书加私钥的方式进行认证。 client-certificate-data:经base64加密后的客户端证书。 client-key-data:经base64加密后的客户端私钥。 username password 字符串 用户通过用户名密码进行认证。 username:访问集群的用户名。 password:用户名对应的密码。 使用5中配置的KubeConfig文件接入集群,详细步骤请继续参考注册附着集群(公网接入)或注册附着集群(私网接入)。 使用UCS期间,创建的ServiceAccount、ClusterRole、ClusterRoleBinding对象均不能删除,否则token将会失效。 如集群不再接入UCS,可使用kubectl delete -f ucs-service-account.yaml命令删除UCS创建的SA对象。 如修改集群kubeconfig.yaml文件的server地址为集群的apiserver地址后,集群接入到UCS无法打开,解决方案请参见附着集群接入失败--排查集群kube-apiserver状态。
-
自建集群 如果您的集群是通过Kubernetes官方二进制文件或Kubeadm等部署工具搭建的标准集群,可直接使用以下方法获取KubeConfig文件。 该方法不适用于云服务商提供的商用集群,商用集群的KubeConfig文件获取请参考第三方云厂商集群。 登录集群Master节点。 查看集群访问凭证。默认情况下,自建集群的配置文件路径为Master节点的“$HOME/.kube/config”,如您的集群指定了其他KubeConfig配置文件,请自行更换路径。 cat $HOME/.kube/config 复制该凭证内容。 在本地创建一个YAML文件,将上一步中复制的凭证内容粘贴至该文件并保存。 使用4中的YAML文件接入集群,详细步骤请继续参考注册附着集群(公网接入)或注册附着集群(私网接入)。
-
工作负载基本概念 无状态工作负载(即Kubernetes中的Deployment):实例之间完全独立、功能相同,具有弹性伸缩、滚动升级等特性。如:nginx、wordpress,创建无状态工作负载请参见创建无状态工作负载。 有状态工作负载(即Kubernetes中的StatefulSet):实例之间不完全独立,具有稳定的持久化存储和网络标示,以及有序的部署、收缩和删除等特性。如:mysql-HA、etcd,创建有状态工作负载请参见创建有状态工作负载。 守护进程集(即Kubernetes中的DeamonSet):在集群的每个节点上运行一个Pod,且保证只有一个Pod,适合一些系统层面的应用,如日志收集、资源监控等,创建守护进程集请参见创建守护进程集。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格