标签: google-kubernetes-engine

如何使用Kubernetes DNS for pods?

在GKE上,kube-dns在我的节点上运行,我可以看到docker容器.

我可以通过名称访问服务,这对于所有这些负载平衡是非常合适的解决方案的应用程序非常有用,但我如何使用DNS访问各个pod?

我知道我可以在API中查找特定的pod,但我需要自己更新hosts文件,并继续观看pod列表.DNS应该为我这样做,所以如何在pod中使用它?

Kubernetes doc说DNS信息需要传递给kubelet,但是我无法访问我知道的GKE上的内容,所以它只是没有在GKE上设置那样或者有什么办法可以激活它吗?

我的一些服务(特别是zookeeper)自己知道其他节点,并尝试通过主机名(即pod名称)连接到它们,并且除非我hosts自己更新文件,否则会失败.我想使用集成的DNS服务.

任何关于如何做到这一点的指导将不胜感激.

谢谢

dns kubernetes google-kubernetes-engine

13
推荐指数
1
解决办法
1万
查看次数

如何在kubernetes应用程序上获取ssl?

我在kubernetes上部署了一个简单的流星应用程序.我将外部IP地址与服务器相关联,以便可以从群集中访问它.现在,我准备将它暴露给互联网并保护它(使用HTTPS协议).任何人都可以给出本节的简单说明吗?

security ssl https kubernetes google-kubernetes-engine

13
推荐指数
2
解决办法
2万
查看次数

如何使用client_disconnected_before_any_response调试失败的请求

我们有一个由kubernetes ingress创建的HTTP(s)Load Balancer,它指向由运行nginx和Ruby on Rails的pod组成的后端.

看一下负载均衡器日志,我们检测到越来越多的请求,响应代码为0statusDetails= client_disconnected_before_any_response.

我们试图理解为什么会发生这种情况,但我们没有找到任何相关的东西.nginx访问或错误日志中没有任何内容.

这种情况发生在从GET到POST的多种请求中.

我们还怀疑有时尽管请求记录了该错误,但请求实际上是传递给后端的.例如,我们看到了PG :: UniqueViolation错误,因为在我们的注册终端中,两次发送了令人满意的注册请求到后端.

任何形式的帮助将不胜感激.谢谢!


 更新1

这里要求的入口资源的yaml文件:


 更新2

我已经创建了一个基于日志的Stackdriver度量标准,用于计算出现此行为的请求数.这是图表:

图表

大峰大致匹配这些kubernetes事件的时间戳:

事件

完整错误: Readiness probe failed: Get http://10.48.1.28:80/health_check: net/http: request canceled (Client.Timeout exceeded while awaiting headers)"

因此有时候后端后面的pod的准备探测失败了,但并非总是如此.

这是readinessProbe的定义

readinessProbe:
  failureThreshold: 3
  httpGet:
    httpHeaders:
    - name: X-Forwarded-Proto
      value: https
    - name: Host
      value: [redacted]
    path: /health_check
    port: 80
    scheme: HTTP
  initialDelaySeconds: 1
  periodSeconds: 30
  successThreshold: 1
  timeoutSeconds: 5
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine google-cloud-networking kubernetes-ingress

13
推荐指数
1
解决办法
439
查看次数

如何在Kubernetes中为容器设置ulimit?

如何在Kubernetes中为容器设置ulimit?(特别是ulimit -u)

kubernetes google-kubernetes-engine

12
推荐指数
2
解决办法
1万
查看次数

在使用GKE时,Ingress使用'default backend - 404'进行响应

使用GCP(1.6.4)中的最新Kubernetes版本,我有以下Ingress定义:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myproject
  namespace: default
  annotations:
    ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: "gce"
spec:
  rules:
  - host: staging.myproject.io
    http:
      paths:
      - path: /poller
        backend:
          serviceName: poller
          servicePort: 8080
Run Code Online (Sandbox Code Playgroud)

这是我的服务和部署:

apiVersion: v1
kind: Service
metadata:
  name: poller
  labels:
    app: poller
    tier: backend
    role: service
spec:
  type: NodePort
  selector:
    app: poller
    tier: backend
    role: service
  ports:
  - port: 8080
    targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: poller
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform kubernetes google-kubernetes-engine

12
推荐指数
1
解决办法
1万
查看次数

极高的负载平衡成本,可在Google Cloud Platform上实现最少的Kubernetes Engine设置

我正在尝试确定一个简单的公共面临(公共负载平衡IP)Web应用程序的最小Kubernetes引擎设置.

我的设置如下:

  • 1 Kubernetes集群
  • 3个f1-micro节点(当时3是kubernetes所需的最小值,现在可能更少?)
  • 1个负载均衡器,带有转发规则到我的外部IP

我的每月结算费用为:48.10加元:其中一半来自Compute Engine Network Load Balancing: Forwarding Rule Minimum Service Charge in Americas: 744 Hours CA$23.82

有什么办法可以减少这笔费用吗?或者,这是否真的是服务于具有公共域名的应用程序的最小Kubernetes群集的成本?

google-cloud-platform google-kubernetes-engine

12
推荐指数
1
解决办法
2213
查看次数

将Kubernetes与Apache Airflow集成

我们正在构建工作流程调度应用 我们发现Airflow是工作流管理器和Kubernetes的一个很好的选择,是集群管理器的好选择.因此,流量将是,

  1. 我们将向Airflow提交工作流程DAG.
  2. Airflow应通过指定docker image将给定DAG的任务提交给Kubernetes.
  3. Kubernetes应该通过在群集的可用EC2工作节点上运行docker容器来执行任务.

在搜索时,我们发现,Airflow有操作员可以与ECS,Mesos集成,但不适用于Kubernetes.但是,我们在Airflow wiki上发现了对Kubernetes Operator的请求,但没有对它进行任何进一步的更新.

那么,简单的问题是,如何将Airflow与Kubernetes整合?

kubernetes google-kubernetes-engine airflow airflow-scheduler

12
推荐指数
1
解决办法
5452
查看次数

群集自动缩放器不降尺寸

我在google kubernetes引擎(GKE)中设置了一个区域群集.节点组是每个区域中的单个vm(总共3个).我有一个部署,最少由HPA控制3个副本.所述节点组被配置为自动缩放(簇自动缩放又名CA).问题场景:

更新部署映像.Kubernetes自动创建新的pod,CA确定需要新节点.我现在有了4.当所有新的pod已经启动时,旧的pod会被删除,这意味着我拥有与前一分钟完全相同的CPU请求.但是在10分钟后最大缩小时间我还有4个节点.

现在,CPU对节点的请求是:

CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ------------  ----------  ---------------  -------------
  358m (38%)    138m (14%)  516896Ki (19%)   609056Ki (22%)
--
  CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ------------  ----------  ---------------  -------------
  800m (85%)    0 (0%)      200Mi (7%)       300Mi (11%)
--
  CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ------------  ----------  ---------------  -------------
  510m (54%)    100m (10%)  410Mi (15%)      770Mi (29%)
--
  CPU …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform kubernetes google-kubernetes-engine

12
推荐指数
1
解决办法
2197
查看次数

什么是"提供的手表的资源版本太旧"来自事件导出器容器的警告?

我们在事件导出器容器的GCP kubernetes集群事件日志中收到了很多警告.

event-exporter  Jun 4, 2018, 10:45:15 AM    W0604 14:45:15.416504 1 reflector.go:323] github.com/GoogleCloudPlatform/k8s-stackdriver/event-exporter/watchers/watcher.go:55: watch of *v1.Event ended with: The resourceVersion for the provided watch is too old.
event-exporter  Jun 4, 2018, 10:37:04 AM    W0604 14:37:04.331239 1 reflector.go:323] github.com/GoogleCloudPlatform/k8s-stackdriver/event-exporter/watchers/watcher.go:55: watch of *v1.Event ended with: The resourceVersion for the provided watch is too old.
event-exporter  Jun 4, 2018, 10:28:37 AM    W0604 14:28:37.249901 1 reflector.go:323] github.com/GoogleCloudPlatform/k8s-stackdriver/event-exporter/watchers/watcher.go:55: watch of *v1.Event ended with: The resourceVersion for the provided watch is too old.
event-exporter  Jun 4, …
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine

12
推荐指数
1
解决办法
1113
查看次数

如何在Kubernetes集群上计算php-fpm子进程

出于扩展的原因,我最近将我的应用程序从带有docker的单个服务器迁移到了Google Kubernetes Engine.我是kubernetes平台的新手,我可能还没有完全理解它的概念,但我确实得到了基础知识.

我已经成功迁移了我的应用程序 cluster size of 3 each with 1vCPU and 3.75 GB RAM

现在我遇到了在kubernetes集群中运行的php-fpm进程的最佳配置.我已经阅读了一些关于如何设置php-fpm进程的文章,例如

https://serversforhackers.com/c/php-fpm-process-management

https://www.kinamo.be/en/support/faq/determining-the-correct-number-of-child-processes-for-php-fpm-on-nginx

在我的集群上,我有一个Elasticsearch,Redis,前端和一个REST Api以及我对kubernetes的理解,每个都有自己的pod在我的集群上运行,我试图访问pod的REST Api并看到1个vCPU和3.75 GB RAM是我在我的集​​群规范上设置的.RAM只剩下1.75GB,所以我认为还有其他服务或pod使用内存.

所以现在我想根据我上面分享的文章增加以下内容的大小.

pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 4
pm.max_spare_servers = 8 
Run Code Online (Sandbox Code Playgroud)

但我的问题是,因为pod是在一个worker上,如果我在剩余的可用内存上改变配置基础(根据我上面在计算pm.max_children上分享的文章)我可能最终会占用一个占用所有内存空间的pod,并且将无法为其他服务分配.我的问题有道理吗?还是有想法我错过了?

基于该文章,因为我的工作人员有3.75 GB RAM,而其他服务已经消耗1.5GB内存,所以我最好的目标是1 GB RAM.

pm.max_children使我们达到1024 Mb/60 Mb = 17 max_children

pm.max_children = 17
pm.start_servers = 8
pm.min_spare_servers = 7
pm.max_spare_servers = 10
pm.max_requests = 500
Run Code Online (Sandbox Code Playgroud)

这引出了一个问题:当有其他服务或pod共享相同的资源时,如何计算Kubernetes集群上的php-fpm子进程.

感谢您阅读,直到最后,并提前感谢您的意见.

php docker google-cloud-platform kubernetes google-kubernetes-engine

12
推荐指数
1
解决办法
721
查看次数