https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/linux
只挑我的感受使用较多/比较重要的点来讲web
Create a namespace so that the resources you create in this exercise are isolated from the rest of your cluster.redis
和Linux的namespace是相似的,作一个隔离的做用;能够将pod的资源和集群其余资源作隔离api
可使用下面方式建立namespacebash
# 建立namespace kubectl create namespace mem-example # 在pod的yaml文件里,能够配置memory和cpu的资源闲置 # limits表明上限 requests表明下限 pods/resource/memory-request-limit.yaml apiVersion: v1 kind: Pod metadata: name: memory-demo namespace: mem-example spec: containers: - name: memory-demo-ctr image: polinux/stress resources: limits: memory: "200Mi" requests: memory: "100Mi" command: ["stress"] args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"] # 能够建立pod kubectl create -f a.yaml --namespace=mem-example # 启动后,可使用下面方式查看是否启动 kubectl get pod memory-demo --namespace=mem-example # 使用yaml格式查看详细信息 kubectl get pod memory-demo --output=yaml --namespace=mem-example # 删除pod kubectl delete pod memory-demo --namespace=mem-example
还存在设置的资源限制大于Node资源的状况,以及资源超出限制的状况,具体参照官网this
另外,对CPU的限制设置方式和memory类似,不做赘述spa
能够建立一个将 /data/redis 目录挂载到 emptyDir 的pod做为实例;emptyDir是一个伴随着pod建立而创建的一个目录,即便pod重启也不会影响其数据,但当pod被delete以后,其内容就消失了。rest
实例过程以下:code
# 根据下列配置文件建立一个pod pods/storage/redis.yaml apiVersion: v1 kind: Pod metadata: name: redis spec: containers: - name: redis image: redis volumeMounts: - name: redis-storage mountPath: /data/redis volumes: - name: redis-storage emptyDir: {} # 启动pod kubectl create -f redis.yaml # 使用下列命令监控pod的变化 kubectl get pod --watch # 进入pod,在 /data/redis 目录下建立一个文件 kubect exec -it redis -- /bin/bash cd /data/redis echo Hi > hel.txt # 重启容器,再此进入以前的目录,会发现文件还在,内容没变 # 重启的方式能够是在pod中kill掉对应的redis服务的进程 # 经过 --watch 命令能够检测到对应pod的状态的变化
固然,也能够挂载到对应主机目录上,配置文件以下server
apiVersion: v1 kind: Pod metadata: name: test-pd spec: containers: - image: k8s.gcr.io/test-webserver name: test-container volumeMounts: - mountPath: /test-pd name: test-volume volumes: - name: test-volume hostPath: # directory location on host path: /data # this field is optional type: Directory
注意:
单机部署时可使用hostpath,可是集群的话不该该再使用hostpath