问题标签 [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.
kubernetes - 如何使用 RBAC API 在 Kubernetes 中创建受限于命名空间的用户/组?
问题
我想向 dev 组内的许多不同的开发人员(不同的主题)颁发证书,并让他们都有权在 dev 命名空间内创建和修改东西,但不能触及它之外的任何东西,而且绝对看不到外面的秘密它。我怀疑我在下面的步骤 2 中创建的角色、角色绑定等不正确,有人可以建议更正吗?
试图
- 部署了带有 API Server 标志的 Kubernetes,以支持“RBAC,AlwaysAllow”授权模式,设置 RBAC 超级用户,并通过
--runtime-config
. - 创建了一个命名空间、角色和角色绑定,目的是 (a) 服务帐户和系统组件仍然可以有效地具有“AlwaysAllow”访问权限,以及 (b) 组中的任何实体都可以使用此 YAML 文件
dev
访问命名空间中的任何内容。注意:此链接的内容已更改,请参阅我在问题底部工作的 YAML 文件。dev
- 更新 Kubernetes 以仅允许“RBAC”授权模式。
- 生成的客户端 TLS 数据,其中证书主题标志(用于 openssl)为
-subj "/CN=example-dev@kubernetes.click/O=dev"
. - 在这个模板之后生成了一个 kubeconfig 文件。
实际结果
运行时出现以下错误kubectl -v 8 --kubeconfig=/tmp/dev-kube-config.yml create -f /tmp/busybox.yml
::
预期结果
预计在dev
命名空间中创建busybox pod。
额外细节:
/li>$ kubectl version
GitHub问题:https ://github.com/kubernetes/kubernetes/issues/38997
- 邮件列表帖子:https ://groups.google.com/forum/#!topic/kubernetes-dev/6TBTu1AC2L8
编辑:基于答案和评论的工作解决方案
根据 Jordan 在下面的回答,我升级到了 Kubernetes v1.5.1,然后获得了以下两个 YAML 文件来构建命名空间和所有正确的 RBAC 资源,以便一切按预期工作:
system-access.yml
(因为开箱即用的集群角色和集群角色绑定似乎不起作用):
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 资源的事情。
实际结果
有关服务的信息(从本地工作站运行的命令)——请注意以下
/li>CreatingLoadBalancerFailed
输出中的错误kubectl describe service
:寻找绑定到非主节点端口的进程:
/li>寻找绑定到主节点端口的进程:
/li>试图卷曲服务(只是挂起):
/li>从主节点卷曲端点(有效,因此 pod 运行良好):
/li>
预期结果
NodePort
卷曲服务分配的任何节点的外部 IP 时,预计会看到与卷曲端点相同的结果30095
。
额外细节:
/li>$ kubectl version
GitHub问题:https ://github.com/kubernetes/kubernetes/issues/39214
- 邮件列表帖子:https ://groups.google.com/forum/#!topic/kubernetes-dev/JNC_bk1L3iI
kubectl - 如何使用环境变量对 kubectl 进行身份验证?
我能找到的唯一两种身份验证方法是创建一个新的身份验证上下文,例如
并使用命令行选项,例如
--server
有没有办法使用环境变量设置值和其他身份验证选项?
proxy - 代理背后的 kubectl
我已经按照此处的说明使用 minikube 安装了本地 Kubernetes 集群。
我在公司代理下。因此我设置了 http_proxy 和 https_proxy 环境变量。在命令之后启动集群后,minikube start
我还将 的值添加minikube ip
到 no_proxy env var。但是 kubectl 仍然无法连接到集群。
我假设这是因为 kubectl 不知道 no_proxy 设置。对集群的简单卷曲就可以了。
有想法该怎么解决这个吗?
bash - 命名路径的 kubectl jsonpath 表达式
我有使用 2 个命名端口运行的 kube 服务,如下所示:
我正在尝试获取仅包含“http”端口的输出:
除非我按照此处的备忘单http://kubernetes.io/docs/user-guide/kubectl-cheatsheet/的提示添加测试表达式,否则我会收到错误消息
kubernetes - 如何暂停 Kubernetes 服务
我有一个如下所述的设置 - 所以一个简单的复制控制器、服务和一个在谷歌云上使用 kubernetes 部署的 https 入口。
我需要暂时关闭我的应用程序,以便测试堆栈的其余部分如何反应 - 有什么好方法?
我试过删除服务,但是当我重新创建它时,它不会获取后端服务(复制控制器和 pod 已创建,我可以在内部访问它们,但不能通过入口 - 服务没有看见。
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 提供以下事件
但以上都没有给我一个关于原因和为什么会发生的提示。有什么建议吗?
authentication - 使用不同的选项重新启动 Kubernetes API 服务器
我对 Kubernetes 和集群还很陌生,所以这可能很简单。
kubeadm
我按照本指南设置了一个具有 5 个节点的 Kubernetes 集群。我遇到了一些问题,但最终都奏效了。所以现在我想安装Web UI (Dashboard)。为此,我需要设置身份验证:
请注意,这仅在 apiserver 设置为允许使用用户名和密码进行身份验证时才有效。某些设置工具(例如,kubeadm)目前不是这种情况。有关如何手动配置身份验证的信息,请参阅身份验证管理文档。
所以我必须阅读文档的身份验证页面。我决定要通过静态密码文件添加身份验证。为此,我必须将选项附加--basic-auth-file=SOMEFILE
到 Api 服务器。
当我这样做ps -aux | grep kube-apiserver
是结果,所以它已经在运行。(这是有道理的,因为我在调用时使用它kubectl
)
我有几个问题:
- 那么所有这些选项设置在哪里呢?
- 我可以杀死这个过程并使用我需要的选项重新启动它吗?
- 当我重新启动系统时它会启动吗?
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 分配给它
kubernetes - 如何配置 Kubernetes 以允许长时间运行的交互式会话?
v1.5.1
使用该kubectl run/exec -i --tty
功能运行时出现问题。
发送数据时连接不会中断。因此,当我启动一个交互式容器会话时,使用一个不时输出某些内容的脚本,它似乎可以工作。
基于此,我创建了一个令人讨厌的解决方法来让我的容器会话继续进行,而无需我的交互。这些会话过早终止真的很烦人。它们会留下垃圾,如果您连接到正在运行的生产容器,则需要清理这些垃圾。
解决方法(作为后台进程每 59 秒打印一个空格字符到 STDERR):
当我不启动这样的脚本时,请参阅以下输出。 它表明交互式会话在约 2 分钟内过早终止。
如果您使用此功能来调试正在运行的应用程序和容器安装,这真的很烦人。
从此Github 问题重新发布。