草庐IT

Kubernetes-RBAC

全部标签

go - kubernetes Controller 的单元测试

我正在尝试编写一个Controller,但在编写测试时遇到了一些问题。我在我的Controller中使用了一些来自k8sHPA的代码,但在使用testrestmapper时我看到了一些奇怪的东西。基本上在运行这个test时带断点here我看到映射已返回。当我执行相同操作时,不会返回映射。这里发生了什么魔法?以下测试失败packagemainimport("github.com/stretchr/testify/assert""k8s.io/apimachinery/pkg/api/meta/testrestmapper""k8s.io/apimachinery/pkg/runtime/

docker - Kubernetes Pods 和 Docker Compose(s) (Composures?) 有什么区别?

KubernetesPod和DockerCompose脚本的结果(以下简称:“组合”)似乎都会产生虚拟计算机集群。集群中的所有计算机都可以配置为相互通信,因此您可以编写一个脚本来反射(reflect)您的整个端到端生产配置。单个脚本允许您在任何容器主机上部署该集群。鉴于这两个系统之间的相似之处,我很难理解两者之间的区别。为什么我会选择其中之一?它们是互斥系统还是我可以在kubernetes中运行组合。在设计容器系统时是否需要考虑任何关键因素?如果我今天正在为一个网站设计架构,并且希望喜欢尝试构建一个基于容器的系统。我应该设计的最高优先级的东西是什么?(与在单机系统上构建相比)

docker - Kubernetes Pods 和 Docker Compose(s) (Composures?) 有什么区别?

KubernetesPod和DockerCompose脚本的结果(以下简称:“组合”)似乎都会产生虚拟计算机集群。集群中的所有计算机都可以配置为相互通信,因此您可以编写一个脚本来反射(reflect)您的整个端到端生产配置。单个脚本允许您在任何容器主机上部署该集群。鉴于这两个系统之间的相似之处,我很难理解两者之间的区别。为什么我会选择其中之一?它们是互斥系统还是我可以在kubernetes中运行组合。在设计容器系统时是否需要考虑任何关键因素?如果我今天正在为一个网站设计架构,并且希望喜欢尝试构建一个基于容器的系统。我应该设计的最高优先级的东西是什么?(与在单机系统上构建相比)

go - 在 kubernetes 中处理 kafka 客户端更新

我有一个在AWSMSK上运行的Kafka集群,Kafka生产者和消费者go客户端在kubernetes中运行。生产者负责将数据流发送到Kafka。我需要帮助解决以下问题:比方说,生产者代码中有一些代码更改,必须在kubernetes中重新部署它。我怎样才能做到这一点?由于数据是连续生成的,我不能简单地停止已经运行的生产者并部署更新的生产者。在这种情况下,我将在更新过程之间丢失数据。有时由于代码中的panic(golang),客户端崩溃,但由于它作为pod运行,kubernetes会重新启动它。我无法理解这是好事还是坏事。谢谢 最佳答案

go - Bigtable 客户端初始化卡在 Kubernetes 容器中

我们正在尝试在Kubernetes上运行一个与Bigtable对话的Golang应用程序。该应用程序似乎在创建客户端时停滞不前:bigtableClient:=bigtable.NewClient()将日志级别设置为信息时使用:exportGRPC_GO_LOG_SEVERITY_LEVEL="INFO"错误信息是这样的:WARNING:2019/06/0508:14:13grpc:addrConn.createTransportfailedtoconnectto{dns:///bigtable.googleapis.com:44301}.Err:connectionerror:des

kubernetes - 更新 k8s ConfigMap 或 Secret 而不删除现有的

我一直在使用K8SConfigMap和Secret来管理我们的属性。我的设计非常简单,将属性文件保存在gitrepo中,并使用诸如ThoughtworksGO之类的构建服务器将它们自动部署为ConfigMaps或Secrets(在选择条件下)到我的k8s集群。目前,我发现我必须始终删除现有的ConfigMap和Secret并创建新的进行更新,如下所示:kubectldeleteconfigmapfookubectlcreateconfigmapfoo--from-filefoo.properties有没有一种简单的方法可以使上述步骤比删除当前更有效?如果在删除旧配置图且未创建新配置图的

kubernetes - 更新 k8s ConfigMap 或 Secret 而不删除现有的

我一直在使用K8SConfigMap和Secret来管理我们的属性。我的设计非常简单,将属性文件保存在gitrepo中,并使用诸如ThoughtworksGO之类的构建服务器将它们自动部署为ConfigMaps或Secrets(在选择条件下)到我的k8s集群。目前,我发现我必须始终删除现有的ConfigMap和Secret并创建新的进行更新,如下所示:kubectldeleteconfigmapfookubectlcreateconfigmapfoo--from-filefoo.properties有没有一种简单的方法可以使上述步骤比删除当前更有效?如果在删除旧配置图且未创建新配置图的

go - 如何获取 Kubernetes 上 pod 的真实和实际存储使用情况?

是否有任何直接的方法来获取Kubernetes上pod的实际存储使用情况?我尝试使用Prometheus这样做,但只公开了分配给每个pod的存储量,而不是我的应用程序(pod)实际消耗的存储量。我需要一种方法来查看每个pod消耗了多少存储空间并将其报告给Prometheus或Grafana。 最佳答案 有一种方法,但可能不是“直截了当”的方法。如果pod在Linux中运行,您可以执行:kubectlexec-itcat/proc/1/io它将返回有关主要IO进程的统计信息。以下是对这些的描述:rchar-----I/Ocounter

go - 当使用 k8s.io/client-go 库更改 kubernetes 部署时,获得通知的最佳方式是什么?

上下文我正在编写一个使用k8s.io/client-go的脚本库(godocshere)来操作部署。特别是,我想为集群中的每个Deployment添加一个标签选择器。部署标签选择器是immutable.所以我的方法是:为每个Deployment创建一个副本,唯一的区别是名称以“-temp”为后缀。这是为了最大限度地减少现有部署的停机时间。删除原来的部署。重新创建原始Deployment,唯一的区别是多了一个标签选择器。删除临时部署。我不能只使用client-go库按顺序执行步骤1-4,因为我只想在API服务器认为上一步已完成时继续下一步。例如,在API服务器说原始Deployments

go - kubernetes/client-go 未定义 : v1. FinalizerOrphan

我得到了k8s.io/client-go/1.5/...尝试运行时出错:>#k8s.io/client-go/pkg/api/v1>../k8s.io/client-go/pkg/api/v1/helpers.go:86:undefined:v1.FinalizerOrphan请问要怎么处理?../k8s.io/client-go/pkg/api/v1/helpers.go:86:varstandardFinalizers=sets.NewString(string(FinalizerKubernetes),metav1.FinalizerOrphan,)