问题标签 [kubernetes-deployment]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - preStop 钩子和终止GracePeriodSeconds 之间的关系
基本上,我想做的是玩转 pod 生命周期,并检查我们是否可以在 pod 终止之前进行一些清理/备份,例如复制日志。
我需要什么:在终止之前将日志/堆转储从容器复制到 hostPath/S3
我尝试了什么:
我使用带有 bash 命令的 preStop 钩子来回显一条消息(只是为了看看它是否有效!!)。使用带有延迟的terminationGracePeriodSeconds preStop 并切换它们以查看该过程是否有效。前任。保持 terminateGracePeriodSeconds:30 秒(默认)并将 preStop 命令设置为休眠 50 秒,并且不应生成消息,因为届时容器将被终止。这按预期工作。
我的问题:
- preStop 钩子允许(推荐)什么样的进程?因为复制 15 个或更多的日志/堆转储将花费大量时间。然后这个时间将用于定义终止GracePeriodSeconds
- 当 preStop 花费的时间超过设置的 gracePeriod 时会发生什么?(如果日志很大,比如 10 个演出)
- 如果我没有任何钩子但仍然设置了 terminateGracePeriodSeconds 会发生什么?容器会一直保持到那个宽限期吗?
我发现这篇文章与此密切相关,但无法通过https://github.com/kubernetes/kubernetes/issues/24695
所有输入表示赞赏!
kubernetes - 无法创建请求超过 2Gi 内存的部署
由于内存消耗,我的部署 pod 被驱逐:
我试图通过在我的部署中添加以下内容来授予它更多内存yaml
:
但是,它未能部署:
部署只请求一个容器。
我正在使用GKE
自动缩放,默认(也是唯一)池中的节点具有 3.75 GB 内存。
通过反复试验,我发现我可以请求的最大内存是“2Gi”。为什么我不能在单个 pod 中使用完整的 3.75 节点?我需要更大内存容量的节点吗?
bash - Kubernetes 部署:preStop 不执行 aws 命令
我正在尝试在 Pod 终止之前将日志传输到 S3。为此,我们需要
将我们的容器配置为具有 AWS-CLI。我使用 postStart 钩子中的脚本成功地做到了这一点。
执行 AWS S3 命令将文件从 hostPath 传输到 S3 存储桶。差点有这个!!!
这是我的 Kube 部署(在 minikube 上运行):
安装 S3Script.sh
transferFilesToS3.sh
失败的原因:transferFilesToS3.sh 成功运行但它不执行 AWS 命令..
什么有效:我创建了测试日志文件并将 aws 命令放在 postStart 钩子(installS3Script.sh)中,它工作正常!
我想我可能会以不同的方式研究 preStop 挂钩。我读了几篇关于生命周期和preStop钩子的文章。还有一个关于使用preStop hook with grace period的相关问题。
感谢您对我可能缺少的任何建议/帮助。
kubernetes - Kubernetes PodDisruptionBudget、HorizontalPodAutoscaler 和 RollingUpdate 交互?
如果我有以下 Kubernetes 对象:
Deployment
设置rollingUpdate.maxUnavailable
为1
.PodDisruptionBudget
设置maxUnavailable
为1
.HorizontalPodAutoscaler
设置以允许自动缩放。- 集群自动扩展已启用。
如果集群负载不足并且正在扩展,会发生什么:
- 在滚动更新期间?
Pod
由于扩大规模而添加的新版本是否使用新版本Pod
? - 何时需要重新启动或更换节点?是否
PodDisruptionBudget
完全停止重新启动?HorizontalPodAutoscaler
在关闭另一个节点之前是否会增加节点数量? - 当
Pod
关联性设置为避免将Pod
来自同一节点的两个 's放置Deployment
在同一节点上时。
kubernetes - 无法扩展应用程序 - 容器创建
我正在使用这个部署模板(这就是它的名字吗?)。两个 pod 正在运行,但有两个停留在容器创建中。如果我扩展到 2 个副本,则 1 个正在运行,1 个卡在容器创建中。如何让所有 4 个 pod 都运行?
此声明在 AWS 中创建一个 PV 并附加 pvc。数据是持久的。但无法解决容器创建问题。
描述给出了这个:
宣言:
kubernetes - 何时何地使用 Kubernetes Pod 关联规则
我试图了解使用podAntiAffinity
规则来避免被安排在同一节点上是否是一种好习惯。从而在我的 Kubernetes 集群上传播'。Pod
Deployment
Pod
该文档建议避免使用podAntiAffinity
具有数百个节点的集群,这表明使用它们会对性能产生影响。
另外,如果我不使用它们,那么默认的调度程序行为难道不是 space outPod
吗?
我想它的用途也Deployment
很重要。例如,将apodAntiAffinity
用于 Redis 缓存是有意义的,但在这种情况下使用 a 不是更有意义DaemonSet
吗?另外,对 Web 服务器有什么建议Pod
?
kubernetes - Helm 等待依赖项部署在 kubernetes 上准备就绪
我正在使用 helm chart 在 kubernetes 上部署我的应用程序。但是我在堆栈中使用的服务依赖于其他服务,如何确保在依赖项建立之前不会部署 helm?
nginx - 用于 Kubernetes 部署的 ASP.NET Core 的粘性会话
我尝试将带有 Identity 的 ASP.NET Core 1 应用程序移植到 Kubernetes。登录不起作用,我收到了不同的错误,例如The anti-forgery token could not be decrypted。问题是我正在使用具有三个副本集的部署,以便进一步的请求由不知道防伪令牌的不同 pod 提供服务。使用replicas: 3
它有效。
在同一个问题中,我发现了一个粘性会话文档,这似乎可以解决我的问题。cookie 名称.AspNetCore.Identity.Application
来自我的浏览器工具。
这不起作用,无论是否在 cookie 名称处有前导点。我还尝试添加以下注释
使用 ASP.NET Core 在 Kubernetes 上允许粘性会话需要什么?
kubernetes - Kubernetes“服务器没有资源类型部署”
我是 Kubernetes 的新手。
我无法使用 kubectl 进行部署,但我可以在 kubernetes 仪表板上看到所有部署。我该如何解决这个问题?
Kubernetes 版本: 1.12
kubectl 版本: 1.13
kubectl api 版本:
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
v1
api资源:
感谢您的帮助。
------------编辑1------------
您好@EduardoBaitello,感谢您的快速回复。该问题与权限无关。
user@master:~$ kubectl auth can-i get deployments
Warning: the server doesn't have a resource type 'deployments'
yes
user@master:~$ kubectl auth can-i get deployment
Warning: the server doesn't have a resource type 'deployment'
yes
user@master:~$ kubectl auth can-i get namespaces
yes
user@master:~$ kubectl auth can-i get pods
yes
所以我认为这不是一个重复的问题。
user@master:~$ kubectl get po --namespace=kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-7c6b876df8-nk7nm 1/1 Running 2 118d
calico-node-8lt9f 1/1 Running 3 118d
calico-node-d9r9l 1/1 Running 2 118d
calico-node-ffqlj 1/1 Running 2 118d
dns-autoscaler-57ff59dd4c-c9tjv 1/1 Running 2 118d
kube-apiserver-node1 1/1 Running 3 118d
kube-controller-manager-node1 1/1 Running 6 118d
kube-dns-84467597f5-hf2fn 3/3 Running 6 118d
kube-dns-84467597f5-sttgx 3/3 Running 9 118d
kube-proxy-node1 1/1 Running 3 118d
kube-proxy-node2 1/1 Running 2 118d
kube-proxy-node3 1/1 Running 2 118d
kube-scheduler-node1 1/1 Running 6 118d
kubernetes-dashboard-5db4d9f45f-gkl6w 1/1 Running 3 118d
nginx-proxy-node2 1/1 Running 2 118d
nginx-proxy-node3 1/1 Running 2 118d
tiller-deploy-6f6fd74b68-27fqc 1/1 Running 0 16d
user@master:~$ kubectl get componentstatus
NAME STATUS MESSAGE
scheduler Healthy ok
controller-manager Healthy ok
etcd-2 Healthy {"health": "true"}
etcd-1 Healthy {"health": "true"}
etcd-0 Healthy {"health": "true"}
kubernetes - 有状态应用的 Kubernetes 应用升级策略
有许多升级策略,例如:
滚动升级
蓝绿色
A/B 测试
金丝雀
它们适用于无共享架构的应用程序。并且一些策略也适用于分布式集群应用程序,例如 ElasticSearch 的滚动升级
我只需要确认这些策略中的任何一个都不适用于有状态且不支持数据层集群的应用程序。(例如一次只有一个应用程序实例可以写入外部数据库[和持久卷])?
所以我想知道升级的唯一方法是停止并删除当前部署并部署一个新的部署,有一些停机时间?