kubernetes 部署 metrics-server,提示 no metrics known for pod 解决方案及详细原因分析

本文详细解析了metrics-server启动时提示nometricsknownforpod的原因,并提供了两种解决方案:一是通过添加--kubelet-preferred-address-types=InternalIP参数使metrics-server使用IP进行通讯;二是通过--kubelet-insecure-tls参数解决证书验证问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决方案

给部署添加如下命令行即可:

          args:
            - '--kubelet-preferred-address-types=InternalIP'
            - '--kubelet-insecure-tls'

原因

那么是什么导致了 metrics-server 启动提示no metrics known for pod?

  1. 首先需要知道的是metrics-server默认会使用hostname 来进行通讯。
  2. 如果没有进行相应配置的话,那么通过hostname是无法正常通讯的。
  3. 所以使用默认命令行启动,由于无法正常通过hostname通信就会产生错误, 从而提示no metrics known for pod

好了,既然知道问题,我们来找一下怎么解决。

实际上metrics-server不只支持通过hostname进行通讯,还支持使用IP来进行通讯,只不过需要显式指定命令行参数:

--kubelet-preferred-address-types=InternalIP

其中InternalIP可以修改为以下值:

InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP (具体含义这里就不展开了,感兴趣的可以自行了解。)

但是呢,事情到这里还没有结束,当你加上命令行参数后,会发现出现另一个错误x509: cannot validate certificate

这是由于证书验证不通过导致的,所以我们需要让metrics-server忽略掉证书错误。而忽略证书错误也是有命令行支持的,我们添加如下命令行参数就可以解决了:

--kubelet-insecure-tls

到此,通过添加两个命令行就彻底解决了 metrics-server 启动提示no metrics known for pod的问题。

{"name": "unicron-uat-ask", "size": 2, "tags": [{"key": "application", "value": "unicron"}, {"key": "organization", "value": "assurance"}, {"key": "ack.aliyun.com", "value": "ca504d81885844513a1e0d3692c741ea0"}, {"key": "environment", "value": "uat"}], "state": "running", "vpcId": "vpc-uf6m3qw71q6aegk3yxxlf", "zoneId": "cn-shanghai-g", "created": "2023-04-26T18:10:17+08:00", "ipStack": "ipv4", "profile": "Serverless", "updated": "2025-05-26T00:36:22+08:00", "metaData": "{\"Addons\":[{\"name\":\"knative\",\"version\":\"v1.4.1-aliyun.1\"},{\"name\":\"cloud-controller-manager\",\"version\":\"v2.6.0-mgk\"},{\"name\":\"alibaba-log-controller\",\"version\":\"v1.0.0\"},{\"name\":\"logtail-ds\"},{\"name\":\"arms-prometheus\",\"version\":\"1.1.15\"},{\"name\":\"ack-virtual-node\",\"version\":\"v2.12.6\"},{\"name\":\"alb-ingress-controller\",\"version\":\"v2.7.0-aliyun.1-mgk\"},{\"name\":\"metrics-server\",\"version\":\"v0.3.9.3-628a248-aliyun\"},{\"name\":\"ack-pod-identity-webhook\",\"version\":\"0.2.1\"}],\"AuditProjectName\":\"k8s-log-ca504d81885844513a1e0d3692c741ea0\",\"Capabilities\":{\"AnyAZ\":true,\"CSI\":true,\"CpuPolicy\":true,\"DeploymentSet\":true,\"DisableEncryption\":true,\"EncryptionKMSKeyId\":\"\",\"EnterpriseSecurityGroup\":true,\"HpcCluster\":true,\"IntelSGX\":false,\"Knative\":true,\"Network\":\"\",\"NgwPayByLcu\":true,\"NodeCIDRMask\":\"25\",\"NodeNameMode\":true,\"ProxyMode\":\"\",\"PublicSLB\":false,\"RamRoleType\":\"restricted\",\"SLSProjectName\":true,\"SandboxRuntime\":false,\"SnapshotPolicy\":true,\"Taint\":true,\"TerwayEniip\":true,\"UserData\":true},\"CloudMonitorVersion\":\"\",\"ClusterDomain\":\"\",\"ControlPlaneLogConfig\":{\"components\":null},\"DockerVersion\":\"\",\"EtcdVersion\":\"v3.5.4\",\"ExtraCertSAN\":null,\"FreeTier\":false,\"HasSandboxRuntime\":false,\"IPStack\":\"ipv4\",\"ImageType\":\"AliyunLinux\",\"KubernetesVersion\":\"1.24.6-aliyun.1\",\"MultiAZ\":false,\"NameMode\":\"\",\"NextVersion\":\"1.26.15-aliyun.1\",\"OSType\":\"Linux\",\"Platform\":\"AliyunLinux\",\"PodVswitchId\":\"\",\"Provider\":\"\",\"RRSAConfig\":{\"audience\":\"sts.aliyuncs.com,https://oidc-ack-cn-shanghai.oss-cn-shanghai.aliyuncs.com/ca504d81885844513a1e0d3692c741ea0,https://kubernetes.default.svc,kubernetes.default.svc,istio-ca\",\"enabled\":true,\"issuer\":\"https://oidc-ack-cn-shanghai.oss-cn-shanghai.aliyuncs.com/ca504d81885844513a1e0d3692c741ea0,https://kubernetes.default.svc,kubernetes.default.svc\",\"jwks_url\":\"https://oidc-ack-cn-shanghai.oss-cn-shanghai.aliyuncs.com/ca504d81885844513a1e0d3692c741ea0/keys\",\"max_oidc_token_expiration\":\"12h\",\"oidc_arn\":\"acs:ram::1573162459013449:oidc-provider/ack-rrsa-ca504d81885844513a1e0d3692c741ea0\",\"oidc_name\":\"ack-rrsa-ca504d81885844513a1e0d3692c741ea0\",\"open_api_configuration_url\":\"https://oidc-ack-cn-shanghai.oss-cn-shanghai.aliyuncs.com/ca504d81885844513a1e0d3692c741ea0/.well-known/openid-configuration\"},\"RamRoleType\":\"\",\"ResourceGroupId\":\"rg-aek2yyagjeahsnq\",\"Runtime\":\"\",\"RuntimeVersion\":\"\",\"ServiceCIDR\":\"\",\"SubClass\":\"default\",\"SupportPlatforms\":[\"CentOS\",\"AliyunLinux\",\"Windows\",\"WindowsCore\,\"Timezone\":\"\",\"VSwitchIds\":null,\"VersionSpec\":null,\"VpcCidr\":\"10.61.144.0/23\"}", "regionId": "cn-shanghai", "timezone": "Asia/Shanghai", "clusterId": "ca504d81885844513a1e0d3692c741ea0", "masterUrl": "{\"api_server_endpoint\":\"\",\"dashboard_endpoint\":\"\",\"intranet_api_server_endpoint\":\"https://10.61.146.217:6443\"}", "vswitchId": "vsw-uf6g8vw973r4xqvhbzgiw", "parameters": {"Eip": "False", "Tags": "[{\"Key\": \"ack.aliyun.com\", \"Value\": \"ca504d81885844513a1e0d3692c741ea0\"}]", "VpcId": "vpc-uf6m3qw71q6aegk3yxxlf", "OSType": "Linux", "ZoneId": "", "IPStack": "ipv4", "ImageId": "aliyun_2_1903_x64_20G_alibase_20230103.vhd", "KeyPair": "", "Network": "None", "Password": "******", "UserData": "", "ClusterId": "ca504d81885844513a1e0d3692c741ea0", "ProxyMode": "iptables", "SNatEntry": "False", "SetUpArgs": "--addon-names alb-ingress-controller,metrics-server,logtail-ds,knative --node-cidr-mask 25 --timezone Asia/Shanghai", "ClusterDns": "10.61.147.10", "EipAddress": "", "NatGateway": "False", "NumOfNodes": "0", "BetaVersion": "", "EtcdVersion": "v3.5.4", "ServiceCIDR": "10.61.147.0/24", "SnatTableId": "", "NatGatewayId": "", "NodeNameMode": "nodeip", "WorkerPeriod": "3", "ContainerCIDR": "", "DisableAddons": "True", "DockerVersion": "17.06.2-ce-3", "PodVswitchIds": "[]", "ScaleOutToken": "tb08s4.igwkqnx4ki9mwqma", "WorkerImageId": "aliyun_2_1903_x64_20G_alibase_20230103.vhd", "WorkerKeyPair": "", "ALIYUN::Region": "cn-shanghai", "AdjustmentType": "TotalCapacity", "ExecuteVersion": "666714573", "NatGatewayType": "Enhanced", "WorkerDataDisk": "False", "ALIYUN::NoValue": "None", "ALIYUN::StackId": "9aea4c85-876f-4173-967e-20b14c1d5911", "HealthCheckType": "NONE", "ResourceGroupId": "rg-aek2yyagjeahsnq", "SecurityGroupId": "sg-uf627r0gfhlafnu68pci", "WorkerAutoRenew": "False", "WorkerDataDisks": "[]", "ALIYUN::TenantId": "1573162459013449", "WorkerPeriodUnit": "Month", "WorkerVSwitchIds": "vsw-uf6g8vw973r4xqvhbzgiw,vsw-uf6e53z901cxc76iighha,vsw-uf6vh49giagiy6dz8u3uf,vsw-uf672dega882hpu94aex4,vsw-uf6d10bcpk5z9tfhwuvdg", "ALIYUN::AccountId": "1573162459013449", "ALIYUN::StackName": "k8s-for-cs-ca504d81885844513a1e0d3692c741ea0", "CloudMonitorFlags": "False", "KubernetesVersion": "1.24.6-aliyun.1", "RemoveInstanceIds": "", "MasterSLBPrivateIP": "10.61.146.217", "ProtectedInstances": "", "WorkerHpcClusterId": "", "CloudMonitorVersion": "1.3.7", "CustomK8sWorkerRole": "", "NatGatewayVswitchId": "", "WorkerInstanceTypes": "ecs.n4.large", "WorkerLoginPassword": "******", "WorkerSystemDiskSize": "40", "ESSDeletionProtection": "True", "WorkerAutoRenewPeriod": "1", "WorkerDeploymentSetId": "", "WorkerSnapshotPolicyId": "******", "K8sWorkerPolicyDocument": "{\"Version\": \"1\", \"Statement\": [{\"Action\": [\"ecs:DescribeInstanceAttribute\", \"ecs:DescribeInstances\, \"Resource\": [\"*\, \"Effect\": \"Allow\"}, {\"Action\": [\"log:GetProject\", \"log:GetLogStore\", \"log:GetConfig\", \"log:GetMachineGroup\", \"log:GetAppliedMachineGroups\", \"log:GetAppliedConfigs\", \"log:GetIndex\", \"log:GetSavedSearch\", \"log:GetDashboard\", \"log:GetJob\, \"Resource\": [\"*\, \"Effect\": \"Allow\"}, {\"Action\": [\"cr:GetAuthorizationToken\", \"cr:ListInstanceEndpoint\", \"cr:PullRepository\", \"cr:GetInstanceVpcEndpoint\, \"Resource\": [\"*\, \"Effect\": \"Allow\"}]}", "WorkerDeletionProtection": "True", "WorkerInstanceChargeType": "PostPaid", "WorkerSystemDiskCategory": "cloud_ssd", "VpcCidrWithSecondaryCidrs": "[\"10.61.146.0/24\", \"10.61.144.0/23\", "DisableAutoCreateK8sWorkerRole": "False", "WorkerSystemDiskPerformanceLevel": null, "DisableAutoCreateK8sWorkerRolePolicy": "False"}, "vswitchIds": ["vsw-uf6g8vw973r4xqvhbzgiw", "vsw-uf6e53z901cxc76iighha", "vsw-uf6vh49giagiy6dz8u3uf", "vsw-uf672dega882hpu94aex4", "vsw-uf6d10bcpk5z9tfhwuvdg, "clusterSpec": "ack.pro.small", "clusterType": "ManagedKubernetes", "initVersion": "1.24.6-aliyun.1", "networkMode": "vpc", "serviceCidr": "10.61.147.0/24", "currentVersion": "1.24.6-aliyun.1", "operationPolicy": {}, "resourceGroupId": "rg-aek2yyagjeahsnq", "securityGroupId": "sg-uf627r0gfhlafnu68pci", "maintenanceWindow": {"enable": false, "weeklyPeriod": ""}, "deletionProtection": true, "externalLoadbalancerId": "lb-uf6ujlzh8ho8dpi5uwd8o"} 请使用Excel函数提取"intranet_api_server_endpoint\"的值
05-30
### 使用Excel函数从JSON字符串中提取指定值 在Excel中,没有内置的直接解析JSON的功能。然而,可以借助文本函数(如`MID`、`FIND`等)来手动提取特定字段的值。如果JSON结构较为简单且固定,这种方法是可行的。 假设JSON字符串存储在单元格`A1`中,其格式如下: ```json { "intranet_api_server_endpoint": "https://10.61.146.217:6443", "other_field": "value" } ``` 可以通过以下公式提取`intranet_api_server_endpoint`的值[^1]: #### 公式示例 ```excel =MID(A1, FIND("""intranet_api_server_endpoint"": """, A1) + LEN("""intranet_api_server_endpoint"": """), FIND(""",", A1, FIND("""intranet_api_server_endpoint"": """, A1)) - (FIND("""intranet_api_server_endpoint"": """, A1) + LEN("""intranet_api_server_endpoint"": """))) ``` #### 公式解释 - `FIND("""intranet_api_server_endpoint"": """, A1)`:定位目标字段的起始位置。 - `LEN("""intranet_api_server_endpoint"": """)`:计算字段名称及其冒号和引号的长度。 - `MID`:从定位到的位置开始提取指定长度的字符串。 - 第二个`FIND`用于确定字段值结束的位置(即逗号或闭合引号的位置)[^1]。 #### 注意事项 - 如果JSON字符串格式复杂或嵌套层级较深,则需要更复杂的逻辑或使用Power Query进行解析。 - 上述方法仅适用于简单的JSON结构,若结构复杂,建议使用VBA编写自定义函数或通过Power Query加载数据。 ### 使用Power Query解析JSON 对于更复杂的JSON数据,推荐使用Power Query: 1. 将JSON字符串复制到Excel中的一个单元格。 2. 使用“数据”选项卡中的“从表格/范围”加载数据。 3. 在Power Query编辑器中,选择包含JSON的列并点击“JSON”解析按钮。 4. 展开`intranet_api_server_endpoint`字段并加载回Excel。 此方法无需编写复杂公式,更适合处理复杂的JSON结构[^2]。 ```python # 示例VBA代码用于解析JSON(可选) Function ExtractJsonValue(json As String, key As String) As String Dim regEx As Object Set regEx = CreateObject("VBScript.RegExp") regEx.Global = True regEx.IgnoreCase = True regEx.Pattern = Chr(34) & key & Chr(34) & ":\s*""([^""]*)""" If regEx.Test(json) Then ExtractJsonValue = regEx.Execute(json)(0).SubMatches(0) Else ExtractJsonValue = "Key Not Found" End If End Function ```
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值