问题标签 [kubernetes-health-check]
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 - 在服务内重新运行 Pod 时,K8S 是否会通过健康检查自动确保 Pod 可用性?
假设我有一个带有 2 个 pod(副本)的服务。每个 pod 只包含一个容器,它是war
在 Tomcat 上运行的 REST API。而且,每个 pod 都有imagePullPolicy: Always
,所以当有新版本的镜像时,它会拉取它。
显然,当容器启动时,Tomcat 需要几秒钟才能启动。这将在两个容器中发生。
是否有可能在特定时间我的 REST API 不可用?我的意思是,是否有可能两个 Tomcat 都还没有启动并且请求失败?
K8S 是否在尝试重新运行另一个 Pod 之前对 Pod 使用健康检查?如果是这样,我可以针对我的 REST API 端点执行 http 健康检查。这是正确的方法吗?
提前致谢。任何建议将被认真考虑。
kubernetes - 如何使用令牌创建 Kubernetes ServiceAccount?
我正在尝试将 --admission-control=ServiceAccount 添加到我的 kube-apiserver 调用中,以便能够托管来自 kubernetes-ui 和 apiserver 的 https 连接。我在控制器管理器上得到这个。
Mar 25 18:39:51 master kube-controller-manager[1388]: I0325 18:39:51.425556 1388 event.go:211] Event(api.ObjectReference{Kind:"ReplicaSet", Namespace:"default", Name:"nginx4-3088538572", UID:"aefae1a6-f2b8-11e5-8269-0401bd450a01", APIVersion:"extensions", ResourceVersion:"252", FieldPath:""}): type: 'Warning' reason: 'FailedCreate' Error creating: pods "nginx4-3088538572-" is forbidden: no API token found for service account default/default, retry after the token is automatically created and added to the service account
现在我的默认服务帐户看起来像这样
我正在使用令牌对 kubernetes 进行身份验证,并且整个集群在 https 上运行。
控制器经理
API服务器
.kube/配置
更新 1
根据@Jordan Liggitt 的回答,我在 apiserver 调用中添加了 --service-account-key-file=/home/core/ssl/kubelet-key.pem 但现在我得到了
docker - 尝试上传我的 kubernetes pod 时出现错误状态
我的 controller.yaml 看起来像这样:
和如下所示的服务 yaml:
我有一个 kubernetes 集群,所以我想使用这个 rc 将我的 docker 上传到集群,我这样做了:
但是当我运行命令时,我得到了一些奇怪的状态kubectl get pods
:
这是什么??在状态为ErrImagePull
...之前
请帮忙 :)
谢谢!
amazon-web-services - 为什么我无法使用“kubectl get services”查看我所有的 kubernetes 服务
我有一个包含所有 kubernetes pod 文件夹的存储库,在每个文件夹中我有 2 个文件,假设我有一个文件夹名称“MyApp”,所以在这个文件夹中我有:
controller.yaml
看起来像这样:(这是我的 rc)
service.yaml
看起来像这样:
现在,我跑来kubectl get services
列出我所有的服务,我得到:
为什么我没有获得我拥有的所有服务?
amazon-web-services - 处于 CrashLoopBackOff 状态的 Kubernetes 复制控制器
我执行了以下步骤。
使用以下配置文件创建了复制控制器:
运行命令:
这是输出:
怎么了?
如何找出控制器无法正常启动的原因?
更新。
我试图将简单的“fsharp/fsharp:latest”图像更改为另一个图像,其中将有服务监听端口,这就是我想要使用容器的方式。
该映像名为“username/someservice:mytag”,并且有一个服务监听端口 3000。
我将服务运行为:
当我查看日志时,我看到:
因此,即使进程不应该退出,容器也处于相同的状态:
我还尝试使用 -i 标志从我的映像运行容器,以使容器不退出,但 kubectl 似乎无法识别 -i 标志:\
有什么想法吗?
kubernetes - 在缩减 Kubernetes 上的 pod 之前等待干净关闭
我需要减少副本控制器中的 pod 数量。但是,我需要一个干净的按比例缩小:
- 停止在将缩小的 Pod 上发送负载
- 等待 pod 完成处理负载
- 删除 pod
我不希望一个 pod 在它还在做事的时候被删除。有没有办法用 Kubernetes 做到这一点?
deployment - Kubernetes 部署会导致停机
运行部署时,我会停机。请求在可变时间(20-40 秒)后失败。
当 preStop 发送 SIGUSR1,等待 31 秒,然后发送 SIGTERM 时,入口容器的就绪检查失败。在该时间范围内,应从服务中删除 pod,因为就绪检查设置为在 2 次失败尝试(以 5 秒为间隔)后失败。
如何查看从服务中添加和删除 pod 的事件以找出导致此问题的原因?
围绕准备就绪的事件会自行检查吗?
我使用 Google Container Engine 1.2.2 版并使用 GCE 的网络负载均衡器。
服务:
部署:
docker - 如何手动安装 kubernetes dns 插件(skydns、kube2sky 麻烦)
我按照https://coreos.com/kubernetes/docs/latest/deploy-addons.html上的说明通过创建 kubedns rc 和服务来手动安装 KubeDNS。
yaml如下:
然而,在创建资源检查状态返回后:
我已将其缩小为 etcd 错误:
我不知道为什么这不起作用,并且我无法执行到容器中以手动创建文件夹,因为它不会保持运行。
更新:
用过的:
从Do not have permission to write to emptyDir绕过 etcd 错误,但我仍然无法启动 dns 服务,下面是 kube-dns pod 中容器的相关日志
skydns 的日志:
kube2sky 的日志:
healthz的日志:
etcd 的日志:
更新:
能够通过在上述 dns-addon.yml 中的 env 变量中对 master 进行硬编码来领先一步
现在我得到:
更新 好的,我能够使用 fqdn 即 http:// :8080 而不是 :8080 来完成这项工作。
我可以使用busybox pod并运行:
这可行,但是我注意到一些奇怪的行为,只要我从 pod 运行 dns 就可以运行:
我收到上述错误,但是在 kube dns 已调度到的节点上运行相同的命令它可以工作:
从集群中的另一个节点进行测试,我得到与主节点相同的错误:
什么可能是错的?
kubernetes - 有没有监控k8s状态的脚本?
如果在生产系统上使用,k8s 相关服务有时可能会宕机。是否提供了可以监视和重新启动服务的脚本,或者我需要开发我的脚本并将它们添加到 crontab。
containers - Kubernetes slave 行为不一致,很少有 slave 不出现
我在 AWS 中有一个 kubernetes 主设置,由 ELB 平衡。我使用 terraform 创建了 5-6 个实例,并将其配置为 kube 从站并将 kubelet 指向 ELB。当我运行 kubectl get nodes 时,只显示 3 或 4 个实例。看起来从主节点注册失败的节点很少,但所有节点都是相同的。
它的随机行为,有时所有的奴隶都表现得很好。