问题标签 [kubernetes-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 回答
658 浏览

docker - 在 Kubernetes 中自动生成 Pod

我之前创建了一个使用 Docker Python SDK 生成 Docker 容器的 Flask 服务器。当客户端到达特定端点时,服务器将生成一个容器。它将维护队列,并且能够杀死不响应请求的容器。

我想迁移到 Kubernetes,但我开始认为我当前的服务器将无法像在 docker 中那样自动“生成”作业作为 pod。

Docker Swarm 是一个更好的解决方案,还是在 Kubernetes 中进行了隐藏的实践?Kubernetes Python API 是否会成为自动生成 Pod 和作业的逻辑解决方案,其中 Flask 服务器是管理集群内其他 Pod 的 Pod?

0 投票
1 回答
215 浏览

kubernetes - kubelet 如何将事件同步到 apiserver?

最近我研究了 kubelet 如何将事件同步到 apiserver 但我找不到代码在哪里。

0 投票
2 回答
9625 浏览

kubernetes - kubectl apply --dry-run 行为怪异

我正面临 kubectl 和 --dry-run 的奇怪行为。

为了简化,假设我有以下 yaml 文件:

修改例如图像或副本数:

  • kubectl apply -f Deployment.yaml -o yaml --dry-run输出具有规格的资源

  • kubectl apply -f Deployment.yaml -o yaml向我输出具有规格的资源

根据文档:

--dry-run=false:如果为真,则只打印要发送的对象,不发送。

但是打印的对象是旧对象,而不是将发送到 ApiServer 的对象

在 minikube 上测试,gke v1.10.0

与此同时,我为它打开了一个新的 gitHub 问题:

0 投票
1 回答
899 浏览

api - 从 pod 连接到 Kubernetes API

我正在尝试从 pod 内部使用 Kubernetes API。将列出/观看 pod 和自定义资源。

将 url 构造为“ https://KUBERNETES_SERVICE_HOST:KUBERNETES_SERVICE_PORT_HTTPS ” 授权标头 = “Bearer /var/run/secrets/kubernetes.io/serviceaccount/token” CaCert = /var/run/secrets/kubernetes.io/serviceaccount/ca.crt

在 minikube 中运行时,请求失败并显示“错误:连接 ETIMEDOUT 10.96.0.1:443” 在 GCP 中运行的相同代码失败并显示:“错误:无法验证第一个证书”

0 投票
2 回答
4459 浏览

jenkins - Jenkins 强制增加与 Kubernetes API 的最大连接数

我在 Jenkins 中使用 k8s 插件,它帮助我在我的 k8s 集群上部署我的顺序和并行作业。

这是Jenkinsfile作业失败的部分

在运行具有并行阶段的作业时,我遇到了错误

然后我转到管理 Jenkins --> 配置系统 --> 云 --> Kubernetes 并通过说.... 20 增加“与 Kubernetes API 的最大连接数”,然后重新运行该作业,它就可以工作了。如果在那之后我尝试重新运行该作业,它会失败并出现相同的错误,然后我必须再次增加限制。所以我有点在一个无限循环中做以下事情:

1)重启jenkins evrerytime

2) 提高 API Server 请求限制。

所以我不确定为什么会这样。有没有办法让我找出 API 服务器正在处理多少请求?他们的来源是什么?我怎样才能知道以前的工作是否有任何挥之不去的要求?

完整的错误日志:

0 投票
1 回答
2928 浏览

docker - kube-apiserver.yaml 在哪里?

我想向kube-apiserver添加一个标志。

于是我在主节点上登录了 kube-apiserver 的 docker 容器,开始执行寻找kube-apiserver.yaml. 我听说它位于/etc/kubernetes/manifests/kube-apiserver.yaml.

可惜没了!我在 /etc/kubernetes/" 文件夹中只有一个 "SSL" 目录,并且 kube-apiserver.yaml 无处可见......


仅供参考:
使用 Ansible playbook (kubespray) 安装 kubernetes 1.12.2。
有 6 个节点和 3 个主节点。

谢谢你的帮助

0 投票
2 回答
10453 浏览

kubernetes - Kubernetes 驱逐管理器驱逐控制平面 pod 以回收临时存储

我正在使用 Kubernetes v1.13.0。我的主节点还充当工作节点,因此除了控制平面 pod 之外,它还运行着工作负载 pod。

我的 master 上的 kubelet 日志显示以下几行:

一旦 kube-apiserver pod 被驱逐,集群就会变得不可用。

我能做些什么来解决这个问题?我应该添加更多的临时存储吗?我该怎么做呢?这意味着向我的主机上的根分区添加更多空间?

我的理解是,临时存储由/var/log/var/lib/kubelet文件夹组成,它们都位于根分区下。

df -h我的主持人上的一个节目:

所以看起来根分区还有很多内存,没有磁盘压力。那么是什么导致了这个问题呢?我的一些worker pod肯定在做一些疯狂的存储,但它仍然是6G,似乎有足够的空间。

向根分区添加更多空间会暂时解决此问题吗?

kubectl describe vm2提供以下信息:

在我看来,临时存储存在压力,驱逐管理器正试图通过驱逐最近最少使用的 pod 来回收一些存储。但它不应该驱逐控制平面 pod,否则集群将无法使用。

目前,Kubelet 驱逐控制平面 pod。然后我尝试通过在/etc/kubernetes/manifests文件中添加和删除空格来手动启动 apiserver 和其他控制平面 pod。这确实启动了 apiserver,但随后它又被驱逐了。理想情况下,Kubelet 应确保其中的静态 Pod/etc/kubernetes/manifests始终处于开启状态并得到妥善管理。

我试图了解这里发生了什么,以及如何解决这个问题,以便我的 kubernetes 集群变得更加健壮,并且我不必继续手动重新启动 apiserver。

0 投票
0 回答
143 浏览

kubernetes - 如何计算 Kubernetes 节点中可用的免费资源

我正在使用官方的 kubernetes java api 来控制本地 kubernetes 集群。计算集群中每个节点的可用资源的最佳方法是什么。是否有任何 V1Node 的 api 方法可以为我做到这一点?如果没有,那么使用 java 代码执行此操作的任何建议都会非常有帮助。

这两种方法提供了每个节点的可分配容量和总容量。但是,不确定如何找到可用资源。对我来说,即使我的本地集群中运行的 pod 很少,“可分配”和“容量”也是一样的。

0 投票
1 回答
159 浏览

kubernetes - 如何从(非主)节点或远程访问 Kubernetes API

我在设置从外部访问 Kubernetes 集群时遇到问题。这就是我想要实现的目标: - 能够从外部(从非“主”节点,甚至从任何远程节点)访问 kube 集群,以便能够仅在特定命名空间上执行 kube 操作。

我的逻辑是执行以下操作:

  • 创建新的命名空间(我们称之为 testns)
  • 创建服务帐户(testns-account)
  • 创建角色,允许在 testns 命名空间内创建任何类型的 kube 资源
  • 创建角色绑定,将服务帐户与角色绑定
  • 从服务帐户生成令牌

现在,我的逻辑是我需要令牌 + api 服务器 URL 来访问具有有限“权限”的 kube 集群,但这似乎还不够。

实现这一目标的最简单方法是什么?首先,我可以使用 kubectl 访问,只是为了验证对命名空间工作的有限权限,但最终,我会有一些客户端代码来执行访问并创建具有这些有限权限的 kube 资源。

0 投票
1 回答
428 浏览

kubernetes - 此编解码器不允许编码:*versioning.codec

我使用此框架https://github.com/operator-framework/operator-sdk创建了一个 kubernetes 运算符,其中定义了一个小的自定义资源定义并生成了一个客户端集。

我为此自定义资源创建了一个客户端:

因此,我只是使用 kubernetes 为 pod 提供的配置并创建了一个默认的 k8s REST 客户端集,并在我的自定义资源的客户端集中使用它(这甚至是一个好习惯吗?)。

但是,当我尝试使用我的自定义资源客户端并尝试创建自定义资源的实例时,客户端会出错encoding is not allowed for this codec: *versioning.codec(我猜它来自这里https://github.com/kubernetes/apimachinery/blob/master/pkg/runtime /codec.go#L104)。

这到底是什么意思?我认为生成的客户端知道自定义资源?

感谢帮助...