K8S local 卷的管理

概述

由于大部分DB软件都带自身的高可用,而却对IO性能要就极高,所以k8s云中使用本地硬盘最好

k8s机器信息 版本1.13

node1 10.16.16.119  master节点

node2 10.16.16.120 master节点

node3 10.16.16.68  

node4 10.16.16.68

硬盘信息

/data/disks hdd10k硬盘 node1 node2 node3 node4 均有

/data/fask-disks ssd 10k硬盘 node3 node4有

master节点全部可用于work pod

#kubectl taint nodes --all node-role.kubernetes.io/master-

网络为weave

部署hdd

git clone https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner.git

cd ./sig-storage-local-static-provisioner/

存储类的创建 (Creating a StorageClass (1.9+))

查看默认信息(注意名称)

more provisioner/deployment/kubernetes/example/default_example_storageclass.yaml

# Only create this for K8s 1.9+

apiVersion: storage.k8s.io/v1

kind: StorageClass

metadata:

  name: local-storage

provisioner: kubernetes.io/no-provisioner

volumeBindingMode: WaitForFirstConsumer

# Supported policies: Delete, Retain

reclaimPolicy: Delete


kubectl create -f provisioner/deployment/kubernetes/example/default_example_storageclass.yaml

kubectl get sc


创建daemonset服务管理local storage (Creating local persistent volumes)

生产模板

helm template ./helm/provisioner > ./provisioner/deployment/kubernetes/provisioner_generated.yaml

改变模板内容

因为priorityClassName: system-node-critical 所以namespace不能为default 变为kube-system

storageClassMap 中的信息要对应storageclass中的名字 并且 mountDir 和 hostDIR为需要监控的文件目录 本例中hdd 为/data/disks ssd为/data/fast-disks

vi ./provisioner/deployment/kubernetes/provisioner_generated.yaml

---

# Source: provisioner/templates/provisioner.yaml

apiVersion: v1

kind: ConfigMap

metadata:

  name: local-provisioner-config

  namespace: kube-system

  labels:

    heritage: "Tiller"

    release: "release-name"

    chart: provisioner-2.3.0

data:

  storageClassMap: |

    local-storage:

      hostDir: /data/disks

      mountDir: /data/disks

      blockCleanerCommand:

        - "/scripts/shred.sh"

        - "2"

      volumeMode: Filesystem

      fsType: ext4

---

apiVersion: apps/v1

kind: DaemonSet

metadata:

  name: local-volume-provisioner

  namespace: kube-system

  labels:

    app: local-volume-provisioner

    heritage: "Tiller"

    release: "release-name"

    chart: provisioner-2.3.0

spec:

  selector:

    matchLabels:

      app: local-volume-provisioner

  template:

    metadata:

      labels:

        app: local-volume-provisioner

    spec:

      serviceAccountName: local-storage-admin

      priorityClassName: system-node-critical

      containers:

        - image: "quay.io/external_storage/local-volume-provisioner:v2.3.0"

          name: provisioner

          securityContext:

            privileged: true

          env:

          - name: MY_NODE_NAME

            valueFrom:

              fieldRef:

                fieldPath: spec.nodeName

          - name: MY_NAMESPACE

            valueFrom:

              fieldRef:

                fieldPath: metadata.namespace

          - name: JOB_CONTAINER_IMAGE

            value: "quay.io/external_storage/local-volume-provisioner:v2.3.0"

          volumeMounts:

            - mountPath: /etc/provisioner/config

              name: provisioner-config

              readOnly: true

            - mountPath: /dev

              name: provisioner-dev

            - mountPath: /data/disks/

              name: local-disks

              mountPropagation: "HostToContainer"

      volumes:

        - name: provisioner-config

          configMap:

            name: local-provisioner-config

        - name: provisioner-dev

          hostPath:

            path: /dev

        - name: local-disks

          hostPath:

            path: /data/disks/

---

# Source: provisioner/templates/provisioner-service-account.yaml

apiVersion: v1

kind: ServiceAccount

metadata:

  name: local-storage-admin

  namespace: kube-system

  labels:

    heritage: "Tiller"

    release: "release-name"

    chart: provisioner-2.3.0

---

# Source: provisioner/templates/provisioner-cluster-role-binding.yaml

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

  name: local-storage-provisioner-pv-binding

  labels:

    heritage: "Tiller"

    release: "release-name"

    chart: provisioner-2.3.0

subjects:

- kind: ServiceAccount

  name: local-storage-admin

  namespace: kube-system

roleRef:

  kind: ClusterRole

  name: system:persistent-volume-provisioner

  apiGroup: rbac.authorization.k8s.io

---

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRole

metadata:

  name: local-storage-provisioner-node-clusterrole

  labels:

    heritage: "Tiller"

    release: "release-name"

    chart: provisioner-2.3.0

rules:

- apiGroups: [""]

  resources: ["nodes"]

  verbs: ["get"]

---

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

  name: local-storage-provisioner-node-binding

  labels:

    heritage: "Tiller"

    release: "release-name"

    chart: provisioner-2.3.0

subjects:

- kind: ServiceAccount

  name: local-storage-admin

  namespace: kube-system

roleRef:

  kind: ClusterRole

  name: local-storage-provisioner-node-clusterrole

  apiGroup: rbac.authorization.k8s.io

---

# Source: provisioner/templates/namespace.yaml


配置完成后

创建

kubectl create -f ./provisioner/deployment/kubernetes/provisioner_generated.yaml

观察

kubectl get -f ./provisioner/deployment/kubernetes/provisioner_generated.yaml


创建hdd 的pv

在node1-node4上依次执行,size为大小
for vol in vol1 vol2 vol3 vol4 vol5 vol6; do

    mkdir -p /data/disks/$vol

    mount -t tmpfs  -o size=100g $vol /data/disks/$vol

done

执行收我们发现pv创建完毕

kubectl get pv


查看pv的详细信息

kubectl get pv local-pv-18b04775 -o yaml


创建ssh管理 使用HELM

给node3 node4 打上ssd label标识,说明此机器上有ssd

kubectl label nodes node3 disktype.ssd=true

kubectl label nodes node4 disktype.ssd=true

kubectl get nodes --show-labels


查看helm定制信息

helm inspect ./helm/provisioner

我们需要定制的有:

vi w11.config

common:

  namespace: kube-system

  configMapName: "ssd-local-provisioner-config"

classes:

#配置挂载信息

- name: ssd-local-storage

  hostDir: /data/fast-disks

  mountDir: /data/fast-disks

  fsType: ext4

  blockCleanerCommand:

    - "/scripts/shred.sh"

    - "2"

  #是否转签storage class

  storageClass: "true"

  storageClass:

    reclaimPolicy: Delete

daemonset:

  name: "ssd-local-volume-provisioner"

  #节点亲和 只在ssd的节点上创建

  nodeSelector:

    disktype.ssd: true

  serviceAccount: ssd-local-storage-admin


helm template ./helm/provisioner -f ./w11.config

安装

helm install --name=ssd-local ./helm/provisioner -f ./w11.config

检查

helm status ssd-local


创建pv

在node3 node4 上创建

for ssd in ssd1 ssd2 ssd3 ssd4 ssd5 ssd6; do

    mkdir -p /data/fast-disks/$ssd

    mount -t tmpfs  -o size=10g $ssd /data/fast-disks/$ssd

done


检查

kubectl get pv



后续问题

IO的隔离

tmpfs的扩容

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 前言 尝到k8s甜头以后,我们就想着应用到生产环境里去,以提高业务迭代效率,可是部署在生产环境里有一个要求,就是k...
    我的橙子很甜阅读 12,714评论 0 15
  • 安装docker # apt-get install apt-transport-https ca-certifi...
    拖鞋花短裤阅读 1,184评论 0 0
  • 结婚十几年,孩子都十几岁了,夫妻之间过着过着怎么像仇人了....... 你我刚交往时,感觉对方很不错,我爱说爱笑...
    哲妈妈是燕子阅读 192评论 2 1
  • 我把几乎所有闲暇都用来等待 等待来自于被谁惦念的消息 时间总是一分一秒过去 心总是在诚惶诚恐中加重孤独 就这样,消...
    善良之心阅读 87评论 0 0
  • 渴睡人生阅读 88评论 0 0