草庐IT

docker - Kubernetes : Is it possible to hit multiple pods with a single request in Kubernetes cluster

我想清除Kubernetes命名空间中所有pod中的缓存。我想向端点发送一个请求,然后它将向命名空间中的所有pod发送HTTP调用以清除缓存。目前,我使用Kubernetes只能命中一个pod,而且我无法控制哪个pod会被命中。即使负载均衡器设置为RR,连续访问pod(n次,其中n是pod的总数)也无济于事,因为其他一些请求可能会悄悄进入。这里讨论了同样的问题,但我找不到实现的解决方案:https://github.com/kubernetes/kubernetes/issues/18755我正在尝试使用Hazelcast实现清除缓存部分,其中我将存储所有缓存,而Hazelcast会自

go - 在非默认命名空间中部署时,Cluster Config 无法获取 Pod

当我将golang服务部署到除default命名空间之外的任何命名空间时,该服务无法检索任何命名空间上的pod。部署在default命名空间上的相同服务使用golangclient-goapi完美运行。这是安全问题吗?谢谢。 最佳答案 这个问题是权限问题。由于您正在使用rest.InClusterConfig(config)创建客户端。这意味着它使用pod的服务帐户作为凭证。因此,请检查该服务帐户是否具有在任何命名空间中获取pod的权限。ifserviceaccountinthepodisnotdefined,thenitwillu

go - Knative pod http 请求

当我请求这个启动的服务器时:https://gist.github.com/Rasarts/1180479de480d7e36d6d7aef08babe59#file-server我得到正确的回应:{"args":{},"headers":{"Accept-Encoding":"gzip","Connection":"close","Host":"httpbin.org","User-Agent":"Go-http-client/1.1"},"origin":"","url":"https://httpbin.org/get"}但是当我在以这种方式创建的minikube上向该服务器发出

go - 无法检测到 Kubernetes 中的 tcp 服务没有带有 golang 应用程序的 pod

我有一个statsd客户端,它在tcp中推送到kubernetes托管的statsd服务。当我重新部署服务并在服务器上更新它的pod时,数据停止流动,但我在statsd客户端上没有错误。基于thisthread,我在我的golang库中添加了读取检测,以查看我是否收到消息,但没有收到任何消息。我启动连接,从客户端发送statsd数据包,然后我将statsd服务缩减到0个pod,但客户端继续从tcpchannel成功读取和写入,没有错误!当我将部署缩放回1时,旧客户端不会重新连接,客户端和服务器将永远保持不通信状态。当服务器副本在Kubernetes服务中变为0时,如何从客户端收到错误?

go - Leader election - Pod 没有选择作为领导者

我已经使用kubernetes/client-go领导者选举实现了领导者选举。我有2个副本。第一次两个pod都被选为leader,但此后同一个pod没有被选为leader。领导选举在一段时间后停止。我试图删除一个pod,然后创建的新pod被选为领导者。同样,一旦pod停止领导,则没有pod充当领导者。我正在使用configmap进行资源锁定。请帮助我解决问题。funcNewElectorWithCallbacks(namespace,configMapName,identitystring,ttltime.Duration,clientcli.CoreV1Interface,callb

go - 是否可以在运行时替换 POD 中容器中的可执行文件?

我正在Ubuntu上开发Go可执行文件并在minikube中运行kubernetes集群。minikube中运行的pod+container是基于Ubuntu的,我只想替换容器中的可执行文件。或多或少绕过了重新制作容器的需要,因为可执行文件是唯一需要更改的东西。当我的更改“准备就绪”时,我计划重新制作容器所基于的图像等,但那是在路上。我真的希望迭代速度更快一些。这可能吗?有没有更好的办法? 最佳答案 仅出于开发目的(非常棘手的解决方案),您可以让您的Ubuntu-Go容器运行tail-f/dev/null以防止它完成,并使用host

docker - 在 helm 安装之前将 go 二进制文件移动到 pod 中的惯用方法是什么?

我使用CircleCI构建一个go二进制文件,我想在Helmcharts安装的pod中运行它。我想将二进制文件从CircleCI移动到远程集群,以便在pod启动时可用。我知道使用ConfigMap或Secrets等卷是可能的,但我不确定执行此操作的最佳方法是什么。我曾经让它与私有(private)docker注册表和用于注册表凭据的kubernetesSecrets一起使用,但我不喜欢这个选项。我不想在每次二进制更改时都构建和推送新的docker镜像。version:2.1jobs:build_and_deploy:docker:-image:circleci/golang:1.12.

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

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

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

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

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

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