K8S自己动手系列 - 2.5 - StatefulSet & Grafana
前言
前面的实验,我们通过Deployment+PV/PVC,部署了mysql,wordpress,并通过NodePort类型的Service对服务进行暴露,使集群外可以访问,但是当replicas大于1时,Deployment产生的多个POD是共享一个PV的,这样在性能及业务上都有可能是有问题的,这种情况我们就应该考虑StatefulSet,在官网上StatefulSet用了Mysql的主从作为例子,但是笔者认为Mysql主从本身与Mysql的知识有关,并且例子更偏向于实践拓扑结构的有状态服务,所以后面的实验,我基于目前比较流行,也比较简单的监控系统Grafana+Prometheus来进行实验。
场景
使用StatefulSet部署grafana,使用PV & PVC持久化保存数据。
本文实验所有的源码保存在:
https://github.com/zrbcool/blog-public/tree/master/k8s-hands-on/lab08
动手
准备PV & PVC
kubectl apply -f 01-1-grafana-pvc.yaml persistentvolumeclaim/grafana-pv-claim created mkdir -p /data/pv/grafana kubectl apply -f 01-2-grafana-pv.yaml persistentvolume/grafana-pv-volume created kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE grafana-pv-claim Bound grafana-pv-volume 2Gi RWX 24m
如果此处不明白或者有问题,请参考前面讲过的K8S自己动手系列 - 2.3 - PV & PVC
用StatefulSet创建Grafana,使用PVC作为持久化存储
kubectl apply -f 01-3-grafana-statefulset.yaml statefulset.apps/monitor-grafana created kubectl get pods NAME READY STATUS RESTARTS AGE monitor-grafana-0 0/1 CrashLoopBackOff 3 2m2s kubectl logs monitor-grafana-0 GF_PATHS_DATA='/var/lib/grafana' is not writable. You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migration-from-a-previous-version-of-the-docker-container-to-5-1-or-later mkdir: cannot create directory '/var/lib/grafana/plugins': Permission denied
启动失败了,提示也很清楚是权限问题,也给了解决方案
# 参考文章 http://docs.grafana.org/installation/docker/#migration-from-a-previous-version-of-the-docker-container-to-5-1-or-later # 修改文件权限 chown -R 472:472 /data/pv/grafana # 增加POD配置(我们的01-3-grafana-statefulset.yaml已经加好了) securityContext: runAsGroup: 472 runAsUser: 472 fsGroup: 472
执行上述操作后仍然是不行,最后经过排查发现,POD被调度到worker02节点上了,因为我们的PV使用的Local类型,worker02上并没有这个目录,所以无法创建成功,参考前面的K8S自己动手系列 - 1.3 - Taint & Affinity增加nodeSelector指定节点调度
... template: metadata: labels: app: monitor type: grafana spec: nodeSelector: kubernetes.io/hostname: worker01 #这个请根据需要修改到你指定的节点上,或者你使用其他的持久化存储方式,则可能没有我这个问题,比如nfs
成功!
kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES monitor-grafana-0 1/1 Running 0 3m19s 10.244.0.93 worker01 <none> <none>
最后生效的yaml文件如下:
apiVersion: apps/v1 kind: StatefulSet metadata: labels: app: monitor type: grafana name: monitor-grafana spec: replicas: 1 selector: matchLabels: app: monitor type: grafana serviceName: grafana template: metadata: labels: app: monitor type: grafana spec: nodeSelector: kubernetes.io/hostname: worker01 #保证调度到我们创建了本地目录的主机上 containers: - name: grafana image: grafana/grafana:latest imagePullPolicy: IfNotPresent ports: - containerPort: 3000 name: grafana volumeMounts: - name: grafana-pv-storage mountPath: /var/lib/grafana securityContext: runAsGroup: 472 runAsUser: 472 fsGroup: 472 volumes: - name: grafana-pv-storage persistentVolumeClaim: claimName: grafana-pv-claim
使用Service暴露grafana,使可以在集群外访问
kubectl apply -f 01-4-grafana-svc.yaml service/grafana-svc created
如果这块有疑问,可以回顾K8S自己动手系列 - 2.4 - Service
现在我们的grafana可以访问了,如图所示:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
搭建一个简单的直播网站
我是一个比较爱看直播的人,经常空闲的时候会看一看LOL、吃鸡的直播。正好最近在研究阿里云的视频直播服务,突发奇想,自己来搭建一个简单的直播平台!主要会用到的东西有:视频直播、ECS、OBS、阿里播放器。官网链接:视频直播——https://www.aliyun.com/product/liveECS——https://www.aliyun.com/product/ecsOBS——https://obsproject.com/download阿里播放器——https://player.alicdn.com/aliplayer/setting/setting.html注:使用视频直播,需要有一个已备案的域名 域名配置 首先我们开通阿里云的视频直播 在直播控制台-域名管理,添加推流、播流域名这里我选择的直播中心是:华南1,CDN加速区域是:中
- 下一篇
阿里云企业版安骑士-云服务器安全比不可少的安全软件
一句话解释什么是安骑士安骑士是一款安装在ECS上的安全软件(支持非阿里云) 实践目标充分了解安骑士产品的功能,可使用安骑士进行日常的安全管理,“看见”并“解决”安全问题,提高工作效率学会安全管理技能:漏洞检测和处置方法、风险配置修复、入侵事件排查、进程端口账号等资产管理 四个产品功能1.着重在漏洞检测和协助漏洞修复,加固好服务器。2.入侵检测系统(云查杀),即使被入侵也可快速发现和止血。3.资产管理,进程、端口、账号、软件版本的清点。4.主机日志检索,记录主机所有内容。 更多安骑士功能介绍参考:帮助中心-安骑士>视频专区>安骑士功能介绍 为什么要做好服务器安全?为什么服务器安全着重在漏洞管理?1.所有的黑客攻击最终都会落在主机上,我们的数据、程序都是运行在主机上,只有主机才能最近感知到黑客的动作,安全讲究纵深防御,主机侧安全是必不可少的。2.云服务器跟传统PC不同,PC会主动去访问互联网,一不小心上了挂马网站和运行了恶意软件,所以需要的是防病毒产品。而云服务器ECS不同,它只有可能“被”互联网来访问,相当于一个黑盒子,那么黑客要入侵,必须要找到“漏洞”才行,所以安骑士着重帮...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS关闭SELinux安全模块
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Docker快速安装Oracle11G,搭建oracle11g学习环境