问题标签 [kube-apiserver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
323 浏览

kubernetes - 来自 kubernetes api 服务的响应不一致,有时无法找到主机错误

我已经通过 kelsey tower 使用步骤作为 kubernetes 配置了 kubernetes 集群

不幸的是,当我点击 kubernetes 服务 ip 从工作节点检查版本时,我看到不一致的响应

这是我的集群详细信息

从工作节点,

Kube 代理系统配置

kube-proxy 配置 yaml 文件

kube-proxy 服务状态

这是有问题的输出。2,3 时间它给出正确的输出,然后它抛出错误,因为没有路由主机,它再次工作

curl: (7) 无法连接到 10.32.0.1 端口 443: No route to host

0 投票
1 回答
672 浏览

prometheus - 使用 PromQL 计算可用性

我将监控我的 Kubernetes 集群的可用性。Prometheus 服务器抓取kube-apiserver指标并根据kube-apiserverpod 可用性计算可用性百分比。有时kube-apiserverpod 关闭,Prometheus 服务器根本无法抓取,有时 pod 启动并运行并服务请求,但由于网络连接或任何其他原因,Prometheus 服务器无法抓取指标。有没有办法使用 PromQL 来忽略任何值?还是计算 Kubernetes 集群可用性的更好方法?

0 投票
1 回答
2571 浏览

kubernetes - Kubernetes 更改证书密码

我一直在研究与 kubeadm 相关的链接,以尝试更改我的 Kubernetes 集群证书上的密码。问题是我需要禁用 DES/3DES 以便此命令失败:

到目前为止我浏览过的一些链接(如果我把它们都列出来,这篇文章会太长):

我希望更改kube-apiserver配置以使用这些标志(在/etc/kubernetes/manifests/kube-apiserver.yaml文件中)会有所帮助,但它没有(请原谅拼写错误,我无法从必须使用的客户端复制/粘贴):

/etc/kubernetes/pki我可以按照这些指南手动重新生成所有证书,但我希望坚持使用kubeadmKubernetes 提供的工具或其他工具来自动处理它。我找不到任何关于我自己手动生成每个文件的文档,这些文档是为完全不熟悉管理的人设置的。

感谢帮助、链接、建议等!不幸的是,在完成之前,我不允许使用集群甚至向人们展示功能。

0 投票
1 回答
108 浏览

kubernetes - APISERVER 日志中的 TLS 握手错误来自哪里?

我在 AWS 上使用 KubeSpray 配置了一个集群。它有两个堡垒,一个控制器,一个工人和一个 etcd 服务器。

我在 APISERVER 日志中看到无穷无尽的消息:

它们来自两个 IP 地址,10.250.227.53并且10.250.250.158. 端口号每次都会更改。

没有一个集群节点对应于这两个 IP 地址。子网 cidr 范围如下所示。

两个私有和两个公共集群子网

集群看起来很稳定。这种行为似乎没有任何负面影响。但我不喜欢随机的 HTTPS 请求。

我该如何调试这个问题?

0 投票
1 回答
325 浏览

components - 如何使用新的容器映像更新 openshift kube-apiserver 组件?

Openshift 提供更新方式,实时更新整个平台。而我(也许其他人也)只需要更新一些特定的组件。

可以通过管理 operator 并相应地设置镜像来更新控制台、openshift-apiserver 等组件与新的容器镜像。例如,要更新 openshift-apiservercomponent,以下步骤确实有效:

  1. 禁用对openshift apiserver operator 的管理

#oc patch openshiftapiservers.operator.openshift.io cluster --patch '{ "spec": { "managementState": "Unmanaged" } }' --type=merge

  1. 为 openshift apiserver 部署设置一个新的容器镜像

#oc set image deploy apiserver openshift-apiserver=registry.somecorp.com:5000/ocp4/openshift4:openshfit-apiserver-4.4.4-t1 -n openshift-apiserverb

  1. 检查并等待推出状态

#oc 推出状态 -w 部署/apiserver -n openshift-apiserver

而对于基本的 kube-apiserver 组件,情况有所不同。首先,禁用相关算子的方法不起作用,似乎 kubeapiserver 算子不支持“非托管”功能。

#oc patch kubeapiserver.operator.openshift.io cluster --patch '{ "spec": b { "managementState": "Unmanaged" } }' --type=merge KubeAPIServer "cluster" 无效:spec.managementState: Invalid值:“”:正文中的 spec.managementState 应匹配 '^(Managed|Force)$'

其次,似乎只是 pod 用于 kube-apiserver,而不是部署。虽然有办法为特定的 pod/容器设置图像,但我不知道如何应用设置。

#oc 设置镜像 pod kube-apiserver-master-0 kube-apiserver=registry.somecorp.com:5000/ocp4/openshift4:hyperkube-t1 -n openshift-kube-apiserver b pod/kube-apiserver-master-0 镜像已更新

有没有人可以帮助我找出在 openshift 系统中手动更新 kube-apiserver 的方法?感谢您提供任何信息。

0 投票
1 回答
1867 浏览

kubernetes - 使用额外的 IP 地址公开 kube-apiserver

我在裸机集群上设置了一个 k8skubeadm init集群。

我注意到kube-apiserver它在私有 IP 上暴露了它的接口:

这是集群内的 kube 配置:

这对于在集群上本地使用来说很好kubectl,但我想添加一个额外的接口来公开kube-apiserver使用公共 IP 地址。最终,我尝试kubectl从笔记本电脑进行配置以远程访问集群。

如何kube-apiserver在外部 IP 地址上公开?

0 投票
2 回答
639 浏览

kubernetes - 禁止:用户,“代码”:使用 curl 访问 kube-apiserver 时出现 403 错误

Kubernetes 版本:v1.19.0

我创建了一个用户并使用角色 cluster-admin 执行了 clusterrolebinding。

我可以使用这个用户帐户运行 kubectl 并获取 pod 信息:

但是当我尝试使用 curl 访问 kube-apiserver 时,它显示禁止错误如下:

我已经重新验证了我为该用户帐户提供的 cacert 、证书和密钥。它们是正确的。

任何建议为什么会发生这种情况以及如何解决它。

0 投票
1 回答
668 浏览

kubernetes - kube-apiserver[4073]:错误:“kube-apiserver”不接受任何参数,得到 [“\\”]

重新启动 Kubernetes 主节点时。我得到以下错误

这是我的 kube-apiserver.service 配置

上面的配置有什么问题?使用的 VMware 工作站。我正在使用 Kubernetes 1.19。Ubuntu 18.04 RAM 16GB CNI:编织

有趣的事情发生了。我删除了一些参数 -> 然后重述了 kube-apiserver -> 然后粘贴了相同的配置文件 -> 然后再次重述了 kube-apiserver -> kube-apiserver 工作得很好。那么当我启动我的 vm 时发生了什么问题?

0 投票
2 回答
416 浏览

kubernetes - NodePort 与 kube-apiserver 的 hostPort 冲突

我有一个健康的 k8s 集群。kube-apiserver 正在使用端口8443。然后我做类似下面的事情。我也创建/编辑一个服务并分配一个固定的 nodePort 8443

集群变得无法访问。如果我运行命令kubectl get pods。它返回Unable to connect to the server: EOF

因为我需要运行 kubectl 命令来更改 nodePort。但我不能使用 kubectl。它变成了一个死循环。我有 2 个问题。

  1. 我该怎么做才能恢复我的 k8s 集群?
  2. 为什么 kube-apiserver 或其他组件不会阻止我将 nodePort 更改为8443?指示端口8443已在使用中。
0 投票
1 回答
2078 浏览

kubernetes - 如何正确设置 --kubelet-certificate-authority apiserver 参数?

我正在使用KubeSpray在 AWS 上配置一个两节点集群。默认--kubelet-certificate-authority不使用该参数。但是,我想设置它。

我不知道正确的设置--kubelet-certificate-authority。当我将其设置为时,/etc/kubernetes/pki/ca.crt我会在日志中看到如下消息:

为了创建一个隔离的测试环境,我通过 SSH 连接到我的控制器节点以运行此命令,该命令在4667. 我直接从/etc/kubernetes/manifests/kube-apiserver.yaml. 您需要调整该值以匹配您自己的集群。我故意在交互模式下运行容器,以便我可以看到日志消息。

现在可以再次通过 SSH 连接到控制器并用于curl与自定义 apiserver 容器进行交互。

  • 将 APISERVER 变量设置为指向控制器节点。我正在使用advertise-address上面参数的值。
  • 获得令牌。
  • 发出 api 请求。此请求将失败,因为“无法识别对等证书颁发者。”。

docker 日志中将出现一条错误消息。它看起来像这样:

  • 现在使用-kcurl 参数绕过识别问题。

您将看到请求正常工作。但是,我不想使用该-k参数。所以我尝试使用来自 apiserver 的证书颁发机构。

  • 从 apiserver 获取证书颁发机构。
  • 将证书颁发机构文件用于 api 请求。

更新

根据 Wiktor 的回复提示的想法,我添加了 /etc/kubernetes/ssl/ca.crt 作为证书颁发机构。并在我的curl命令中使用了该文件。

这行得通。