华为云用户手册

  • 排查项三:带云硬盘卷的Deployment的副本数大于1 问题描述: 创建Pod失败,并报“添加存储失败”的事件,事件信息如下。 Multi-Attach error for volume "pvc-62a7a7d9-9dc8-42a2-8366-0f5ef9db5b60" Volume is already used by pod(s) testttt-7b774658cb-lc98h 问题定位: 查看Deployment的副本数是否大于1。 Deployment中使用EVS存储卷时,副本数只能为1。若用户在后台指定Deployment的实例数为2以上,此时CCE并不会限制Deployment的创建。但若这些实例Pod被调度到不同的节点,则会有部分Pod因为其要使用的EVS无法被挂载到节点,导致Pod无法启动成功。 解决方案: 使用EVS的Deployment的副本数指定为1,或使用其他类型存储卷。
  • 排查项四:EVS磁盘文件系统损坏 问题描述: 创建Pod失败,出现类似信息,磁盘文件系统损坏。 MountVolume.MountDevice failed for volume "pvc-08178474-c58c-4820-a828-14437d46ba6f" : rpc error: code = Internal desc = [09060def-afd0-11ec-9664-fa163eef47d0] /dev/sda has file system, but it is detected to be damaged 解决方案: 在EVS中对磁盘进行备份,然后执行如下命令修复文件系统。 fsck -y {盘符}
  • 通过API或kubectl操作CCE集群,创建的资源是否能在控制台展示? 在CCE控制台,暂时不支持显示的kubernetes资源有:DaemonSet、 ReplicationController、ReplicaSets、Endpoints等。 若需要查询这些资源,请通过kubectl命令进行查询。 此外,Deployment、Statefulset、Service和Pod资源需满足以下条件,才能在控制台显示: Deployment和Statefulset:标签中必须至少有一个标签是以"app"为key的。 Pod:只有创建了无状态工作负载(Deployment)和有状态工作负载(StatefulSet)后,对应Pod实例才会在工作负载详情页的“实例列表”页签中显示。 Service:Service当前在无状态工作负载(Deployment)和有状态工作负载(StatefulSet)详情页的“访问方式”页签中显示。 此处的显示需要Service与工作负载有一定的关联: 工作负载中的一个标签必须是以"app"为key。 Service的标签和工作负载的标签保持一致。 父主题: API&kubectl
  • 为什么访问部署的应用时浏览器返回404错误码? CCE服务本身在浏览器中访问应用时不会返回任何的错误码,请优先排查自身业务。 404 Not Found 如果404的返回如下图所示,说明这个返回码是ELB返回的,说明ELB找不到相关的转发策略。请排查相关的转发规则等。 图1 404:ALB 如果404的返回如下图所示,说明这个返回码是由nginx(客户业务)返回,请排查客户自身业务问题。 图2 404:nginx/1.**.* 父主题: 网络异常
  • 解决方法 一般情况下,您需要从证书提供商处获取有效的合法证书。如果您需要在测试环境下使用,您可以自建证书和私钥,方法如下: 自建的证书通常只适用于测试场景,使用时界面会提示证书不合法,影响正常访问,建议您选择手动上传合法证书,以便通过浏览器校验,保证连接的安全性。 自己生成tls.key。 openssl genrsa -out tls.key 2048 将在当前目录生成一个tls.key的私钥。 用此私钥去签发生成自己的证书。 openssl req -new -x509 -key tls.key -out tls.crt -subj /C=CN/ST=Beijing/O=Devops/CN=example.com -days 3650 生成的私钥格式必须为: ----BEGIN RSA PRIVATE KEY-----……………………………………………..-----END RSA PRIVATE KEY----- 生成的证书格式必须为: -----BEGIN CERTIFICATE-----……………………………………………………………-----END CERTIFICATE----- 导入证书。 新建TLS密钥时,对应位置导入证书及私钥文件即可。
  • CCE集群中工作负载镜像的拉取策略? 容器在启动运行前,需要镜像。镜像的存储位置可能会在本地,也可能会在远程镜像仓库中。 Kubernetes配置文件中的imagePullPolicy属性是用于描述镜像的拉取策略的,如下: Always:总是拉取镜像。 imagePullPolicy: Always IfNotPresent:本地有则使用本地镜像,不拉取。 imagePullPolicy: IfNotPresent Never:只使用本地镜像,从不拉取,即使本地没有。 imagePullPolicy: Never 说明如下: 如果设置为Always ,则每次容器启动或者重启时,都会从远程仓库拉取镜像。 如果省略imagePullPolicy,策略默认为Always。 如果设置为IfNotPreset,有下面两种情况: 当本地不存在所需的镜像时,会从远程仓库中拉取。 如果需要的镜像和本地镜像内容相同,只不过重新打了tag。此tag镜像本地不存在,而远程仓库存在此tag镜像。这种情况下,Kubernetes并不会拉取新的镜像。 父主题: 其他
  • 解答 方案1: 建议您将集群中GPU节点的不可调度的污点去掉,以便GPU插件驱动能够正常安装,同时您需要安装高版本的GPU驱动。 如果您的集群中有非GPU的容器,可以通过亲和、反亲和策略将这个容器不调度到GPU节点上。 方案2: 建议您安装高版本的GPU驱动,通过kubectl更新GPU插件的配置,增加配置如下: tolerations:- operator: "Exists" 增加该配置后,可以使GPU插件驱动能够正常安装到打了污点的GPU节点上。
  • 如何设置容器内的DNS策略? CCE支持通过dnsPolicy标记每个Pod配置不同的DNS策略: None:表示空的DNS设置,这种方式一般用于想要自定义DNS配置的场景,而且,往往需要和dnsConfig配合一起使用达到自定义DNS的目的。 Default:从运行所在的节点继承名称解析配置。即容器的域名解析文件使用kubelet的“--resolv-conf”参数指向的域名解析文件(CCE集群在该配置下对接云上DNS)。 ClusterFirst:这种方式表示Pod内的DNS使用集群中配置的DNS服务,简单来说,就是使用Kubernetes中kubedns或coredns服务进行域名解析。如果解析不成功,才会使用宿主机的DNS配置进行解析。 如果未明确指定dnsPolicy,则默认使用“ClusterFirst”: 如果将dnsPolicy设置为“Default”,则名称解析配置将从运行pod的工作节点继承。 如果将dnsPolicy设置为“ClusterFirst”,则DNS查询将发送到kube-dns服务。 对于以配置的集群域后缀为根的域的查询将由kube-dns服务应答。所有其他查询(例如,www.kubernetes.io)将被转发到从节点继承的上游名称服务器。在此功能之前,通常通过使用自定义解析程序替换上游DNS来引入存根域。但是,这导致自定义解析程序本身成为DNS解析的关键路径,其中可伸缩性和可用性问题可能导致集群丢失DNS功能。此特性允许用户在不接管整个解析路径的情况下引入自定义解析。 如果某个工作负载不需要使用集群内的coredns,可以使用kubectl命令或API将此策略设置为dnsPolicy: Default。 父主题: 域名DNS
  • 解决方案 登录节点。 重新创建PV和VG,但是创建时报错: root@host1:~# pvcreate /dev/vdbDevice /dev/vdb excluded by a filter 这是由于添加的磁盘是在另一个虚拟机中新建的,已经存在了分区表,当前虚拟机并不能识别磁盘的分区表,运行parted命令重做分区表,中途需要输入三次命令。 root@host1:~# parted /dev/vdbGNU Parted 3.2Using /dev/vdbWelcome to GNU Parted! Type 'help' to view a list of commands.(parted) mklabel msdosWarning: The existing disk label on /dev/vdb will be destroyed and all data on this disk will be lost. Do you want to continue?Yes/No? yes(parted) quitInformation: You may need to update /etc/fstab. 再次运行pvcreate,当询问是否擦除dos签名时,输入y,就可以将磁盘创建为PV。 root@host1:~# pvcreate /dev/vdbWARNING: dos signature detected on /dev/vdb at offset 510. Wipe it? [y/n]: yWiping dos signature on /dev/vdb.Physical volume "/dev/vdb" successfully created 创建VG。 判断该节点的docker盘,如果是/dev/vdb和/dev/vdc两个盘,则执行下面的命令: root@host1:~# vgcreate vgpaas /dev/vdb /dev/vdc 如果只有/dev/vdb盘,则执行下面的命令: root@host1:~# vgcreate vgpaas /dev/vdb 创建完成后,重置节点即可恢复。
  • CCE集群节点中安装kubelet的端口主要有哪些? CCE集群节点中安装kubelet的端口主要有如下几个: 10250 –port:kubelet服务监听的端口,api会检测他是否存活。 10248 –healthz-port:健康检查服务的端口。 10255 –read-only-port:只读端口,可以不用验证和授权机制,直接访问。 4194 –cadvisor-port:当前节点cadvisor运行的端口。 父主题: 节点运行
  • 基本介绍 表1 CCE和CCI基本介绍 云容器引擎CCE 云容器实例CCI 云容器引擎(Cloud Container Engine,简称CCE)提供高度可扩展的、高性能的企业级Kubernetes集群,支持运行Docker容器,提供了Kubernetes集群管理、容器应用全生命周期管理、应用服务网格、Helm应用模板、插件管理、应用调度、监控与运维等容器全栈能力,为您提供一站式容器平台服务。借助云容器引擎,您可以在华为云上轻松部署、管理和扩展容器化应用程序。 详细介绍请查看什么是云容器引擎。 云容器实例(Cloud Container Instance, CCI)服务提供Serverless Container(无服务器容器)引擎,让您无需创建和管理服务器集群即可直接运行容器。通过CCI您只需要管理运行在Kubernetes上的容器化业务,无需管理集群和服务器即可在CCI上快速创建和运行容器负载,使容器应用零运维,使企业聚焦业务核心,为企业提供了Serverless化全新一代的体验和选择。 而Serverless是一种架构理念,是指不用创建和管理服务器、不用担心服务器的运行状态(服务器是否在工作等),只需动态申请应用需要的资源,把服务器留给专门的维护人员管理和维护,进而专注于应用开发,提升应用开发效率、节约企业IT成本。传统上使用Kubernetes运行容器,首先需要创建运行容器的Kubernetes服务器集群,然后再创建容器负载。 详细介绍请查看什么是云容器实例。
  • 创建方式 表2 创建方式不同 云容器引擎CCE 云容器实例CCI CCE是基于Kubernetes的托管式容器管理服务,可以提供原生Kubernetes体验,可以一键创建原生Kubernetes集群,与社区能力基本一致。 使用CCE,您需要创建集群和节点,简单、低成本、高可用,无需管理Master节点。 CCI提供 Serverless Container引擎,在华为云上部署容器时,您不需要购买和管理E CS ,可以直接在华为云上运行容器和Pod,为您省去底层ECS的运维和管理工作。 使用CCI,您无需创建集群,无需创建和管理Master节点及Work节点,可直接启动应用程序。
  • CCE与CCI两者的配合 通过安装Virtual-Kubelet插件,可以在在短时高负载场景时,将部署在CCE上的无状态工作负载(Deployment)、有状态工作负载(StatefulSet)、普通任务(Job)三种资源类型的容器实例(Pod),弹性创建到华为云云容器实例CCI服务上,以减少集群扩容带来的消耗。 具体功能如下: 支持容器实例实现秒级弹性伸缩:在集群资源不足时,无需新增节点,virtual-kubelet插件将自动为您在云容器实例CCI侧创建容器实例,减少运维成本。 无缝对接华为云 容器镜像服务 SWR,支持使用公用镜像和私有镜像。 支持CCI容器实例的事件同步、监控、日志、exec、查看状态等操作。 支持查看虚拟弹性节点的节点容量信息。 支持CCE和CCI两侧实例的service网络互通。 详情请参见华为云 CCE弹性伸缩 至CCI。
  • 问题建议 方案一:发布服务使用域名发现,需要提前预制好主机名和命名空间,服务发现使用域名的方式,注册的服务的域名为:服务名.命名空间.svc.cluster.local 。这种使用有限制,注册中心部署必须容器化部署。 方案二:容器部署使用主机网络部署,然后亲和到集群的某一个节点,这样可以明确知道容器的服务地址(就是节点的地址),注册的地址为:服务所在节点IP,这种方案可以满足注册中心利用VM部署,缺陷是使用主机网络效率没有容器网络高。
  • 如何让多个Pod均匀部署到各个节点上? Kubernetes中kube-scheduler组件负责Pod的调度,对每一个新创建的 Pod 或者是未被调度的 Pod,kube-scheduler 会选择一个最优的节点去运行这个 Pod。kube-scheduler 给一个 Pod 做调度选择包含过滤和打分两个步骤。过滤阶段会将所有满足 Pod 调度需求的节点选出来,在打分阶段 kube-scheduler 会给每一个可调度节点进行优先级打分,最后kube-scheduler 会将 Pod 调度到得分最高的节点上,如果存在多个得分最高的节点,kube-scheduler 会从中随机选取一个。 打分优先级中节点调度均衡(BalancedResourceAllocation)只是其中一项,还有其他打分项会导致分布不均匀。详细的调度说明请参见Kubernetes 调度器和调度策略。 想要让多个Pod尽可能的均匀分布在各个节点上,可以考虑使用工作负载反亲和特性,让Pod之间尽量“互斥”,这样就能尽量均匀的分布在各节点上。 示例如下: kind: DeploymentapiVersion: apps/v1metadata: name: nginx namespace: defaultspec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: container-0 image: nginx:alpine resources: limits: cpu: 250m memory: 512Mi requests: cpu: 250m memory: 512Mi affinity: podAntiAffinity: # 工作负载反亲和 preferredDuringSchedulingIgnoredDuringExecution: # 尽量满足如下条件 - podAffinityTerm: labelSelector: # 选择Pod的标签,与工作负载本身反亲和 matchExpressions: - key: app operator: In values: - nginx namespaces: - default topologyKey: kubernetes.io/hostname # 在节点上起作用 imagePullSecrets: - name: default-secret 父主题: 调度策略
  • 解决方法 如果想要解决这个问题,可以在定时任务的CronJob中配置参数:startingDeadlineSeconds。该参数只能使用kubectl命令,或者通过API接口进行创建或修改。 YAML示例如下: apiVersion: batch/v1kind: CronJobmetadata: name: hellospec: startingDeadlineSeconds: 200 schedule: "* * * * *" jobTemplate: spec: template: spec: containers: - name: hello image: busybox:1.28 imagePullPolicy: IfNotPresent command: - /bin/sh - -c - date; echo Hello restartPolicy: OnFailure 如果重新创建CronJob,也可以临时规避这个限制。
  • 排查项一:容器+容器端口 在CCE控制台界面或者使用kubectl命令查找pod的IP,然后登录到集群内的节点或容器中,使用curl命令等方法手动调用接口,查看结果是否符合预期。 如果容器IP+端口不能访问,建议登录到业务容器内使用“127.0.0.1+端口”进行排查。 常见问题: 容器端口配置错误(容器内未监听访问端口)。 URL不存在(容器内无相关路径)。 服务异常(容器内的业务BUG)。 检查集群网络内核组件是否异常(容器隧道网络模型:openswitch内核组件;VPC网络模型:ipvlan内核组件)。
  • Headless Service使用场景 当某个工作负载的多个Pod之间没有任何区别时,可以使用普通Service,利用集群kube-proxy实现Service的负载均衡,例如常见的无状态应用Nginx。 但是某些应用场景下,工作负载的各个实例间存在不同的角色区别,比如Redis集群,每个Redis实例都是不同的,它们之间存在主从关系,并且需要相互通信。这种情况下,使用普通Service无法通过Cluster IP来保证访问到某个指定的实例,因此需要设置Headless Service直接访问Pod的真实IP地址,实现Pod间互相访问。 Headless Service一般结合StatefulSet来部署有状态的应用,比如Redis集群、MySQL集群等。
  • Headless Service和普通Service的区别 普通Service: 一个Service可能对应多个EndPoint(Pod),client访问的是Cluster IP,通过iptables或IPVS规则转到Real Server,从而达到负载均衡的效果。例如:Service有2个EndPoint,但是DNS查询时只会返回Service的地址,具体client访问的是哪个Real Server,是由iptables或IPVS规则来决定的,客户端无法自行选择访问指定的EndPoint。 Headless Service: 访问Headless Service时,DNS查询会如实的返回每个真实的EndPoint(Pod的IP地址)。对应到每一个EndPoints,即每一个Pod,都会有对应的DNS域名;这样Pod之间就可以互相访问,达到实例间发现和访问的效果。
  • 排查项二:节点IP+节点端口 只有发布为节点访问(NodePort)或负载均衡(LoadBalancer )的服务才能通过节点IP+节点端口进行访问。 节点访问(NodePort)类型: 节点的访问端口就是节点对外发布的端口。 负载均衡(LoadBalancer )类型: 负载均衡的节点端口通过“编辑YAML”可以查看。 如下图所示: nodePort: 30637为节点对外暴露的端口。targetPort: 80为Pod对外暴露的端口。port: 123为服务对外暴露的端口,负载均衡类型的服务同时使用该端口配置ELB的监听器。 找到节点端口(nodePort)后,使用容器所在节点的IP地址+端口进行访问,并查看结果是否符合预期。 常见问题: 节点的入方向对业务端口未放通。 节点配置了自定义路由,并且配置错误。 pod的label与service的label不匹配(kubectl或API创建)。
  • 排查项三:负载均衡IP+端口 如果使用负载均衡IP+端口不能访问,但节点IP+端口可以访问。 请排查: 相关端口或URL的后端服务器组是否符合预期。 节点上的安全组是否对ELB暴露了相关的协议或端口。 四层ELB的健康检查是否开启(未开启的话,请开启)。 七层ELB的访问方式中使用的证书是否过期。 常见问题: 发布四层ELB时,如果客户在界面未开启健康检查,ELB可能会将流量转发到异常的节点。 UDP协议的访问,需要放通节点的ICMP协议。 pod的label与service的label不匹配(kubectl或API创建)。
  • 如何收集CCE集群中节点的日志? CCE节点日志文件如下表所示。 表1 1.21及以上版本节点日志列表 日志名称 路径 kubelet日志 /var/log/cce/kubernetes/kubelet.log kube-proxy日志 /var/log/cce/kubernetes/kube-proxy.log everest日志(存储) /var/log/cce/everest-csi-driver yangtse日志(网络) /var/log/cce/yangtse canal日志 /var/log/cce/canal 系统日志 /var/log/messages 表2 1.19及以下版本节点日志列表 日志名称 路径 kubelet日志 /var/paas/sys/log/kubernetes/kubelet.log kube-proxy日志 /var/paas/sys/log/kubernetes/kube-proxy.log everest日志(存储) /var/log/cce/everest-csi-driver yangtse日志(网络) /var/paas/sys/log/yangtse canal日志 /var/paas/sys/log/canal 系统日志 /var/log/messages 父主题: 节点运行
  • 基础概念 云容器引擎(CCE) 云容器引擎(Cloud Container Engine,简称CCE)提供高度可扩展的、高性能的企业级Kubernetes集群,支持运行Docker容器,提供了Kubernetes集群管理、容器应用全生命周期管理、应用服务网格、Helm应用模板、插件管理、应用调度、监控与运维等容器全栈能力,为您提供一站式容器平台服务。借助云容器引擎,您可以在华为云上轻松部署、管理和扩展容器化应用程序。 应用管理与运维平台(ServiceStage) ServiceStage应用管理与运维平台是一个应用托管和微服务管理平台,可以帮助企业简化部署、监控、运维和治理等应用生命周期管理工作。ServiceStage面向企业提供微服务、移动和Web类应用开发的全栈解决方案,帮助您的各类应用轻松上云,聚焦业务创新,帮助企业数字化快速转型。
  • 解决方法 您可以使用kubectl命令删除残留的模板实例。 安装模板时,模板中的一些资源可能已经创建成功,因此首先要手动删除这些资源。确保残留的资源删除后,需删除模板实例。 若为 helm v2 的实例,在kube-system命名空间下查询模板实例对应的配置项(ConfigMap),例如: 删除该配置项,此时模板实例即删除成功: 若为helm v3 的实例,在实例所在命名空间下查询模板实例对应的密钥(Secret),例如: 删除该密钥,此时模板实例即删除成功: 注:若用户通过前端console操作,在获取实例、更新实例等操作中CCE会自动尝试转换原v2模板实例到v3模板实例。在密钥中存储release信息,原配置项中release信息不会删除。建议用户在配置项和密钥中均查询并删除该实例。
  • 解决方案 创建pod时,在pod的annotation中需增加kubernetes.io/extend-path-mode。 创建deployment时,需要在template中的annotation增加kubernetes.io/extend-path-mode。 如下为创建pod的yaml示例,在annotation中添加kubernetes.io/extend-path-mode关键字后,完全匹配到containername,name,mountpath三个字段,则会在volumeMount中增加对应的extendpathmode: apiVersion: v1kind: Podmetadata: name: test-8b59d5884-96vdz generateName: test-8b59d5884- namespace: default selfLink: /api/v1/namespaces/default/pods/test-8b59d5884-96vdz labels: app: test pod-template-hash: 8b59d5884 annotations: kubernetes.io/extend-path-mode: '[{"containername":"container-0","name":"vol-156738843032165499","mountpath":"/tmp","extendpathmode":"PodUID"}]' metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]' ownerReferences: - apiVersion: apps/v1 kind: ReplicaSet name: test-8b59d5884 uid: 2633020b-cd23-11e9-8f83-fa163e592534 controller: true blockOwnerDeletion: truespec: volumes: - name: vol-156738843032165499 hostPath: path: /tmp type: '' - name: default-token-4s959 secret: secretName: default-token-4s959 defaultMode: 420 containers: - name: container-0 image: 'nginx:latest' env: - name: PAAS_APP_NAME value: test - name: PAAS_NAMESPACE value: default - name: PAAS_PROJECT_ID value: b6315dd3d0ff4be5b31a963256794989 resources: limits: cpu: 250m memory: 512Mi requests: cpu: 250m memory: 512Mi volumeMounts: - name: vol-156738843032165499 mountPath: /tmp extendPathMode: PodUID - name: default-token-4s959 readOnly: true mountPath: /var/run/secrets/kubernetes.io/serviceaccount terminationMessagePath: /dev/termination-log terminationMessagePolicy: File imagePullPolicy: Always restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst serviceAccountName: default serviceAccount: default nodeName: 192.168.0.24 securityContext: {} imagePullSecrets: - name: default-secret - name: default-secret affinity: {} schedulerName: default-scheduler tolerations: - key: node.kubernetes.io/not-ready operator: Exists effect: NoExecute tolerationSeconds: 300 - key: node.kubernetes.io/unreachable operator: Exists effect: NoExecute tolerationSeconds: 300 priority: 0 dnsConfig: options: - name: timeout value: '' - name: ndots value: '5' - name: single-request-reopen enableServiceLinks: true 表1 关键参数说明 参数 参数类型 描述 containername String 容器名称。 name String volume的名称。 mountpath String 挂载路径 extendpathmode String 将在已创建的“卷目录/子目录”中增加一个三级目录,便于更方便获取单个Pod输出的文件。 支持如下五种类型,详情请参考容器日志。 None:不配置拓展路径。 PodUID:Pod的ID。 PodName:Pod的名称。 PodUID/ContainerName:Pod的ID/容器名称。 PodName/ContainerName:Pod名称/容器名称。
  • 问题现象 创建或升级实例失败,提示“Create release by helm failed:rendered manifests contain a resource that already exists。Unable to continue with install: ..., label validation error:missing key \"app.kubernetes.io/managed-by\":must be set to\"Helm\" ... 创建模板实例失败”。
  • 问题根因 当集群中存在APIService对象时,删除命名空间会先访问APIService对象,若APIService资源无法正常访问,会阻塞命名空间删除。除用户创建的APIService对象资源外,CCE集群部分插件也会自动创建APIService资源,如metrics-server, prometheus插件。 APIService使用介绍请参考:https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/
  • 解决方案 删除相关报错资源,重新通过helm创建。 查看报错内容,确认产生冲突的资源。请您关注“Unable to continue with install:”后的信息,例如以下报错为default命名空间中的test-nginx工作负载出现冲突。 前往集群控制台或执行以下kubectl命令删除集群中的test-nginx工作负载。此处仅为示例,请根据实际报错信息进行删除。 kubectl delete deploy test-nginx -n default 解决资源冲突后,尝试重新安装模板。
  • 问题现象 删除命名空间时,命名空间一直处“删除中”状态,无法删除。查看命名空间yaml配置,status中有报错“DiscoveryFailed”,示例如下: 上图中报错信息为:Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request 表示当前删除命名空间动作阻塞在kube-apiserver访问metrics.k8s.io/v1beta1 接口的APIService资源对象。
  • 节点上监听了哪些端口 表1 Node节点监听端口 目的端口 协议 端口说明 10248 TCP kubelet健康检查端口 10250 TCP kubelet服务端口,提供节点上工作负载的监控信息和容器的访问通道 10255 TCP kubelet只读端口,提供节点上工作负载的监控信息 动态端口(与宿主机限制的范围有关,比如 内核参数 net.ipv4.ip_local_port_range) TCP kubelet 随机监听一个端口,与CRI Shim通信获取Exec URL 10249 TCP kube-proxy metric端口,提供kube-proxy组件的监控信息 10256 TCP kube-proxy健康检查端口 动态端口(32768~65535) TCP docker exec等功能的websocket监听端口 动态端口(32768~65535) TCP containerd exec等功能的websocket监听端口 28001 TCP icagent本地侦听端口,接受节点syslog日志 28002 TCP icagent健康检查端口 20101 TCP yangtse-agent/canal-agent健康检查端口(容器隧道网络模式涉及) 20104 TCP yangtse-agent/canal-agent的metric端口,提供组件的监控信息(容器隧道网络模式涉及) 3125 TCP everest-csi-driver侦听健康检查端口 3126 TCP everest-csi-driver pprof端口 19900 TCP node-problem-detector 健康检查server端口 19901 TCP node-problem-detector对接普罗采集监控数据端口 4789 UDP ovs侦听端口,容器网络vxlan报文的传输通道(容器隧道网络模式涉及) 4789 UDPv6 ovs侦听端口,容器网络vxlan报文的传输通道(容器隧道网络模式涉及) 动态端口30000~32767 TCP kube-proxy侦听端口,做4层负载均衡。K8s会给NodePort和Loadbalancer类型的服务分配一个随机端口,默认范围在30000~32767 动态端口30000~32767 UDP kube-proxy侦听端口,做4层负载均衡。K8s会给NodePort和Loadbalancer类型的服务分配一个随机端口,默认范围在30000~32767 123 UDP ntpd侦听端口,负责时间同步 20202 TCP PodLB侦听端口,做7层负载均衡,负责转发容器镜像拉取请求 父主题: 节点运行
共100000条