问题标签 [kubectl]

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 回答
7884 浏览

kubernetes - 如何使用 RBAC API 在 Kubernetes 中创建受限于命名空间的用户/组?

问题

我想向 dev 组内的许多不同的开发人员(不同的主题)颁发证书,并让他们都有权在 dev 命名空间内创建和修改东西,但不能触及它之外的任何东西,而且绝对看不到外面的秘密它。我怀疑我在下面的步骤 2 中创建的角色、角色绑定等不正确,有人可以建议更正吗?

试图

  1. 部署了带有 API Server 标志的 Kubernetes,以支持“RBAC,AlwaysAllow”授权模式,设置 RBAC 超级用户,并通过--runtime-config.
  2. 创建了一个命名空间、角色和角色绑定,目的是 (a) 服务帐户和系统组件仍然可以有效地具有“AlwaysAllow”访问权限,以及 (b) 组中的任何实体都可以使用此 YAML 文件dev访问命名空间中的任何内容。注意:此链接的内容已更改,请参阅我在问题底部工作的 YAML 文件。dev
  3. 更新 Kubernetes 以仅允许“RBAC”授权模式。
  4. 生成的客户端 TLS 数据,其中证书主题标志(用于 openssl)为-subj "/CN=example-dev@kubernetes.click/O=dev".
  5. 在这个模板之后生成了一个 kubeconfig 文件。

实际结果

运行时出现以下错误kubectl -v 8 --kubeconfig=/tmp/dev-kube-config.yml create -f /tmp/busybox.yml::

预期结果

预计在dev命名空间中创建busybox pod。

额外细节:


编辑:基于答案评论的工作解决方案

根据 Jordan 在下面的回答,我升级到了 Kubernetes v1.5.1,然后获得了以下两个 YAML 文件来构建命名空间和所有正确的 RBAC 资源,以便一切按预期工作:

system-access.yml(因为开箱即用的集群角色和集群角色绑定似乎不起作用):

dev-access.yml

0 投票
1 回答
582 浏览

amazon-web-services - NodePort 服务在 AWS 上未按预期工作,可能是由于 IAM ELB 权限

问题

我正在尝试NodePort在我的 Kubernetes 集群中创建一个类型的服务,但它没有按预期工作,我怀疑它必须这样做,因为我已经禁用了我的主节点上使用的 IAM 角色的 ELB 权限。我不认为 ELB 权限应该重要NodePort,但我看到一条错误消息让我想到这一点。难道我做错了什么?这是其他人以前见过的已知问题吗?

试图

向我的集群部署了一个类型的服务NodePort,期望能够在任何节点的公共 IP 和给定端口上访问我的服务,但我不能。有 1 个主节点和 2 个非主节点,除了主节点之外,甚至没有进程绑定到端口 30095(分配的NodePort)。SSH 连接到主服务器并以各种方式卷曲该端口没有任何作用(curl只是挂起)。卷曲与服务关联的端点可以正常工作。kubectl describe在服务上表明创建负载均衡器时出现了一些错误,但我不知道为什么会这样做。

我将重申,我特别禁止主节点使用的 IAM 角色能够执行任何 ELB 操作。我不希望使用我的 Kubernetes 集群的开发人员能够在我的账户中启动 ELB,或者为此做任何会在我的账户中创建 AWS 资源的事情。

实际结果

  • 有关服务的信息(从本地工作站运行的命令)——请注意以下CreatingLoadBalancerFailed输出中的错误kubectl describe service

    /li>
  • 寻找绑定到非主节点端口的进程:

    /li>
  • 寻找绑定到主节点端口的进程:

    /li>
  • 试图卷曲服务(只是挂起):

    /li>
  • 从主节点卷曲端点(有效,因此 pod 运行良好):

    /li>

预期结果

NodePort卷曲服务分配的任何节点的外部 IP 时,预计会看到与卷曲端点相同的结果30095

额外细节:

0 投票
1 回答
5325 浏览

kubectl - 如何使用环境变量对 kubectl 进行身份验证?

我能找到的唯一两种身份验证方法是创建一个新的身份验证上下文,例如

并使用命令行选项,例如

--server有没有办法使用环境变量设置值和其他身份验证选项?

0 投票
1 回答
40320 浏览

proxy - 代理背后的 kubectl

我已经按照此处的说明使用 minikube 安装了本地 Kubernetes 集群。

我在公司代理下。因此我设置了 http_proxy 和 https_proxy 环境变量。在命令之后启动集群后,minikube start我还将 的值添加minikube ip到 no_proxy env var。但是 kubectl 仍然无法连接到集群。

我假设这是因为 kubectl 不知道 no_proxy 设置。对集群的简单卷曲就可以了。

有想法该怎么解决这个吗?

0 投票
3 回答
9558 浏览

bash - 命名路径的 kubectl jsonpath 表达式

我有使用 2 个命名端口运行的 kube 服务,如下所示:

我正在尝试获取仅包含“http”端口的输出:

除非我按照此处的备忘单http://kubernetes.io/docs/user-guide/kubectl-cheatsheet/的提示添加测试表达式,否则我会收到错误消息

0 投票
2 回答
11094 浏览

kubernetes - 如何暂停 Kubernetes 服务

我有一个如下所述的设置 - 所以一个简单的复制控制器、服务和一个在谷歌云上使用 kubernetes 部署的 https 入口。

我需要暂时关闭我的应用程序,以便测试堆栈的其余部分如何反应 - 有什么好方法?

我试过删除服务,但是当我重新创建它时,它不会获取后端服务(复制控制器和 pod 已创建,我可以在内部访问它们,但不能通过入口 - 服务没有看见。

0 投票
2 回答
2168 浏览

kubernetes - 找出 Pod 被 Minikube 杀死的原因

我在 Virtual Box 上的本地机器上创建了一个 Minikube 实例。我有几个复制控制器,它们都指定了资源限制。首先,我为每个复制控制器 A 和 B 创建了一个实例。然后我将 rc B 的复制计数增加到 6。一旦扩展,我可以看到 rc A 创建的 Pod 被 Kubernetes 杀死。我只能在 kubeclt 日志中看到的日志是

我不知道是什么导致了这个吊舱被驱逐。我猜这与 Pod 的资源分配和 VM 上的有限资源有关。但我需要确认这一点。我在哪里可以找到与该 pod 被驱逐原因相关的日志?我在 journalctl -u localkube 中搜索

kubectl describe pod 提供以下事件

但以上都没有给我一个关于原因和为什么会发生的提示。有什么建议吗?

0 投票
2 回答
11702 浏览

authentication - 使用不同的选项重新启动 Kubernetes API 服务器

我对 Kubernetes 和集群还很陌生,所以这可能很简单。

kubeadm我按照本指南设置了一个具有 5 个节点的 Kubernetes 集群。我遇到了一些问题,但最终都奏效了。所以现在我想安装Web UI (Dashboard)。为此,我需要设置身份验证:

请注意,这仅在 apiserver 设置为允许使用用户名和密码进行身份验证时才有效。某些设置工具(例如,kubeadm)目前不是这种情况。有关如何手动配置身份验证的信息,请参阅身份验证管理文档。

所以我必须阅读文档的身份验证页面。我决定要通过静态密码文件添加身份验证。为此,我必须将选项附加--basic-auth-file=SOMEFILE到 Api 服务器。

当我这样做ps -aux | grep kube-apiserver是结果,所以它已经在运行。(这是有道理的,因为我在调用时使用它kubectl

我有几个问题:

  • 那么所有这些选项设置在哪里呢?
  • 我可以杀死这个过程并使用我需要的选项重新启动它吗?
  • 当我重新启动系统时它会启动吗?
0 投票
3 回答
22575 浏览

kubernetes - 如何使用 Kubernetes 为 Pod 分配静态 IP

目前 kubectl 将 IP 地址分配给一个 pod,并由所有容器在 pod 内共享。

我正在尝试为 pod 分配一个静态 IP 地址,即与 kubectl 分配的网络范围相同,我正在使用以下部署文件

在其部署的 dockerhost 上,我看到以下内容:

IP 表保存给出以下输出

即使这样,也无法从其他 pod 访问 IP 172.17.0.1。基本上,问题是如何将静态 IP 分配给 pod,以便不会将 172.17.0.3 分配给它

0 投票
1 回答
2373 浏览

kubernetes - 如何配置 Kubernetes 以允许长时间运行的交互式会话?

v1.5.1使用该kubectl run/exec -i --tty功能运行时出现问题。

发送数据时连接不会中断。因此,当我启动一个交互式容器会话时,使用一个不时输出某些内容的脚本,它似乎可以工作。

基于此,我创建了一个令人讨厌的解决方法来让我的容器会话继续进行,而无需我的交互。这些会话过早终止真的很烦人。它们会留下垃圾,如果您连接到正在运行的生产容器,则需要清理这些垃圾。

解决方法(作为后台进程每 59 秒打印一个空格字符到 STDERR):

当我不启动这样的脚本时,请参阅以下输出。 它表明交互式会话在约 2 分钟内过早终止。

如果您使用此功能来调试正在运行的应用程序和容器安装,这真的很烦人。

从此Github 问题重新发布。