我正在运行一个自我管理的Kubernetes集群1.18.1。我已经部署了一些带有持久性卷的POD(基于longhorn项目)。现在,在做了一些测试之后,我观察到以下行为:
如果我模拟一个节点的硬关机,过了一段时间(5分钟),Kubernetes就会识别出丢失,并开始重新调度节点从死亡节点到另一个节点。
因为我的节点具有持久性卷,所以新的POD永远不会启动。原因是旧的pod(在死节点上)现在在终止状态下是持久的。
apiVersion: apps/v1
kind: Deployment
metadata:
name: db
labels:
app: db
spec:
replicas: 1
selector:
matchLabels:
app: db
strategy:
type: Recreate
template:
metadata:
labels:
app: db
spec:
containers:
- env:
- name: POSTGRES_DB
value: office
image: postgres:9.6.1
name: db
livenessProbe:
tcpSocket:
port: 5432
initialDelaySeconds: 30
periodSeconds: 10
ports:
- containerPort: 5432
resources: {}
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: dbdata
subPath: postgres
restartPolicy: Always
volumes:
- name: dbdata
persistentVolumeClaim:
claimName: office-demo-dbdata-pvc
# Storrage
---
kind: PersistentVolume
apiVersion: v1
metadata:
name: office-demo-dbdata-pv
spec:
capacity:
storage: 2Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
claimRef:
namespace: default
name: office-demo-dbdata-pvc
csi:
driver: io.rancher.longhorn
fsType: ext4
volumeHandle: office-demo-dbdata
storageClassName: longhorn-durable
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: office-demo-dbdata-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn-durable
resources:
requests:
storage: 2Gi
volumeName: "office-demo-dbdata-pv"
如果手动删除“VolumeAttachment”,挂在终止状态的吊舱可以被释放
$ kubectl delete volumeattachment csi-08d9842e.......
但在任何情况下,这都是手动操作。
5分钟是Kubernetes控制平面组件的默认驱逐时间。如果您想自定义,您可以使用基于污染的驱逐,并在部署yaml中添加以下内容
tolerations:
- key: "node.kubernetes.io/unreachable"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 60
请注意,Kubernetes会自动添加node.Kubernetes.io/not-ready
容忍度容忍度seconds=300
,除非用户提供的pod配置已经具有node.Kubernetes.io/not-ready
容忍度。同样,它为node.kubernetes.io/unreachable
添加了容忍度seconds=300
的容忍度,除非用户提供的pod配置已经为node.kubernetes.io/unreachable
提供了容忍度
我们有一个带有主节点(foo-1)和两个工作节点(foo-2和foo-3)的集群。我们有一个在foo-3上运行的吊舱(由库伯内特斯决定)。我们故意关闭foo-3作为实验。 我的期望是库伯内特斯会“看到”关闭,并在foo-2中自动重启吊舱。但是,这似乎没有发生。事实上,它似乎认为吊舱仍然在foo-3上运行。 经过五分钟的等待,库伯内特斯终于意识到集群节点已经消失,并优雅地做出回应,重启fo-2上的p
我在一个片段中遇到了一个问题,该片段从新的Google Maps API中嵌入了SuportMapFragment。当创建我的片段时,它从方法开始,在中获取一些数据。当这种情况发生时,MapFragment保持在屏幕外,而是显示进度条。 完成后,我向MapView的事件注册。然后我显示片段,这导致地图视图被显示和布局。被触发,动画开始。 多谢!
我第一次试着用docker。我需要它使selenium在服务器上运行。所以我可以把这个脚本放到任何一台服务器上,这样就可以毫不费力地工作了。但是突然间它就不起作用了,它就不起作用了。我试着在谷歌上搜索,但什么都没有。现在我在这里寻求帮助。也许我错过了什么,也许我把事情搞砸了,现在我看到了解决办法。解决方案是下载chromedriver,拒绝独立运行selenium。 开始硒 Dockerfile去
在我的应用程序中,我已经授予了的权限,并且它正在顺利地检测接收/offhook/idle统计信息。 更新 这是Logcat错误: 04-26 04:55:04.422 140 6-2091/?W/Audio_HW_Generic:没有向哈尔提供足够的数据,预期位置为1097356,只写了1097280 04-26 04:55:04.434 506 5-5065/?d/AndroidRuntime:
我在VS Code中点击了“Kill terminal”后得到了这个错误: “无法解析您的外壳环境:从生成的外壳程序中意外退出代码(代码为空,信号为 SIGSEGV)” 现在,当我点击终端时,我的VSCode会这样做:它会打开窗口大约一秒钟,然后崩溃并消失。 我已经删除了settings.json文件,因为我发现了一个类似问题的帖子。不幸的是,这没有帮助。
我想网页搜索。我使用ubuntu 20.04,python 3.8,selenium,ChromeDriver。但是为什么ChromeDriver崩溃了?版本有问题吗? 我尝试过各种Chrome选项,-没有沙盒,-禁用gpu,-禁用dev-shm使用,但没有改变。 密码 环境 错误信息 pip列表 pip冻结 我还应该尝试什么?