微服务探索之路06篇k8s配置文件Yaml部署Redis使用Helm部署MongoDB和kafka

1 安装Redis

1.1创建配置文件redis.conf

切换到自己的目录下如本文是放在/home/ubuntu下

  • cd /home/ubuntu
  • vim redis.conf
bind 0.0.0.0
protected-mode yes
port 6379
requirepass qwe123456
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/tmp/redis.log"
databases 16
always-show-logo no
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data

1.2创建deployment配置文件

  • vim redis.yaml
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: redis-single-nodename: redis-single-node
spec:progressDeadlineSeconds: 600    #部署进度截止时间replicas: 1  #副本数revisionHistoryLimit: 10   #修订历史记录限制数selector:matchLabels:app: redis-single-node #选择器,用于选择匹配的Podstrategy:rollingUpdate:maxSurge: 1maxUnavailable: 0type: RollingUpdatetemplate:metadata:creationTimestamp: nulllabels:app: redis-single-nodespec:containers:- command:- sh- -c- redis-server "/mnt/redis.conf"env:- name: TZvalue: Asia/Shanghai- name: LANGvalue: C.UTF-8image: redis:5.0.4-alpine #Redis镜像版本imagePullPolicy: IfNotPresentlifecycle: {}livenessProbe:failureThreshold: 2    #失败的最大次数2次initialDelaySeconds: 10  #启动容器后10秒开始检测periodSeconds: 10  #每过10s检测一次successThreshold: 1  #只要成功了1次,就表示成功了。tcpSocket:port: 6379timeoutSeconds: 2name: redis-single-nodeports:- containerPort: 6379name: webprotocol: TCPreadinessProbe:failureThreshold: 2initialDelaySeconds: 10periodSeconds: 10successThreshold: 1tcpSocket:port: 6379timeoutSeconds: 2resources:   #资源限制limits:    #最多可使用的资源cpu: 100m #CPU的计量单位叫毫核(m)。一个节点的CPU核心数量乘以1000,得到的就是节点总的CPU总数量。如,一个节点有两个核,那么该节点的CPU总量为2000mmemory: 339Mirequests:  #代表容器启动请求的资源限制,分配的资源必须要达到此要求 cpu: 10mmemory: 10MisecurityContext: #上下文参数privileged: false  #特权,最高权限runAsNonRoot: false #禁止以root用户启动容器 true为禁止terminationMessagePath: /dev/termination-log #表示容器的异常终止消息的路径,默认在 /dev/termination-log 下。当容器退出时,可以通过容器的状态看到退出信息。terminationMessagePolicy: File   #默认情况容器退出时,退出信息会从文件中读取。 可以修改为 FallbackToLogsOnError 从日志中读取volumeMounts:- mountPath: /usr/share/zoneinfo/Asia/Shanghainame: tz-config- mountPath: /etc/localtimename: tz-config- mountPath: /etc/timezonename: timezone- mountPath: /mntname: redis-confreadOnly: truednsPolicy: ClusterFirstrestartPolicy: AlwaysschedulerName: default-schedulersecurityContext: {}terminationGracePeriodSeconds: 30 #在规定的terminationGracePeriodSeconds优雅时间内完成Pod优雅终止动作。默认是30秒tolerations:  #零容忍设置- effect: NoExecute #即使在节点上存在污点,也不会将Pod从该节点上删除key: node.kubernetes.io/unreachableoperator: ExiststolerationSeconds: 30- effect: NoExecutekey: node.kubernetes.io/not-readyoperator: ExiststolerationSeconds: 30volumes:- hostPath:path: /usr/share/zoneinfo/Asia/Shanghaitype: ""name: tz-config- hostPath:path: /etc/timezonetype: ""name: timezone- configMap:defaultMode: 420name: redis-confname: redis-conf
  • 1.创建k8sConfig Maps配置文件kubectl create cm redis-conf --from-file=redis.conf
  • 2.部署redis Deploymentskubectl create -f redis.yaml
  • 3.将资源公开一个新的服务service`kubectl expose deploy redis-single-node --port 6379
  • 4.对外开放6379端口找到service编辑type为NodePort,设置nodePort: 6379
  • 到此安装完成之后就可以使用可视化工具(如AnotherRedisDesktopManager)或者代码进行测试连接。

2 安装MongoDB

这里使用Helm安装所以需要先安装一下Helm,如果已经安装跳过2.1这个小步骤

2.1 安装Helm

  • 下载安装包https://github.com/helm/helm/releases,打开地址后选择适合自己的版本一般选择最新版本。本文使用的是ubuntu服务器下载命令如下
    wget https://get.helm.sh/helm-v3.12.1-linux-amd64.tar.gz,如果遇到卡主那就是需要翻墙
  • 下载完后解压tar -zxvf helm-v3.12.1-linux-amd64.tar.gz
  • 移动到安装目标mv linux-amd64/helm /usr/local/bin/helm
  • 初始化仓库helm repo add bitnami https://charts.bitnami.com/bitnami,这边如果要添加找其他仓库地址可以去Artifact Hub搜索相对于的仓库地址。

2.2开始MongoDB安装

  • 创建pvvim mongodb-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: mongodb-pv
spec:capacity:storage: 5GiaccessModes:- ReadWriteOncehostPath:path: /bitnami/mongodb/data

以上内容中/bitnami/mongodb/data是主机真实路径,小提示如果没有权限需要赋权限给uid为1001

  • 创建pvcvim mongodb-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mongodb-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 5GivolumeName: mongodb-pv
  • 创建配置文件vim mongodb-values.yaml
persistence:enabled: trueexistingClaim: "mongodb-pvc"
securityContext:privileged: truerunAsUser: 1001runAsGroup: 1001fsGroup: 1001
auth:rootPassword: "自定义密码"

创建完以上三个文件之后按顺序执行如下:

kubectl apply -f mongodb-pv.yaml

kubectl apply -f mongodb-pvc.yaml

helm install my-mongodb bitnami/mongodb -f mongodb-values.yaml --set volumePermissions.enabled=true

提示–set volumePermissions.enabled=true第③必须加这个不然pod创建的时候没有权限创建文件夹及文件会报错mkdir: cannot create directory ‘/bitnami/mongodb/data’: Permission denied

安装成功之后如果想让外网访问跟上面redis一样service编辑type为NodePort,设置nodePort: 27017,端口号自定义只要防火墙对外开放就行

卸载使用helm uninstall my-mongodb

  • 用navicat测试连接能否成功

    也可以用MongoDB Compass,;连接地址格式为:mongodb://root:密码@ip:端口
  • 修改用户密码,如下图可以使用工具直接执行命令

先切换至admin库use admin再执行修改 db.changeUserPassword("用户名","密码")

3 安装kafka

前置条件参考第2步安装MongoDB中的创建pv跟pvc命名为kafka-pv和kafka-pvc

3.1 Helm部署kafka

  • 创建配置文件kafka-values.yaml内容如下
replicaCount: 1       # kafka 副本数
#global:
#  storageClass: nfs-client  # kafka 和 zookeeper 使用的存储heapOpts: "-Xmx1024m -Xms1024m"  # kafka 启动的 jvm 参数persistence:   # kafka 每个副本的存储空间enabled: trueexistingClaim: "kafka-pvc"resources:limits:cpu: 1000mmemory: 2Girequests:cpu: 100mmemory: 100Mizookeeper:replicaCount: 1  # zookeeper 的副本数persistence:enabled: trueexistingClaim: "kafka-pvc"resources:limits:cpu: 2000mmemory: 2GiexternalAccess:enabled: true    # 开启外部访问autoDiscovery:enabled: trueservice:type: NodePort  # 开启 nodeport ports:external: 9094nodePorts:      # nodeport 对应的端口,多少个 kafka 副本对应多少个端口- 30001
#      - 30002
#      - 30003

执行部署helm install my-kafka bitnami/kafka -f kafka-values.yaml --set volumePermissions.enabled=true --set rbac.create=true

3.1 安装简洁版的管理界面kafka-console-ui

  • 创建kafka-console-ui-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: kafka-console-uinamespace: default
spec:replicas: 1selector:matchLabels:app: kafka-console-uitemplate:metadata:labels:app: kafka-console-uispec:containers:- name: kafka-console-uiresources:limits:cpu: 1000mmemory: 1Girequests:cpu: 10mmemory: 10Miimage: wdkang/kafka-console-ui:latestvolumeMounts:- mountPath: /etc/localtimereadOnly: truename: time-datavolumes:- name: time-datahostPath:path: /usr/share/zoneinfo/Asia/Shanghai
  • 创建kafka-console-ui-service.yaml
kind: Service
apiVersion: v1
metadata:labels:app: kafka-console-uiname: kafka-console-uinamespace: default
spec:ports:- port: 7766targetPort: 7766nodePort: 30088selector:app: kafka-console-uitype: NodePort
  • 执行部署命令

kubectl apply -f kafka-console-ui-service.yaml

kubectl apply -f kafka-console-ui-deploy.yaml

  • 部署完之后访问地址http://1.xx.1xx.80:30088进入界面
  • 进入运维添加集群
  • 如果是用的云服务器会发现这时候连接上了但是监听Topic的时候跑到了内网IP,需要修改configmap的配置这里都是建立在之前的k8s上所以直接进入k8s后台找到并修改如下图
  • 重启kubectl rollout restart statefulset my-kafka -n default

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7325.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生产者消费者模型

生产者消费者模型 文章目录 生产者消费者模型概念原则优点 基于BlockingQueue的生产者消费者模型BlockingQueue模拟实现单生产者消费者模型基于计算任务和存储任务的生产者消费者模型 概念 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题生产者和消费者彼…

代码随想录| 图论02●695岛屿最大面积 ●1020飞地的数量 ●130被围绕的区域 ●417太平洋大西洋水流问题

#695岛屿最大面积 模板题&#xff0c;很快.以下两种dfs&#xff0c;区别是看第一个点放不放到dfs函数中处理&#xff0c;那么初始化的area一个是1一个是0 int dir[4][2]{0,1,0,-1,1,0,-1,0};void dfs(int x, int y,int n, int m, int &area,vector<vector<bool>…

2023最新谷粒商城笔记之Sentinel概述篇(全文总共13万字,超详细)

Sentinel概述 服务流控、熔断和降级 什么是熔断 当扇出链路的某个微服务不可用或者响应时间太长时&#xff0c;会进行服务的降级&#xff0c;**进而熔断该节点微服务的调用&#xff0c;快速返回错误的响应信息。**检测到该节点微服务调用响应正常后恢复调用链路。A服务调用B服…

构建高效供应商管理体系,提升企业采购能力

随着企业采购规模的不断扩大和全球化竞争的加剧&#xff0c;供应商管理变得越来越重要。构建一个高效的供应商管理体系是企业提升采购能力、降低采购成本的关键一环。本文将重点探讨供应商管理体系的意义和作用&#xff0c;并介绍如何构建一个高效的供应商管理体系。 一、供应商…

SpringBoot复习:(1)常用的SpringApplication.run返回的容器的具体类型是哪个?

run方法中调用了createApplicationContext方法 createApplicationContext方法代码如下&#xff1a; 其中create代码如下&#xff1a; 可见返回的是AnnotationConfigServletWebServerApplicationContext()

【搜索引擎Solr】配置 Solr 以获得最佳性能

Apache Solr 是广泛使用的搜索引擎。有几个著名的平台使用 Solr&#xff1b;Netflix 和 Instagram 是其中的一些名称。我们在 tajawal 的应用程序中一直使用 Solr 和 ElasticSearch。在这篇文章中&#xff0c;我将为您提供一些关于如何编写优化的 Schema 文件的技巧。我们不会讨…

基于Python+WaveNet+CTC+Tensorflow智能语音识别与方言分类—深度学习算法应用(含全部工程源码)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境Tensorflow 环境 模块实现1. 方言分类数据下载及预处理模型构建模型训练及保存 2. 语音识别数据预处理模型构建模型训练及保存 3. 模型测试功能选择界面语言识别功能实现界面方言分类功能实现界面 系统测试1. 训…

【RabbitMQ(day1)】RabbitMQ的概述和安装

入门RabbitMQ 一、RabbitMQ的概述二、RabbitMQ的安装三、RabbitMQ管理命令行四、RabbitMQ的GUI界面 一、RabbitMQ的概述 MQ&#xff08;Message Queue&#xff09;翻译为消息队列&#xff0c;通过典型的【生产者】和【消费者】模型&#xff0c;生产者不断向消息队列中生产消息&…

【DDD】业务领域定义

文章目录 前言一、什么是业务子领域&#xff1f;二、子领域的类型有哪些&#xff1f;2.1、核心子领域2.2、通用子领域2.3、支撑子领域 三、子领域差异对比3.1、竞争优势比较3.2、复杂性比较3.3、易变性比较3.4、实时策略比较 总结 前言 一个业务领域是一个公司的主要活动领域的…

redis(11):springboot中使用redis

1 创建springboot项目 2 创建pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http:/…

vue3+Luckysheet实现表格的在线预览编辑(electron可用)

前言&#xff1a; 整理中 官方资料&#xff1a; 1、github 项目地址https://github.com/oy-paddy/luckysheet-vue-importAndExport/tree/master/https://github.com/oy-paddy/luckysheet-vue-importAndExport/tree/master/ 2、xlsx vue3 json数据导出excel_vue3导出excel_羊…

【SpirngCloud】分布式事务解决方案

【SpirngCloud】分布式事务解决方案 文章目录 【SpirngCloud】分布式事务解决方案1. 理论基础1.1 CAP 理论1.2 BASE 理论1.3 分布式事务模型 2. Seata 架构2.1 项目引入 Seata 3. 强一致性分布式事务解决方案3.1 XA 模式3.1.1 seata的XA模式3.1.2 XA 模式实践3.1.3 总结 4. 最终…

React AntDesign表批量操作时的selectedRowKeys回显选中

不知道大家是不是在AntDesign的某一个列表想要做一个批量导出或者操作的时候&#xff0c;发现只要选择下一页&#xff0c;即使选中的ids 都有记录下面&#xff0c;但是就是不回显 后来问了chatGPT&#xff0c;对方的回答是&#xff1a; 在Ant Design的DataTable组件中&#xf…

什么是框架?为什么要学框架?

一、什么是框架 框架是整个或部分应用的可重用设计&#xff0c;是可定制化的应用骨架。它可以帮开发人员简化开发过程&#xff0c;提高开发效率。 项目里有一部分代码&#xff1a;和业务无关&#xff0c;而又不得不写的代码>框架 项目里剩下的部分代码&#xff1a;实现业务…

基于C++的QT基础教程学习笔记

文章目录&#xff1a; 来源 教程社区 一&#xff1a;QT下载安装 二&#xff1a;注意事项 1.在哪里写程序 2.如何看手册 3.技巧 三&#xff1a;常用函数 1.窗口 2.相关 3.按钮 4.信号与槽函数 5.常用栏 菜单栏 工具栏 状态栏 6.铆接部件 7.文本编辑 8…

Docker Compose(九)

一、背景&#xff1a; 对于现代应用来说&#xff0c;大多数都是通过很多的微服务互相协同组成一个完整的应用。例如&#xff0c;订单管理、用户管理、品类管理、缓存服务、数据库服务等&#xff0c;他们构成了一个电商平台的应用。而部署和管理大量的服务容器是一件非常繁琐的事…

【时间复杂度】

旋转数组 题目 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 /* 解题思路&#xff1a;使用三次逆转法&#xff0c;让数组旋转k次 1. 先整体逆转 // 1,2,3,4,5,6,7 // 7 6 5 4 3 2 1 2. 逆转子数组[0, k - 1] // 5 6 7 4 3…

疲劳驾驶检测和识别2:Pytorch实现疲劳驾驶检测和识别(含疲劳驾驶数据集和训练代码)

疲劳驾驶检测和识别2&#xff1a;Pytorch实现疲劳驾驶检测和识别(含疲劳驾驶数据集和训练代码) 目录 疲劳驾驶检测和识别2&#xff1a;Pytorch实现疲劳驾驶检测和识别(含疲劳驾驶数据集和训练代码) 1.疲劳驾驶检测和识别方法 2.疲劳驾驶数据集 &#xff08;1&#xff09;疲…

MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点6:MySQL Enterprise Monitor之Query Analyzer

文章目录 MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点6&#xff1a;MySQL Enterprise Monitor之Query AnalyzerMySQL Enterprise Monitor之Query AnalyzerQuery Response Time index (QRTi)例题例题1: Query Analyzer答案与解析1 参考 【免责声明】文章仅供学习交流&#x…

vue中如何通过webpack-bundle-analyzer打包分析工具进行配置优化

vue中随着项目的不断功能迭代和开发&#xff0c;项目文件越来越多&#xff0c;项目的打包文件也越来越大。如何对打包文件进行分析优化&#xff0c;减小打包文件大小呢&#xff1f;可以通过webpack-bundle-analyzer 这个打包分析工具进行解决。 1、webpack-bundle-analyzer的安…