1. 前言
上一篇文章,我们介绍了,k8s1.12之前的版本怎么使用lxcfs,k8s1.12以下版本设置LXCFS。
先说下为什么需要使用lxcfs,首先容器获取不到真实内存与cpu,假设一个宿主机是384G内存的服务器,容器java应用配置了jvm参数,配额4G,但是堆内存确是按照了384G去分,这样产生的后果就会很大了。
lxcfs的挂载有很多方式,可以podpreset,直接挂载等,下面我们来介绍下怎么直接挂载。
apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
name: lxcfs
namespace: default
labels:
app: lxcfs
spec:
selector:
matchLabels:
app: lxcfs
template:
metadata:
labels:
app: lxcfs
spec:
hostPID: true
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
containers:
- name: lxcfs
image: registry.cn-hangzhou.aliyuncs.com/denverdino/lxcfs:3.0.4
imagePullPolicy: Always
securityContext:
privileged: true
volumeMounts:
- name: cgroup
mountPath: /sys/fs/cgroup
- name: lxcfs
mountPath: /var/lib/lxcfs
mountPropagation: Bidirectional
- name: usr-local
mountPath: /usr/local
volumes:
- name: cgroup
hostPath:
path: /sys/fs/cgroup
- name: usr-local
hostPath:
path: /usr/local
- name: lxcfs
hostPath:
path: /var/lib/lxcfs
type: DirectoryOrCreate
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
"initializer.kubernetes.io/lxcfs": "true"
labels:
app: web
name: web
spec:
replicas: 1
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: httpd:2.4.32
volumeMounts:
- name: cpuinfo
mountPath: /proc/cpuinfo
- name: meminfo
mountPath: /proc/meminfo
- name: diskstats
mountPath: /proc/diskstats
- name: stat
mountPath: /proc/stat
- name: swaps
mountPath: /proc/swaps
- name: uptime
mountPath: /proc/uptime
imagePullPolicy: Always
resources:
requests:
memory: "1024Mi"
cpu: "100m"
limits:
memory: "1024Mi"
cpu: "100m"
volumes:
- name: cpuinfo
hostPath:
path: /var/lib/lxcfs/proc/cpuinfo
type: File
- name: meminfo
hostPath:
path: /var/lib/lxcfs/proc/meminfo
type: File
- name: diskstats
hostPath:
path: /var/lib/lxcfs/proc/diskstats
type: File
- name: stat
hostPath:
path: /var/lib/lxcfs/proc/stat
type: File
- name: swaps
hostPath:
path: /var/lib/lxcfs/proc/swaps
type: File
- name: uptime
hostPath:
path: /var/lib/lxcfs/proc/uptime
type: File