From 292dae86be351b0986d21cc9913ac737520077d6 Mon Sep 17 00:00:00 2001 From: dawn-wh <2270610021@qq.com> Date: Tue, 25 Oct 2022 04:16:06 +0000 Subject: [PATCH] Add cri-rm first --- .../cri-rm/CRI-RM_on_Open_Anolis/finish.md | 1 + .../cri-rm/CRI-RM_on_Open_Anolis/index.html | 20 ++++ .../cri-rm/CRI-RM_on_Open_Anolis/start.md | 1 + .../cri-rm/CRI-RM_on_Open_Anolis/step1.md | 1 + .../cri-rm/CRI-RM_on_Open_Anolis/step2.md | 23 +++++ .../cri-rm/CRI-RM_on_Open_Anolis/step3.md | 15 +++ .../cri-rm/CRI-RM_on_Open_Anolis/step4.md | 94 +++++++++++++++++++ .../cri-rm/CRI-RM_on_Open_Anolis/step5.md | 94 +++++++++++++++++++ anolis-courses/cri-rm/index.yaml | 10 ++ 9 files changed, 259 insertions(+) create mode 100644 anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/finish.md create mode 100644 anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/index.html create mode 100644 anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/start.md create mode 100644 anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step1.md create mode 100644 anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step2.md create mode 100644 anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step3.md create mode 100644 anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step4.md create mode 100644 anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step5.md create mode 100644 anolis-courses/cri-rm/index.yaml diff --git a/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/finish.md b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/finish.md new file mode 100644 index 0000000..33ea594 --- /dev/null +++ b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/finish.md @@ -0,0 +1 @@ +恭喜您完成了本场景实验 diff --git a/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/index.html b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/index.html new file mode 100644 index 0000000..eae2a0e --- /dev/null +++ b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/index.html @@ -0,0 +1,20 @@ +name: 安装CRI-RM使用拓扑感知策略优化Redis性能 +desc: 学习在kubernetes集群中应用CRI-RM; 如果使用过程有什么问题,欢迎加入龙蜥云原生SIG钉钉群交流或者询问:钉钉客户端群组直接搜索群号44701621 +image: "Anolis OS 8.4 ANCK 64位" +live_time: "60 min" +machine: x86_64-104c192g # cpu架构-机器规格 支持多NUMA node +max_clients: 1 # 最大并发使用数,不填则默认不限制 +details: + steps: + start: start.md + finish: finish.md + - name: 部署Kubernetes + content: step1.md + - name: 在Worker节点上下载安装CRI-RM组件 + ontent: step2.md + - name: 在Worker节点上修改kubelet配置使用CRI-RM + content: step3.md + - name: 部署Redis和memtier_benchmark资源,配置anti-affinity策略,测试Redis性能 + content: step4.md + - name: 清除资源,配置affinity策略,测试Redis性能并比较结果 + content: step5.md diff --git a/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/start.md b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/start.md new file mode 100644 index 0000000..f37446d --- /dev/null +++ b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/start.md @@ -0,0 +1 @@ +本场景将提供两台配置了 Anolis OS 8 操作系统的ecs.g6.26xlarge服务器环境用于运行CRI-RM. diff --git a/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step1.md b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step1.md new file mode 100644 index 0000000..134619b --- /dev/null +++ b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step1.md @@ -0,0 +1 @@ +1、我们需要一个kubernetes集群,在这里我们使用acns一键安装一个kubernetes集群, diff --git a/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step2.md b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step2.md new file mode 100644 index 0000000..7a49c89 --- /dev/null +++ b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step2.md @@ -0,0 +1,23 @@ +## 1. Prerequisite + +#Check worker node NUMA information +[[ yum install -y numactl ]] +[[ numactl -H ]] + +## 2. Install CRI-RM + +2.1 Download CRI-RM rpm package and install +[[ wget https://github.com/intel/cri-resource-manager/releases/download/v0.7.2/cri-resource-manager-0.7.2-0.centos-7.x86_64.rpm ]] +[[ rpm -Uvh cri-resource-manager-0.7.2-0.centos-7.x86_64.rpm ]] + +2.2 setup CRI-RM configuration +[[ cp /etc/cri-resmgr/fallback.cfg.sample /etc/cri-resmgr/fallback.cfg ]] + +2.3 start the service +[[ systemctl enable cri-resource-manager ]] +[[ systemctl start cri-resource-manager ]] + +2.4 check if CRI-RM service is running +[[ systemctl status cri-resource-manager ]] + + diff --git a/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step3.md b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step3.md new file mode 100644 index 0000000..92610b0 --- /dev/null +++ b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step3.md @@ -0,0 +1,15 @@ +## Setup Kubelet to connect CRI-RM + +1. stop kubelet on worker node +[[ systemctl stop kubelet ]] + +2. modify the kubelet configuration file + +​ change /etc/systemd/system/kubelet.service.d/10-kubeadm.conf: --container-runtime- endpoint=/var/run/containerd/containerd.sock to /var/run/cri-resmgr/cri-resmgr.sock + +3. restart kubelet service +[[ systemctl daemon-reload ]] +[[ systemctl restart kubelet ]] + +4. check the kubelet service configuration has been modified and ensure the runtime endpoint is cri-resmgr.sock +[[ ps aux | grep kubelet ]] diff --git a/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step4.md b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step4.md new file mode 100644 index 0000000..b88701c --- /dev/null +++ b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step4.md @@ -0,0 +1,94 @@ +## Create resource with anti-affinity and check the performance + +1. create anti-affinity resource +[[ kubectl create redis.yaml ]] +[[ kubectl create client_aaf.yaml ]] + +redis.yaml: +``` +--- +apiVersion: v1 +kind: Service +metadata: + name: redis + labels: + app: redis +spec: + ports: + - port: 6379 + name: redis + selector: + app: redis + type: ClusterIP + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: redis +spec: + replicas: 1 + selector: + matchLabels: + app: redis + template: + metadata: + labels: + app: redis + spec: + containers: + - name: redis + image: redis + ports: + - containerPort: 6379 + name: redis + env: + - name: MASTER + value: 'true' +``` + +client.aaf.yaml: +``` +apiVersion: batch/v1 +kind: Job +metadata: + name: memtier-benchmark +spec: + template: + metadata: + annotations: + cri-resource-manager.intel.com/anti-affinity: |+ + memtier-benchmark: + - scope: + key: pod/name + operator: Matches + values: + - redis-* + match: + key: name + operator: Equals + values: + - redis + weight: 10 + spec: + containers: + - name: memtier-benchmark + image: redislabs/memtier_benchmark:latest + args: + - --server=redis.default.svc.cluster.local + - -p 6379 + - -t 8 + - -c 1 + - --test-time=60 + - --ratio=1:10 + - --data-size=1024 + - --key-pattern=S:S + - --random-data + restartPolicy: Never +``` +2. wait the client_af job resource to finish in 60s and in completed status +[[ kubectl logs pod/client_aaf-pod-name ]] + +3. clean resources +[[ kubectl delete redis.yaml ]] +[[ kubectl delete client_aaf.yam ]] diff --git a/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step5.md b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step5.md new file mode 100644 index 0000000..b42a491 --- /dev/null +++ b/anolis-courses/cri-rm/CRI-RM_on_Open_Anolis/step5.md @@ -0,0 +1,94 @@ +## Create resource with affinity and check the performance improvement + +1. create affinity resource +[[ kubectl create redis.yaml ]] +[[ kubectl create client_af.yaml ]] + +redis.yaml: +``` +--- +apiVersion: v1 +kind: Service +metadata: + name: redis + labels: + app: redis +spec: + ports: + - port: 6379 + name: redis + selector: + app: redis + type: ClusterIP + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: redis +spec: + replicas: 1 + selector: + matchLabels: + app: redis + template: + metadata: + labels: + app: redis + spec: + containers: + - name: redis + image: redis + ports: + - containerPort: 6379 + name: redis + env: + - name: MASTER + value: 'true' +``` + +client.af.yaml: +``` +apiVersion: batch/v1 +kind: Job +metadata: + name: memtier-benchmark +spec: + template: + metadata: + annotations: + cri-resource-manager.intel.com/affinity: |+ + memtier-benchmark: + - scope: + key: pod/name + operator: Matches + values: + - redis-* + match: + key: name + operator: Equals + values: + - redis + weight: 10 + spec: + containers: + - name: memtier-benchmark + image: redislabs/memtier_benchmark:latest + args: + - --server=redis.default.svc.cluster.local + - -p 6379 + - -t 8 + - -c 1 + - --test-time=60 + - --ratio=1:10 + - --data-size=1024 + - --key-pattern=S:S + - --random-data + restartPolicy: Never +``` +2. wait the client_af job resource to finish in 60s and in completed status +[[ kubectl logs pod/client_af-pod-name ]] + +3. clean resources +[[ kubectl delete redis.yaml ]] +[[ kubectl delete client_af.yam ]] diff --git a/anolis-courses/cri-rm/index.yaml b/anolis-courses/cri-rm/index.yaml new file mode 100644 index 0000000..18b24e1 --- /dev/null +++ b/anolis-courses/cri-rm/index.yaml @@ -0,0 +1,10 @@ +name: 体验龙蜥平台下英特尔CRI-RM(基于容器运行时接口的资源管理器) +desc: CRI Resource Manager is a Container Runtime Interface Proxy. It sits between clients and the actual Container Runtime implementation (containerd, cri-o, dockershim+docker), relaying requests and responses back and forth. The main purpose of the proxy is to apply hardware-aware resource allocation policies to the containers running in the system. +type: course +total_time: "60 min" +level: "beginner" +chapters: + - name: "安装CRI-RM使用拓扑感知策略优化Redis性能" + desc: "学习如何在当前kubernetes集群安装CRI-RM,并使用拓扑感知策略比较Redis读写性能的提升,如果使用过程有什么问题,欢迎加入龙蜥云原生SIG钉钉群交流或者询问:钉钉客户端群组直接搜索群号44701621" + content: "CRI-RM_on_Open_Anolis" + live_time: "30 min" -- Gitee