如何在Kubernetes中为容器设置ulimit?(特别是ulimit -u)
有没有办法监控pod状态并使用Stackdriver重新启动在GKE集群中运行的pod的数量?
虽然我可以看到Stackdriver中所有pod的CPU,内存和磁盘使用情况指标,但似乎没有办法获得有关由于崩溃而重新启动副本集中的pod或pod的崩溃的指标.
我正在使用Kubernetes副本集来管理pod,因此它们会在重新生成时重新生成并在崩溃时使用新名称创建.据我所知,Stackdriver中的指标由pod-name(在pod的生命周期中是唯一的)显示,这听起来并不合理.
警告pod故障听起来像是一件很自然的事情,听起来很难相信目前还不支持.我从Stackdriver for Google Container Engine获得的监控和警报功能似乎相当无用,因为它们都绑定到了生命周期非常短的pod.
因此,如果这不起作用,那么有关于如何监控持续崩溃的pod的已知变通方法或最佳实践吗?
monitoring kubernetes google-kubernetes-engine stackdriver google-cloud-stackdriver
在kubernetes中,我可以使用PersistentVolumeClaim创建一些存储空间,稍后我可以将其存储在某个容器中.
但是,如果容器中的用户不是root用户,则该用户将无法访问该目录,因为它由root拥有.
访问此类卷的正确方法是什么?(在创建和安装该卷时,我没有找到任何用户/权限选项.)
我们正在构建工作流程调度应用 我们发现Airflow是工作流管理器和Kubernetes的一个很好的选择,是集群管理器的好选择.因此,流量将是,
在搜索时,我们发现,Airflow有操作员可以与ECS,Mesos集成,但不适用于Kubernetes.但是,我们在Airflow wiki上发现了对Kubernetes Operator的请求,但没有对它进行任何进一步的更新.
那么,简单的问题是,如何将Airflow与Kubernetes整合?
kubernetes google-kubernetes-engine airflow airflow-scheduler
我在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) 我们在事件导出器容器的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) 我想使用Cloud NAT设置 NAT 网关,以便公共 GKE 集群中的 VM/Pod 使用静态 IP 地址。
我面临的问题是 NAT 网关似乎只在 VM 没有其他选项时才使用,即:
仅当流量没有其他匹配的路由或路径时,GCP 才会使用 Cloud NAT 转发流量。
但在公共 GKE 集群的情况下,VM 具有临时外部 IP,因此它们不使用网关。
根据文档:
如果在 VM 的接口上配置外部 IP [...] NAT 将不会对此类数据包执行。但是,分配给接口的别名 IP 范围仍然可以使用 NAT,因为它们无法使用外部 IP 访问 Internet。
和
通过此配置,您可以通过 SSH 直接连接到 GKE 虚拟机,同时让 GKE pod/容器使用 Cloud NAT 访问互联网。
这就是我想要的,但我看不到这里究竟要设置什么。
这意味着什么alias IP ranges assigned to the interface can still use NAT以及如何设置?
Kubernetes 允许限制 pod 资源的使用。
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 200m # which is 20% of 1 core
memory: 256Mi
Run Code Online (Sandbox Code Playgroud)
比方说,我kubernetes节点有2个核心。我在此节点上以 CPU 限制运行此 pod:200m。在这种情况下,我的 pod 会使用它的底层节点的1Core 的 200m还是2Core 的 100m+100m?
我的gunicorn 工人的编号公式或 nginx 工人的编号等需要此计算。在 gunicorn 文档中它说
通常我们建议 (2 x $num_cores) + 1 作为开始的工作人员数量。
那么我应该使用 5 个工人吗?(我的节点有 2 个内核)。或者这甚至无关紧要,因为我的 pod 只分配了 200m cpu,我应该考虑我的 pod 有 1 个核心?
TLDR:当 Pod 的 CPU 使用率受 Kubernetes 限制时,Pod 使用多少个内核?如果我top在 pod 内运行,我会看到 2 个可用内核。但我不确定我的应用程序是使用这个 2 核的 …
我不清楚管理具有多个环境的应用程序的最佳实践是什么,共享模板文件但每个环境具有不同的变量。例如,我们部署了一个开发、登台和生产环境。他们使用相同的 helm 模板,但我对每个环境都有不同的变量。
当前文件结构:
helm/
??? templates/
? ??? _helpers.tpl
? ??? deploy.yaml
? ??? ingress.yaml
? ??? service.yaml
? ??? managed-certs.yaml
? ??? NOTES.txt
??? Chart.yaml
??? values-production.yaml
??? values-staging.yaml
??? values-develop.yaml
Run Code Online (Sandbox Code Playgroud)
现在每个环境都有两个不同的值文件,我将以下内容传递给 helm
helm install . --values=values-production.yaml
但是,我们无法正确管理上述版本控制。
我找不到任何关于管理应用程序多个环境的最佳实践的可靠文档。我遇到了helmfile这似乎解决了这个问题,但他们的文档不清楚。管理 kubernetes 的生态系统令人困惑,任何帮助表示赞赏。
我将 GKE 集群从 1.13 更新到 1.15.9-gke.12。在此过程中,我从传统日志记录切换到 Stackdriver Kubernetes Engine Monitoring。现在我stackdriver-metadata-agent-cluster-level遇到了pod 不断重启的问题,因为它获取OOMKilled.
不过内存好像还好。

日志看起来也很好(与新创建的集群的日志相同):
I0305 08:32:33.436613 1 log_spam.go:42] Command line arguments:
I0305 08:32:33.436726 1 log_spam.go:44] argv[0]: '/k8s_metadata'
I0305 08:32:33.436753 1 log_spam.go:44] argv[1]: '-logtostderr'
I0305 08:32:33.436779 1 log_spam.go:44] argv[2]: '-v=1'
I0305 08:32:33.436818 1 log_spam.go:46] Process id 1
I0305 08:32:33.436859 1 log_spam.go:50] Current working directory /
I0305 08:32:33.436901 1 log_spam.go:52] Built on Jun 27 20:15:21 (1561666521)
at gcm-agent-dev-releaser@ikle14.prod.google.com:/google/src/files/255462966/depot/branches/gcm_k8s_metadata_release_branch/255450506.1/OVERLAY_READONLY/google3
as //cloud/monitoring/agents/k8s_metadata:k8s_metadata
with gc go1.12.5 for linux/amd64
from changelist 255462966 with …Run Code Online (Sandbox Code Playgroud) kubernetes ×8
stackdriver ×2
airflow ×1
gunicorn ×1
helmfile ×1
logging ×1
monitoring ×1
nat ×1
permissions ×1