我需要一些关于 k8s 1.14 和在其上运行 gitlab 管道的问题的建议。许多作业都抛出退出代码 137 错误,我发现这意味着容器突然终止。
集群信息:
Kubernetes 版本:1.14 正在使用的云:AWS EKS 节点:C5.4xLarge
深入挖掘后,我发现了以下日志:
**kubelet: I0114 03:37:08.639450** 4721 image_gc_manager.go:300] [imageGCManager]: Disk usage on image filesystem is at 95% which is over the high threshold (85%). Trying to free 3022784921 bytes down to the low threshold (80%).
**kubelet: E0114 03:37:08.653132** 4721 kubelet.go:1282] Image garbage collection failed once. Stats initialization may not have completed yet: failed to garbage collect required amount of images. Wanted to free 3022784921 bytes, but freed 0 …Run Code Online (Sandbox Code Playgroud) 刚接触 kubernetes 并希望了解使用不同 kubernetes 对象的最佳实践,并且难以理解“Pods”和“静态 Pods”在功能上的主要区别(如果有的话)?
主要问题如下:
问题 1:如果有的话,“Pods”和“Static Pods”在功能上的主要区别是什么?
问题 2:何时选择“静态 Pod”而不是常规 Pod。
kubernetes 集群上是否可以有 NodePort Default_range + user_define_range 或者它只能是一个范围
我们可以配置为默认范围加上用户定义值的范围吗?就像默认范围是 30000-32767 一样,我们也可以有 40000-41000 的附加范围吗?
希望保留集群中其他应用程序的默认范围,但构建一个特定于我的应用程序的范围。
我已经测试了在范围之外分配端口,它显然失败了,因此范围是硬定义的,想了解是否有任何方法可以拥有两个范围或用户需要使用默认范围或自定义范围(即单个集群中的两个不同范围是不支持 )
ubuntu@cluster-master:~$ kubectl expose deployment nginx --type=NodePort --port=80 --dry-run -o yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
nodePort: 40000
selector:
run: nginx
type: NodePort
status:
loadBalancer: {}
Run Code Online (Sandbox Code Playgroud)
ubuntu@cluster-master:~$ kubectl create -f service.yaml
The Service "nginx" is invalid: spec.ports[0].nodePort: Invalid value: 40000: provided port is not in the valid range. The range …Run Code Online (Sandbox Code Playgroud) 我的其中一个豆荚有问题。它说它处于挂起状态。
如果我描述吊舱,这就是我能看到的:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal NotTriggerScaleUp 1m (x58 over 11m) cluster-autoscaler pod didn't trigger scale-up (it wouldn't fit if a new node is added): 2 node(s) didn't match node selector
Warning FailedScheduling 1m (x34 over 11m) default-scheduler 0/6 nodes are available: 6 node(s) didn't match node selector.
Run Code Online (Sandbox Code Playgroud)
如果我检查日志,那里什么都没有(它只是输出空值)。
--- 更新 --- 这是我的 pod yaml 文件
apiVersion: v1
kind: Pod
metadata:
annotations:
checksum/config: XXXXXXXXXXX
checksum/dashboards-config: XXXXXXXXXXX
creationTimestamp: 2020-02-11T10:15:15Z
generateName: grafana-654667db5b-
labels:
app: …Run Code Online (Sandbox Code Playgroud) 在 kubernetes 部署上使用 emptyDir 与 hostPath(和其他)卷类型
从官方文档中可以看出,当将emptyDir与POD一起使用时。 容器崩溃不会从节点中删除 Pod,因此,emptyDir 卷中的数据在容器崩溃时是安全的。
所以我想知道我们是否可以使用emptyDir卷类型以及(节点选择器/亲和性)使用强制POD固定到给定节点,以某种方式强制POD的内容在升级(推出)时保留? 或 hostPath (或其他卷类型)是我们在设计时需要考虑的,以确保即使在重新创建 POD 的转出过程中数据也能持久保存,而不管节点固定如何(我们可以灵活地将此应用程序固定到集群中的大型节点)