问题标签 [kubernetes-deployment]
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 - 无法将部署创建角色分配给 Kubernetes 中的 serviceAccount
我想要一个可以创建部署的服务帐户。所以我正在创建一个服务帐户,然后是一个角色,然后是一个角色绑定。yaml 文件如下:
服务帐户:
角色:
角色绑定:
但是在应用这些文件之后,当我执行以下命令来检查服务帐户是否可以创建部署时,它的回答是 no。
kubectl auth can-i --as=system:serviceaccount:default:testsa create deployment
确切的答案是:
no - no RBAC policy matched
当我检查 Pod 时它工作正常。
我究竟做错了什么?
我的 kubernetes 版本如下:
spring-boot - 将 java_opts 传递给 Kubernetes 中的 Spring Boot 应用程序
目前,我们正在构建带有入口点的 Docker 镜像,并将该镜像传递给 Kubernetes 部署。
有什么方法可以将入口点直接动态传递给 Kubernetes,以便它启动 Spring Boot 应用程序?
在 Kubernetes 中直接传递这个入口点有哪些不同的方法?
mongodb - Kubernetes 部署容器内的应用程序失败并出现错误 localhost:port 无法访问?
我有一个应用程序 Docker 映像,它在随机端口上启动一个 mongodb 实例。当我使用应用程序映像创建 Kubernetes Pod 时;应用程序成功初始化,mongodb 实例在localhost:port的随机端口上启动,没有任何错误。
但是,当我创建 Kubernetes 部署时;容器内相同的应用程序初始化失败,并出现错误“mongodb 无法启动,因为localhost:port无法访问”。
如果有人可以解释,为什么 K8-Deployment 应用程序初始化失败,而 K-8Pod 却没有?而且,我该如何解决这个问题?
谢谢
kubernetes - 如何在 kubernetes 集群中的 master+worker 和唯一的 worker 节点之间负载平衡 pod 分布
我有一个带有两个节点的 k8s 集群。一个节点让我们说 A,是一个 master+worker,另一个 B,只是一个 worker。现在,每当发生新部署时,它都会转到工作节点 (B)。我尝试了多个部署,每个部署都只部署在工作节点 (B) 上。
我认为调度程序的行为是在工作节点上安排部署并保持主节点的利用率尽可能低。
我想以循环方式分发部署,这样如果我有 6 个部署,每个节点将收到 3 个。我知道我可以通过在部署文件中定义节点约束来做到这一点,但我想知道是否有任何其他方式来实现这一目标?
注意 - 我尝试了具有两个副本的部署,并且两个节点都收到了一个 pod。但单副本的情况并非如此。它始终仅部署在工作节点 (B) 上。
节点 A (master + worker) 污点配置
节点 B(仅限工作人员)污点配置
kubernetes - kubectl 耗尽和滚动更新,停机
是否kubectl drain
首先确保replicas=1
其他节点上的 pod 是健康的?
假设 Pod 由部署控制,并且 Pod 确实可以移动到其他节点。目前我看到它只是从节点中驱逐(删除 pod),而不是先调度它们。
kubernetes - 使用动态名称管理单个 pod 的 RBAC 角色
我需要使用 RBAC 授予对一个部署和该部署的所有 pod 的访问权限。我已经成功地为Role
和配置RoleBinding
了deploymet
,它工作正常:
使用此角色,用户可以访问、更新和修补部署。此部署创建具有动态名称(如<deployment>-5594cbfcf4-v4xx8
)的 pod。我尝试允许此用户使用部署名称和使用部署名称 + 通配符 char 访问这些 pod(获取、列出、监视、读取日志、执行、删除)*
:
我还更新了角色绑定。但是当我尝试获取吊舱时:
我收到错误:
服务器错误(禁止):pod“<deployment>-5594cbfcf4-v4xx8”被禁止:用户“<username>”无法在命名空间“<namespace>”中的 API 组“”中获取资源“pods”
如果我添加<deployment>-5594cbfcf4-v4xx8
到列表中resourceNames
,用户可以访问此 pod。
是否可以根据部署名称授予对特定 pod 的访问权限?
kubernetes - 如何在 Minikube 上正确设置 hostPath 持久卷?
我目前正在开发一个 Lumen 项目,我们使用 Minikube 作为我们的开发环境。我们的主机/Users/development/<project name>
安装在/var/www/html
并且工作正常。/var/www/html/storage/framework
但是,由于整个/var/www/html
目录具有1001:1001所有权这一事实,我面临着文件写入无法正常工作的存储问题。
这是我的部署规范:
我尝试将持久卷移动到它自己的单独文件中,并创建了一个 pvc,但它仍然无法正常工作。我还尝试了多种方法来更改使用初始化容器和安全上下文的目录权限,但它仍然始终将权限设置为 **1001:1001* 我在这里真的很绝望,所以任何帮助将不胜感激。
主机规格:
- 操作系统:Ubuntu 18.04.3 LTS
- Minikube 版本:v0.30.0
- Kubectl 客户端版本:客户端版本:version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.2", GitCommit:"c97fe5036ef3df2967d086711e6c0c405941e14b", GitTreeState:"clean", BuildDate:"2019-10- 15T19:18:23Z",GoVersion:"go1.12.10",编译器:"gc",平台:"linux/amd64"}
- Kubectl 服务器版本:服务器版本:version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"clean", BuildDate:"2018-03- 26T16:44:10Z",GoVersion:"go1.9.3",编译器:"gc",平台:"linux/amd64"}
- Virtualbox 版本:5.2.34 r133893 (Qt5.9.5)
编辑:(这是我在部署中使用的图像的 docker 文件)
kubernetes - 无法删除 kubernetes-dashboard
我无法删除 Kubernetes 仪表板,需要这方面的帮助。我在 AWS 实例上运行 Kubernetes 和 Minikube。我通过运行以下命令安装了 Kubernetes Dashboard:
sudo kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
现在我想删除这个仪表板纯粹是为了学习。我已经执行了以下步骤,但到目前为止没有成功:
1.通过YAML删除
命令
$ sudo kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
输出
命名空间和其他资源会立即重新创建,仪表板会继续运行:
2. 删除部署
仪表板部署列表
删除仪表板部署
重新创建部署
我是这项技术的新手。请指导我前进的道路。
kubernetes - Kubernetes服务选择器用于选择另一个服务而不是部署?
我只是想知道,是否可以在 Kubernetes 服务定义中引用服务而不是部署(使用服务标签而不是部署 matchLabels)?
我的意思是假设我定义了一个服务A,它公开了一个部署AD,现在我想定义另一个服务B,但是这次我希望它指向之前定义的服务而不是它的选择器引用一个部署AD服务A?这在 Kubernetes 中是否可行?例如,请参见下面的场景
更新:
kubernetes - 部署推出后如何知道 Kubernetes 服务何时准备就绪?
我正在尝试与服务一起创建部署,然后在部署完成后立即访问该服务:
有时这可行,但似乎存在竞争条件 - 如果curl
命令发生得太快,似乎套接字无法连接并且我得到连接超时。
如果没有准备好的 pod,这似乎是我会得到的行为,根据这个问题:当服务收到请求但没有准备好的 pod 时会发生什么?
我预计推出的完成意味着服务可以保证准备就绪。不是这样吗?是否有一些 Kubernetes 命令可以“等待”服务可用?(我注意到服务没有条件,所以你不能这样做kubectl wait
......)