今天要完成的项目 k8s Task: Memory-default-namesapce 这个 Task
1 建立一个 namespace
2 给这个 namespace 设定一个预设 Memory 设定值
3 布署一个 Pod 不给定预设 Memory, 察看 Pod 启动状态确认是否设定成功
4 布署一个 Pod 只给定 Memory Limit 不设定预设 Memory 值
5 布署一个 Pod 只给定 Memory 需求, 不设定 Limit
kubectl create namespace default-mem-example
建立一个名称为 default-mem-example 的 Namespace
建一个设定档 memory-defaults.yaml
apiVersion: v1
kind: LimitRange
metadata:
namespace: default-mem-example
name: mem-limit-range
spec:
limits:
- default:
memory: 512Mi
defaultRequest:
memory: 256Mi
type: Container
建立一个对 Container 的记忆体限制
并且套用在 Namespace default-mem-example
每个 Container 限制内容为上限 512Mi
每个 Container 预设给定的 256Mi
布署指令如下:
kubectl apply -f memory-defaults.yaml
建立设定 memory-defaults-pod.yaml 如下:
apiVersion: v1
kind: Pod
metadata:
namespace: default-mem-example
name: default-mem-demo
spec:
containers:
- name: default-mem-demo-ctr
image: nginx
在 Namespace default-mem-example 建立一个 Pod
名称设定为 default-mem-demo
使用 nginx 为 image
记忆体不做设定, 测试刚刚 LimitRange 是否会自动套用上设定值
建立指令如下:
kubectl apply -f memory-defaults-pod.yaml
查询 Pod 布署结果, 验证预设定有效
kubectl get pod default-mem-demo --output=yaml --namespace=default-mem-example
结果如下:
Memory 预设配置有设定成功
清除布署过的 Pod
kubectl delete -f memory-defaults-pod.yaml
建立 memory-defaults-pod2.yaml 如下
apiVersion: v1
kind: Pod
metadata:
namespace: default-mem-example
name: default-mem-demo-2
spec:
containers:
- name: default-mem-demo-2-ctr
image: nginx
resources:
limits:
memory: "1Gi"
在 Namespace default-mem-example 建立一个 Pod
名称设定为 default-mem-demo-2
使用 nginx 为 image
记忆体只设定了 Limit 值
建立指令如下:
kubectl apply -f memory-defaults-pod2.yaml
透过查询指令
kubectl get pod default-mem-demo-2 --output=yaml --namespace=default-mem-example
结果如下:
发现由於有设定 Memory Limit 值, 所以不会套用 LimitRange 内的设定值
而是使用在 Pod 的布署档 Limit 值, 而因为 request 没设定所以直接套用 Limit 值为 Request
清除布署过的 Pod
kubectl delete -f memory-defaults-pod2.yaml
建立 memory-defaults-pod3.yaml 如下:
apiVersion: v1
kind: Pod
metadata:
namespace: default-mem-example
name: default-mem-demo-3
spec:
containers:
- name: default-mem-demo-3-ctr
image: nginx
resources:
requests:
memory: "128Mi"
在 Namespace default-mem-example 建立一个 Pod
名称设定为 default-mem-demo-3
使用 nginx 为 image
记忆体只设定了 Request 值
建立指令如下:
kubectl apply -f memory-defaults-pod3.yaml
透过查询指令
kubectl get pod default-mem-demo-3 --output=yaml --namespace=default-mem-example
结果如下:
发现由於有设定 Memory Request 值, 所以使用在 Pod 的布署档 Memory Request 值
没有设定 Memory Limit 值, 所以套用了 LimitRange 设定的 Limit 值
清除布署过的 Pod
kubectl delete -f memory-defaults-pod3.yaml
kubectl delete namespace default-mem-example
在 Namespace 设定预设值可以让 Namespace 记忆体管理更方便
首先是限制了每个 Container 必须有自己的 Memory 上限
并且控制了所有 Container 使用的 Memory 用量不会超过某个特定的值
前面布署章节有讲到, 设定档的 apiVersion 会被 cluster 执行的 kubernetes version 影响
minikube 有个可以设定执行在 cluster 的 kubernetes version 的指令如下
minikube start --kubernetes-version=$specified_version
这样一来就可以透过 minikube 执行所想测试 apiVersion 的设定档布署了
其他设定可以查询minikube 官方指令文件参考
<<: 18 程序竞赛前中後准备实例 (NCPC 2021)
Kotlin 的基本资料型态与 Java 相同,包括:Byte、Short、Int、Long、Flo...
接续昨天的运算子(Operator): 等值运算子 Java操作 运算子 等於 == 不等於 != ...
Day 4提到过往我们如何拟出一份适用符合内部及市场的隐私条款,今天还是以隐私条款为主要探讨方向,在...
上次我们在mongo shell里使用mongodb aggregate 不过 我们需要在程序里面去...
设计流程的出现,让我们可以写出一套好的流程,并且帮助团队少写多余的程序码。由於Ruby不像Javas...