Articles of kubernetes

将LoadBalancer添加到现有服务

遵循这个留言板教程 。 在接近尾声时,他们对如何创buildLoadBalancer或将NodePorts分配给服务进行了分类。 他们引用这个文档来描述不同的types以及他们做了什么,但是并没有详细讨论如何将它们应用到服务上。 有没有办法更新正在运行的服务,创build负载平衡器并将其连接到指定的端口? 使用amazon web services来托pipe我们的集群,它支持负载平衡器在创build一个服务很好,但我不知道如何修改服务。 编辑: 尝试这个导致了一个错误: $ kubectl公开服务前端 – 端口= 80 –type = LoadBalancer 来自服务器的错误:服务“前端”已经存在

Kubernetes:交互式Rails控制台

我有一个Rails的服务器与web和worker部署运行。 一个开始彪马,另一个Sidekiq。 如何使用我的Kubernetes集群上运行的应用程序映像连接到交互式rails console ?

在docker-compose中转发端口,而不必使用指定的-L选项打开SSH连接

我一直在关注本教程,关于使用Docker容器开始使用Kubernetes,这是修改为使用docker-compose官方教程的变体。 我设法得到尽可能列出使用的节点 kubectl get nodes 但我只能这样做,如果我有一个SSH连接打开到另一个窗口中的容器,打开使用 docker-machine ssh docker-vm -L 8080:localhost:8080 这是相当混乱,我想能够在docker-compose.yml处理这个,但我不知道如何 我试过使用ports和expose选项在iml文件,但他们不工作。 当我尝试转发/暴露端口8080,并获得使用上述kubectl命令的节点,我得到以下错误: error: couldn't read version from server: Get http://localhost:8080/api: EOF 我从顶部的第一个链接使用了docker-compose.yml ,并做了以下修改: aipserver: ports: – "8080:8080" expose: – "8080" 我已经在docker-compose.yml中指定的所有容器上docker-compose.yml ,但问题仍然存在。 如何使用docker-compose.yml转发/公开端口在我的容器上,而不必使用指定的-L选项打开SSH连接。

为什么linux系统在普通的docker中修改工作,而不是在kubernetes下?

在容器中运行的命令是: echo never | tee /sys/kernel/mm/transparent_hugepage/enabled 这两个容器都作为特权运行。 但是在kubernetes docker容器中,命令失败,出现错误: tee: /sys/kernel/mm/transparent_hugepage/enabled: Read-only file system 并在普通的docker run -it –privileged alpine /bin/sh命令工作正常。 我已经在k8s和非k8s容器上使用docker docker inspect来validation特权状态,没有看到任何其他应该导致这个问题的列表 – 我已经在两个输出之间运行diff ,然后使用docker run进行修改以尝试重现在普通的docker问题,但失败(它保持工作)。 任何想法为什么kubernetes泊坞窗容器失败和普通docker容器成功? 这可以在这里重新定义: apiVersion: v1 kind: Pod metadata: name: sys-fs-edit spec: containers: – image: alpine command: – /bin/sh args: – -c – echo never | tee /sys/kernel/mm/transparent_hugepage/enabled && sysctl […]

NGINXdynamic代理通过parsing器

尝试使用nginx在Kubernetes中设置api网关。 我试图按照指定服务和版本的path跟单个子域模式。 api.domain.com/service/v0/api/resource/10 -> http://servicev0/api/resource/10 现在忽略版本… 这确实解决了。 location ~/(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) { resolver 169.254.169.250; proxy_pass http://theservice; } 使用api.domain / theservice / v0 / location ~/(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) { resolver 169.254.169.250; proxy_pass http://$service; } location ~/(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) { resolver 169.254.169.250; proxy_pass http://$service; } 错误 *1 theservice could not be resolved (110: Operation timed out), 还需要重写请求来删除$ service和$ version。

Google Container Engine上的Heapster + InfluxDB(GKE)

我想弄清楚在我的GKE Kubernetes集群上运行Grafana / Heapster / InfluxDB的最佳方式。 据我所知,我不能修改kube-system命名空间,除非我想在一段时间后谷歌覆盖这些设置。 所以改变在kube-system中运行的heapster可能不是一种select。 这是否意味着我需要在Grafana和InfluxDB pod的默认命名空间中使用另一个heapster?

Kubernetes – 物理networking分割的最佳实践

基于以下devise约束,是否有任何人有关于如何在多个networking区域部署Kubernetes的最佳实践或build议? 这种方法最常用和最常用的方法是什么? 例如,如果我有一个典型的DMZ,应用程序区域,数据区域,我希望我的nginx容器在DMZ中运行,在应用程序区域中运行我的node.js应用程序容器,在数据区域运行我的MongoDB容器。 要么 以更高的成本,我可以为每个区域部署一个kubernetes群集,每个区域都有自己的主节点和工作者节点 – 尽pipe这在考虑灾难恢复或站点主动/主动要求时似乎是一项重大投资。 我会部署在DMZ中的K8s主人以及DMZ中的工作者节点和剩余的应用和数据库区域吗? 我知道我可以将所有内容部署到应用程序区域,并使用SDN创build相同的networking分区并将我的请求从DMZ负载均衡到集群,但这不是我想要做的。 非常感激。 汤米B.

Google云容器引擎上的NFS无法parsing服务器的主机名

我拥有的: 使用Google容器的集群上的Kubernetes部署将操作系统优化为节点操作系统 cat /etc/*-release 进一步deploy.yaml apiVersion: apps/v1beta1 kind: Deployment metadata: name: my-app spec: replicas: 1 template: metadata: labels: app: my-app spec: containers: – name: my-app image: eu.gcr.io/my-project/my-app ports: – containerPort: 8013 volumeMounts: – mountPath: /my/cache/ name: cache volumes: – name: cache nfs: server: cache path: /cache/my-app/ readOnly: false 问题是,当我明确地inputIP地址时,nfs-mount工作,但由于某种原因无法parsing主机名。 volumes: – name: cache nfs: server: […]

用两个标签推送图像给gcr.io会产生两个不同的图像

我正在做以下事情: docker build -t gcr.io/projid/imgname:333 -t gcr.io/projid/imgname:latest。 dockerlogin -u _json_key -p“$(cat /secrets/service-account.json)”https://gcr.io docker推送 gcr.io/projid/imgname:333 docker push gcr.io/projid/imgname:latest 第一推命令的输出: Pushing to google container registry … The push refers to a repository [gcr.io/projid/imgname] 24af4f7c7118: Preparing 17b0972980d8: Preparing 6d6a6425aacb: Preparing 809c8c0dd73c: Preparing e8d45b8ab3ca: Preparing e8fa134cb7b8: Preparing 7cbcbac42c44: Preparing e8fa134cb7b8: Waiting 7cbcbac42c44: Waiting 809c8c0dd73c: Layer already exists e8d45b8ab3ca: Layer […]

Kubernetes模板中的dynamic命令和参数

我们希望通过consul来丰富我们的kubernetes环境,为应用程序/阶段/对等configuration提供一个可移植的层。 根据我目前的理解,这些将是我的步骤: build立/重新使用docker图像来提供领事服务器 为kubernetes写一个控制器和一个服务configuration文件 根据细节configuration三个复制: 1 魔法 魔术是指这样的事实,我需要运行一个命令,如: consul join <Node A Address> <Node B Address> <Node C Address> 刚刚开始的复制品。 我头脑中有两个半的障碍: 该命令只能在一台机器上执行? 我怎样才能访问对端的IP地址? 作为一个额外的问题:我怎样才能调用另一个命令,每次一个新的副本开始/移动? 我的直觉告诉我写一个自己的脚本,与kubernetes的内部etcd进行通信,以查看哪些节点已经注册并从那里获取。 这是正确的方向吗? 控制器模板中的命令是否会在正确的时间被触发,也就是在 etcd更新了新的pod / replica后? 引导领事数据中心