Articles of kubernetes

Kubernetes滚动更新,通常保留本地数据?

使用本地节点存储来保持可变状态的Kubernetes应用程序(如在Kubernetes 101示例中)在应用程序更新时会丢失其存储空间。 这是典型的部署更新方法的一个副作用,即打开新的豆荚并closures旧的豆荚。 这是不幸的,因为这意味着即使数据通常已经存在于无法访问的卷中,也会将数据重新复制到每个节点上(可能有几百GB)。 这大大减缓了更新。 应用程序员可以做些什么来优化? 一些pod属性可以在原地更新 ,但是这只包含一小部分更新。 持久卷本质上是远程的,不是本地的,所以它们不能被映射,并且不会具有与本地存储相同的性能。 他们不适当地拥有独立于应该拥有它们的部署的生命。 问题#9043讨论这个问题,但似乎没有达成任何共识; 而且无论如何,有时可以在相同的节点上更换吊舱,但不能在原地进行更新。 问题#7562开始讨论它,但它变成了一个持续的卷的讨论。 问题#598是相关的,但是当你想让pod保持未分配给任何节点而不是使用空目录启动时,真的是这样。

使用自动缩放谷歌容器引擎时修复了IP池

我与一些第三方API合作,他们要求我发送他们的IP为了让他们先白名单,才能使用它。 现在我正在将我的应用迁移到Google Container Engine,并自动分配IP。 有没有反正我设置一个IP池,集群内的新节点只会从该池中获取IP?

kubectl:与服务器XXX.XXX.XXXXXX的连接被拒绝

我正尝试连接到Google Cloud Engine中的kubernetes主(群集)。 当kubectl尝试访问kubernetes主机时,总是得到的错误是: 与服务器XXX.XXX.XXX.XXX的连接被拒绝 – 您是否指定了正确的主机或端口? 例如: $ kubectl version Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"2017-01-12T04:57:25Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"} The connection to the server XXX.XXX.XXX.XXX was refused – did you specify the right host or port? 至于我检查客户端是使用相同的版本,该服务器(版本1.5.2)。 但是出于一些奇怪的原因,它拒绝连接。 $ gcloud beta container get-server-config Fetching server config for europe-west1-c defaultClusterVersion: 1.5.2 defaultImageType: GCI […]

在Google容器registry(GCR)中使用Google Container Engine(GKE)时出错

在Google Container Engine上设置我们的公司基础架构时,我试图将我们的Docker镜像放在Google Container Registry中。 当我尝试使用GCR上托pipe的映像启动部署时,我在kubernetes中获得了以下错误消息。 无法拉图像“gcr.io//portal:latest”:rpc错误:代码= 2 desc =错误:状态405试图拉仓库/门户:“v1registryAPI被禁用如果你没有明确地使用v1registryAPI,可能无法find您的v2映像。请validation您的映像是否可用,或者使用dockerd –disable-legacy-registry重试。请参阅https://cloud.google.com/container-registry/docs/support /弃用通知 “ 错误同步pod,跳过:未能“StartContainer”为“门户”与ErrImagePull:“rpc错误:代码= 2 desc =错误:状态405试图拉仓库/门户:\”v1registryAPI被禁用。 如果您没有明确使用v1registryAPI,则可能无法find您的v2映像。 确认您的映像是可用的,或者用dockerd –disable-legacy-registry重试。 请参阅https://cloud.google.com/container-registry/docs/support/deprecation-notices \“” 我发现一些引用需要添加权限的服务帐户,我已经尝试过,但似乎没有工作,即使在我删除并重新创build它之前的环境工作。 我还find了一些参考,以确保您推送最新的docker版本的容器。 我使用最新的Docker CE下载完成了我所有的映像。 希望有什么build议可以导致这个错误。 谢谢!

为什么禁用kubernetes交换

由于Kubernetes 1.8,似乎我需要禁用交换在我的节点(或设置 – 无法交换到“假”)。 我无法findKubernetes坚持禁用掉期的技术原因。 这是出于性能的原因? 安全原因? 为什么没有logging这个原因?

通过Docker Toolbox在OSX上运行kubernetes

我试图让Kubernetes在OSX上运行。 我已经下载并安装了Docker工具箱,并按照这里的说明: https : //github.com/kubernetes/kubernetes/blob/release-1.0/docs/getting-started-guides/docker.md 当我尝试运行kubectl get nodes ,出现以下错误: error: couldn't read version from server: Get http://localhost:8080/api: dial tcp 127.0.0.1:8080: connection refused 我注意到这个指南有一个关于OSX的说明,但是它是用于boot2docker的,它已经被Docker Toolbox所弃用了。 任何想法,我可以得到这个工作?

ServiceController不应该在没有云提供者的情况下运行

我试图在我的机器上使用Docker在本地运行Kubernetes(Hyperkube): 我运行这个命令来运行kubelet容器: docker run \ –volume=/:/rootfs:ro \ –volume=/sys:/sys:ro \ –volume=/var/lib/docker/:/var/lib/docker:rw \ –volume=/var/lib/kubelet/:/var/lib/kubelet:rw \ –volume=/var/run:/var/run:rw \ –net=host \ –pid=host \ –privileged=true \ –name=kubelet \ -d \ gcr.io/google_containers/hyperkube-amd64:${K8S_VERSION} \ /hyperkube kubelet \ –containerized \ –hostname-override="127.0.0.1" \ –address="0.0.0.0" \ –api-servers=http://localhost:8080 \ –config=/etc/kubernetes/manifests \ –cluster-dns=10.0.0.10 \ –cluster-domain=cluster.local \ –allow-privileged=true –v=2 运行所有其他Kubernetes组件。 但是一些组件(API服务器,控制器pipe理器…)会立即退出。 控制器pipe理器容器(已退出)日志 I0425 13:47:27.265926 1 plugins.go:71] No cloud […]

了解Docker中的Java内存行为

我们目前运行在Google容器引擎(GKE)中的Kubernetes集群由运行由Google维护的Debian GNU / Linux 7.9(wheezy)的n1-standard-1机器types(1个虚拟CPU和3.75 GB内存)组成。 由于我们服务的负载和内存使用量增加,我们需要将我们的节点升级到更大的机器types。 在我们的testing集群中尝试这个时,我们经历了一些对我们来说似乎很奇怪的事情。 JVM应用程序在部署到Google节点时消耗的内存似乎与节点上可用的内核数成正比。 即使我们将JVM最大内存(Xmx)设置为128Mb,在一台内核计算机上也会消耗大约250Mb(这是可以理解的,因为JVM由于GC,JVM本身等消耗的内存超过最大限制) 2核心机器上的700Mb( n1-standard-2 )和4核心机器上的1.4Gb( n1-standard-4 )。 唯一不同的是机器types,使用的是相同的Docker镜像和configuration。 例如,如果我使用n1-standard-4机器typesSSH进入一台机器,并运行sudo docker stats <container_name>我得到这个: CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O k8s.name 3.84% 1.11 GB / 1.611 GB 68.91% 0 B / 0 B 当我使用完全相同的(应用程序)configuration在本地运行相同的 Docker镜像(mac osx和docker-machine)时,我看到: CONTAINER CPU % MEM USAGE / […]

Kubernetes荚可以跨越节点吗?

文件说… 一个吊舱(如在一群鲸鱼或豌豆吊舱中)是一组一个或多个容器(如Docker容器),这些容器的共享存储以及有关如何运行容器的选项。 豆荚始终位于同一地点并共同排定,并在共享上下文中运行。 一个podbuild模一个特定于应用程序的“逻辑主机” – 它包含一个或多个相对紧密耦合的应用程序容器 – 在容器之前的世界中,它们将在相同的物理或虚拟机器上执行。 但是我不确定“同位置”是否在同一个节点上。 当卫星位于同一地点时,它们“靠近,因此它们出现在地面上的接收设备占据一个单一的轨道位置”。 所以,这可能在同一个群集上,而不是在同一个节点上。 发布此时,我可以find关于这个问题的唯一信息是在https://platform9.com/blog/compare-kubernetes-vs-ecs/它说… 一个Pod中的容器保证在一个Kubernetes节点上运行。 现在这听起来很有说服力,但是我无法在任何地方得到任何佐证。 我想确保它们是正确的,不会误解和传播错误信息。 我问的原因是,如果这是真的,Kubernetes似乎是天生的浪费。 几乎可以肯定的是,部署了pod的节点将剩下资源。 您可能会拥有一个可以通过这些剩余资源的组合来满足需求的吊舱。 但是,如果一个吊舱不能跨越多个节点,则必须创build一个新的节点,并有更多未使用的资源。

如何列出Kubernetes中的所有容器?

如何使用kubectl列出Kubernetes集群中的所有容器? 目前的文档没有提到像“容器”资源。 kubectl get pod -o json 列出所有包含容器描述的窗格。 但是有没有可能把容器列为一等公民?