019.Kubernetes二进制集群存储longhorn
一 Longhorn存储部署
1.1 Longhorn概述
Longhorn是用于Kubernetes的开源分布式块存储系统。
提示:更多介绍参考:https://github.com/longhorn/longhorn。
1.2 Longhorn部署
1 [root@master01 ~]# cd /opt/k8s/work/
2 [root@master01 work]# source /root/environment.sh
3 [root@master01 work]# for all_ip in ${ALL_IPS[@]}
4 do
5 echo ">>> ${all_ip}"
6 ssh root@${all_ip} "yum -y install iscsi-initiator-utils &"
7 done
提示:本步骤操作仅需要在master01节点操作。
1 [root@master01 work]# mkdir longhorn
2 [root@master01 work]# cd longhorn/
3 [root@master01 longhorn]# wget \
4 https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml
5 [root@master01 longhorn]# vi longhorn.yaml
1 #……
2 ---
3 kind: Service
4 apiVersion: v1
5 metadata:
6 labels:
7 app: longhorn-ui
8 name: longhorn-frontend
9 namespace: longhorn-system
10 spec:
11 type: NodePort #修改为nodeport
12 selector:
13 app: longhorn-ui
14 ports:
15 - port: 80
16 targetPort: 8000
17 nodePort: 30002
18 ---
19 ……
20 kind: DaemonSet
21 ……
22 imagePullPolicy: IfNotPresent
23 ……
24 #……
1 [root@master01 longhorn]# kubectl apply -f longhorn.yaml
2 [root@master01 longhorn]# kubectl -n longhorn-system get pods -o wide
提示:若部署异常可删除重建,若出现无法删除namespace,可通过如下操作进行删除:
1 wget https://github.com/longhorn/longhorn/blob/master/uninstall/uninstall.yaml
2 rm -rf /var/lib/longhorn/
3 kubectl apply -f uninstall.yaml
4 kubectl delete -f longhorn.yaml
1.5 动态sc创建
提示:默认longhorn部署完成已创建一个sc,也可通过如下手动编写yaml创建。
1 [root@master01 longhorn]# kubectl get sc
2 NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
3 ……
4 longhorn driver.longhorn.io Delete Immediate true 15m
5 [root@master01 longhorn]# vi longhornsc.yaml
1 kind: StorageClass
2 apiVersion: storage.k8s.io/v1
3 metadata:
4 name: longhornsc
5 provisioner: rancher.io/longhorn
6 parameters:
7 numberOfReplicas: "3"
8 staleReplicaTimeout: "30"
9 fromBackup: ""
1 [root@master01 longhorn]# kubectl create -f longhornsc.yaml
1.6 测试PV及PVC
1 [root@master01 longhorn]# vi longhornpod.yaml
1 apiVersion: v1
2 kind: PersistentVolumeClaim
3 metadata:
4 name: longhorn-pvc
5 spec:
6 accessModes:
7 - ReadWriteOnce
8 storageClassName: longhorn
9 resources:
10 requests:
11 storage: 2Gi
12 ---
13 apiVersion: v1
14 kind: Pod
15 metadata:
16 name: longhorn-pod
17 namespace: default
18 spec:
19 containers:
20 - name: volume-test
21 image: nginx:stable-alpine
22 imagePullPolicy: IfNotPresent
23 volumeMounts:
24 - name: volv
25 mountPath: /data
26 ports:
27 - containerPort: 80
28 volumes:
29 - name: volv
30 persistentVolumeClaim:
31 claimName: longhorn-pvc
1 [root@master01 longhorn]# kubectl apply -f longhornpod.yaml
2 [root@master01 longhorn]# kubectl get pods -o wide
3 [root@master01 longhorn]# kubectl get pvc
4 [root@master01 longhorn]# kubectl get pv
提示:本步骤操作仅需要在master01节点操作。
1.7 Ingress暴露Longhorn
1 [root@master01 longhorn]# yum -y install httpd-tools
2 [root@master01 longhorn]# htpasswd -c auth xhy #创建用户名和密码
提示:也可通过如下命令创建:
1 [root@master01 longhorn]# kubectl -n longhorn-system create secret generic longhorn-basic-auth --from-file=auth
2
3 [root@master01 longhorn]# vi longhorn-ingress.yaml #创建ingress规则
1 apiVersion: networking.k8s.io/v1beta1
2 kind: Ingress
3 metadata:
4 name: longhorn-ingress
5 namespace: longhorn-system
6 annotations:
7 kubernetes.io/ingress.class: "nginx"
8 nginx.ingress.kubernetes.io/auth-type: basic
9 nginx.ingress.kubernetes.io/auth-secret: longhorn-basic-auth
10 nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required '
11 spec:
12 rules:
13 - host: longhorn.odocker.com
14 http:
15 paths:
16 - path: /
17 backend:
18 serviceName: longhorn-frontend
19 servicePort: 80
1 [root@master01 longhorn]# kubectl apply -f longhorn-ingress.yaml
提示:本步骤操作仅需要在master01节点操作。
1.8 确认验证
浏览器访问:longhorn.odocker.com,并输入账号和密码。
登录查看。
附加 Helm部署
附0.1 helm安装
Helm 是 Kubernetes 的软件包管理工具,此处作为建议项部署,更多helm参考《053.集群管理-Helm工具》。
1 [root@master01 ~]# cd /opt/k8s/work/
2 [root@master01 work]# mkdir /opt/k8s/work/helm
3 [root@master01 work]# source /root/environment.sh
4 [root@master01 work]# wget http://down.linuxsb.com:8888/helm-v3.2.3-linux-amd64.tar.gz
5 [root@master01 work]# tar -zxvf helm-v3.2.3-linux-amd64.tar.gz -C /opt/k8s/work/helm
6 [root@master01 work]# for master_ip in ${MASTER_IPS[@]}
7 do
8 echo ">>> ${master_ip}"
9 scp -rp /opt/k8s/work/helm/linux-amd64/helm root@${master_ip}:/opt/k8s/bin/
10 ssh root@${master_ip} "chmod +x /opt/k8s/bin/*"
11 ssh root@${master_ip} "helm version"
12 ssh root@${master_ip} "echo 'source <(helm completion bash)' >> $HOME/.bashrc"
13 done
附0.2 helm安装
1 [root@master01 work]# helm repo add brigade https://brigadecore.github.io/charts
2 [root@master01 work]# helm repo add stable https://kubernetes-charts.storage.googleapis.com/ #添加官方repo
3 [root@master01 work]# helm repo add bitnami https://charts.bitnami.com/bitnami
4 [root@master01 work]# helm repo list #查看repo
提示:本步骤操作仅需要在master01节点操作。
019.Kubernetes二进制集群存储longhorn的更多相关文章
- 5.基于二进制部署kubernetes(k8s)集群
1 kubernetes组件 1.1 Kubernetes 集群图 官网集群架构图 1.2 组件及功能 1.2.1 控制组件(Control Plane Components) 控制组件对集群做出全局 ...
- Kubernetes容器集群管理环境 - 完整部署(上篇)
Kubernetes(通常称为"K8S")是Google开源的容器集群管理系统.其设计目标是在主机集群之间提供一个能够自动化部署.可拓展.应用容器可运营的平台.Kubernetes ...
- 手动部署 kubernetes HA 集群
前言 关于kubernetes HA集群部署的方式有很多种(这里的HA指的是master apiserver的高可用),比如通过keepalived vip漂移的方式.haproxy/nginx负载均 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...
- 如何落地全球最大 Kubernetes 生产集群
鲍永成 京东基础架构部技术总监, DevOps 标准核心编写专家 前言 JDOS 就是京东数据中心操作系统,随着数据中心规模不断的扩大,我们需要对数据中心做综合的考虑.所以一开 ...
- Kubernetes使用集群联邦实现多集群管理
Kubernetes在1.3版本之后,增加了“集群联邦”Federation的功能.这个功能使企业能够快速有效的.低成本的跨区跨域.甚至在不同的云平台上运行集群.这个功能可以按照地理位置创建一个复制机 ...
- Kubernetes容器集群管理环境 - Prometheus监控篇
一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...
随机推荐
- Chisel3 - model - connect
https://mp.weixin.qq.com/s/w8NqM3GVlF0NydpsB65KPg 介绍创建模块顺序逻辑的connect命令. 0. 这里先简单对 "=" ...
- Parsing techniques: a practical guide下载
轮子哥隆重推荐的书,一行代码.一句公式都没有,但是却什么都讲明白了的:<Parsing Techniques>.第一版官网免费下载,第二版多出来的东西你们用不上不用看了.全书只讲parsi ...
- Java实现 LeetCode 453 最小移动次数使数组元素相等
453. 最小移动次数使数组元素相等 给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数.每次移动可以使 n - 1 个元素增加 1. 示例: 输入: [1,2,3] 输出: 3 ...
- Java实现 蓝桥杯VIP 算法训练求先序排列
问题描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入格式 两行,每行一个字符串,分别表示中序和后序排列 输出格式 一个字符串,表示所 ...
- Java实现 LeetCode 236 二叉树的最近公共祖先
236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x ...
- Java实现 蓝桥杯VIP 算法提高 质因数2
算法提高 质因数2 时间限制:1.0s 内存限制:256.0MB 将一个正整数N(1<N<32768)分解质因数,把质因数按从小到大的顺序输出.最后输出质因数的个数. 输入格式 一行,一个 ...
- CSDN账号被冻结了怎么办
CSDN可能因为你的博客里有一些网站链接给你判断为恶意推广广告,冻结, 或者和我一样,在评论区刷屏被冻结, 联系客服即可,向客服提供你的绑定邮箱或绑定手机号,或博客id,客服会给你解冻 PS: 找不到 ...
- java实现第四届蓝桥杯剪格子
剪格子 题目描述 如图p1.jpg所示,3 x 3 的格子中填写了一些整数. 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60. 本题的要求就是请你编程判定:对给定的m x n 的格子 ...
- InnoDB存储引擎的事务
事务的任务是保证一系列更新语句的原子性,锁的任务是解决并发访问可能导致的数据不一致问题.如果事务与事务之间存在并发操作,此时可以通过隔离级别实现事务的隔离性,从而实现数据的并发访问. 1 原子性(At ...
- make & make install(make altinstall) 因动态库gcc版本问题
cc1: error: unrecognized command line option “-flot” 解决方式是:找到 configure之后的Makefile, 删除 -flot 原因是gcc ...