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