微服务探索之路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 Deployments
kubectl 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安装
- 创建pv
vim 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
- 创建pvc
vim 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
相关文章:

微服务探索之路06篇k8s配置文件Yaml部署Redis使用Helm部署MongoDB和kafka
1 安装Redis 1.1创建配置文件redis.conf 切换到自己的目录下如本文是放在/home/ubuntu下 cd /home/ubuntuvim 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/r…...

Microsoft todo 数据导出
文章目录 官方说明: https://support.microsoft.com/zh-cn/office/导出您的-microsoft-待办事项帐户-d286b243-affb-4db4-addc-162e16588943 由于 微软待办 会自动与 Outlook 中的任务同步,因此您可以从 Outlook 中导出所有列表和任务。 若要导出列表和…...

SSIS对SQL Server向Mysql数据转发表数据 (二)
1、在SQL Server数据库创建一个数据库表:users USE [Test1] GO/****** Object: Table [dbo].[users] Script Date: 2023/7/27 16:25:11 ******/ SET ANSI_NULLS ON GOSET QUOTED_IDENTIFIER ON GOCREATE TABLE [dbo].[users]([id] [int] IDENTITY(1,1) NOT NUL…...

【Vue3】reactive 直接赋值会导致 Vue 无法正确地监听到属性的变化,从而无法触发视图更新
在 Vue 中,响应式数据的监听和视图更新是通过 Vue 的响应式系统实现的。Vue 3 使用了 Proxy 对象来实现响应式,而 Vue 2 使用了 Object.defineProperty 来实现。 当我们使用 reactive 函数创建响应式对象时,Vue 会将对象的每个属性转换为响应…...

服务器出现丢包的原因103.88.35.x
网站主要目的是达到企业和客户紧密联系,提升客户对企业形象的认知度的效果,若租用的服务器不稳定,不仅影响网站的运行,对于网站搜索引擎优化以及用户体验等也有很大的影响。下面是服务器出现丢包不稳定的原因,一起来看…...

pytest study
pytest 测试用例的识别与运行 测试文件:test_*.py 和 *_test.py 以test开头或结尾的文件 测试用例:Test*类包含的所有 test_*的方法(测试类不能带有__init__方法), 不在class中的所有test_*的方法 def func(x):r…...

0基础学习VR全景平台篇 第73篇:VR直播-如何自定义邀请二维码(直播邀请)
自定义直播邀请二维码是自定义直播间邀请卡上显示的二维码,若上传,那么便会替换掉邀请卡上原有的二维码,原二维码为本场直播活动的二维码。 建议上传的尺寸为300px*300px,可选择开启二维码的弹出效果,开启后࿰…...

idea常用技巧/idea常见问题
idea常见问题 idea全局搜索默认只显示100条解决方案 如上图,每次搜索时只显示100条,没法展示全。因版本的不同,配置也有些差异,以下也是经过各种搜索整理出了两个方案来解决这个问题。 方案一: 快捷键Ctrl shift a…...

数据结构---并查集
目录标题 为什么会有并查集并查集的原理模拟实现并查集准备工作构造函数FindRootUnionSetCount 并查集实战题目一:省份数量题目解析题目二:等式方程的可满足性题目解析 为什么会有并查集 这里可以使用生活中的一个例子来带着大家理解并查集,…...

iOS transform rotate总结
研究了一下transform的旋转设置,调了半天还以为是旋转写错了,发现是两个不同的view对象写错了,不管怎么说,还是记录一下旋转相关的操作吧。 参数都是弧度。 以一个图片来举例。 let img UIImageView.init() img.image UIImage…...

关于axios请求java接口中的@RequestParam、@PathVariable及@RequestBody不同接参类型的用法
一、前端传json对象,后端指定接收json对象中的哪个参数。 (1)前端请求 axios({//请求方式method:post,//后端接口路径url:http://127.0.0.1:8080/api/deleteUserById,//注意这里使用的是params,该属性负责把属性名和属性值添加到url后面,一般和get配合使…...

两个点云的重叠部分查找(附open3d python 代码)
方案1 使用 compute_point_cloud_distance: 它计算源点云中的每个点到目标点云中最近点的距离。距离近的点就是重叠点,距离远的点就是非重叠点 方案2 把两个点云变成2个集合set 数据类型,然后求集合的交集就行了,交集就是重叠点…...

PDF文件转换成word软件有哪些?分享两个文件格式转换软件
在日常办公中,我们经常使用各种办公软件,其中PDF和Word是最常见的两种格式。相较于Word文件,PDF文件具有更强的兼容性和安全性,因此我们通常会选择以PDF格式分享文件。然而,如果我们需要提取PDF文件中的部分内容&#…...

redis数据库
目录 1.关系型数据库与非关系型数据库 关系型数据库 非关系型数据库 区别 2.redis 3.安装redis 1.关系型数据库与非关系型数据库 关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向…...

SpringMVC-mybatis,SQL语句中误用了desc关键字,导致报错。
17-Jul-2023 21:26:22.295 淇℃伅 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.ApplicationContext.log 1 Spring WebApplicationInitializers detected on classpath 17-Jul-2023 21:26:22.621 淇℃伅 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalin…...

adb笔记
打开拨号盘 adb shell am start -a android.intent.action.DIAL -d tel:*该命令通过dumpsys window命令获取当前设备的窗口信息,并使用grep mCurrentFocus过滤出包含"mCurrentFocus"关键字的行,从而获取当前活动窗口或应用程序的名称和包名。…...

RocketMQ教程-(5)-功能特性-顺序消息
顺序消息为 Apache RocketMQ 中的高级特性消息,本文为您介绍顺序消息的应用场景、功能原理、使用限制、使用方法和使用建议。 应用场景 在有序事件处理、撮合交易、数据实时增量同步等场景下,异构系统间需要维持强一致的状态同步,上游的事…...

Oracle TNS侦听器远程中毒(CVE-2012-1675)
Oracle TNS侦听器远程中毒(CVE-2012-1675) [oracleorac bin]$ netca -silent -responsefile /home/oracle/netca.rspParsing command line arguments:Parameter "silent" trueParameter "responsefile" /home/oracle/netca.rsp Done parsing command li…...

Springboot+Netty
目录 一、netty入门 二、启动方式 三、netty服务启动类 四、handler链 五、具体业务 六、 线程或者非spring管理的bean中获取spring管理的bean 七、效果 一、netty入门 Netty-导学_哔哩哔哩_bilibili 入门视频量比较大,最主要是了解netty的架构 netty官网&am…...

window.location.href is not a function
在使用uniapp跳转到外部页面时,使用window.location.href报错 解决: 当出现"window.location.href is not a function"的错误时,这通常是因为在某些浏览器中,window.location.href被视为只读属性,而不是函…...

STM32+FPGA的导常振动信号采集存储系统
摘 要 : 针 对 工 厂 重 要 设 备 运 输 途 中 可 能 损 坏 的情 况 , 本 文 设计 了一 套 采 用 STM32F103+F࿳…...

Eclipse memory analyzer 分析GC dump日志定位代码问题
1、问题描述: 使用命令 jstat -gcutil [pid] 查看JVM GC日志,发现生产系统频繁FullGC,大概几分钟一次,而且系统响应速度变慢很多 再使用 free -g 查看服务器内存全部占用,猜测是内存溢出了 2、导出dump日志 jmap -du…...

DSA之图(3):图的遍历
文章目录 0 图的遍历1 图的遍历方法1.1 深度优先搜索DFS1.1.1 DFS的思想1.1.2 邻接矩阵DFS的实现1.1.3 邻接矩阵DFS的代码实现1.1.4 非连通图的DFS遍历1.1.5 DFS算法效率分析 1.2 广度优先搜索BFS1.2.1 BFS的思想(连通图)1.2.2 BFS的思想(非连…...

从零开始学习 Java:简单易懂的入门指南之for循环(四)
java基础知识 流程控制语句1.1 流程控制语句分类1.2 顺序结构 判断语句:if语句2.1 if语句格式1练习1:老丈人选女婿练习2:考试奖励第一种格式的细节: 2.2 if语句格式2练习1:吃饭练习2:影院选座 2.3 if语句格…...

Android 之 http/https原理和机制
http---HyperTextTransfer Protocol 超文本传输协议 超文本-文本、HTML http的工作方式 c/b结构 如浏览器访问到服务器。 即发送请求->相应。 Url-Http报文 http://www.baidu.com/path 协议类型:http or https or websocket 服务器地址 BaseUrl 路径&…...

mybatis源码研究、搭建mybatis源码运行的环境
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、有兴趣的可以关注一手。 前提 研究源码、对我们的技术提高还是很有帮助的。简单的源码建议从mybatis入手。涉及到的设计模式不是很多。需要下载mybatis的源码和父工程依赖。注意下载的mybatis中的父工程依…...

【算法基础:搜索与图论】3.5 求最小生成树算法(PrimKruskal)
文章目录 最小生成树介绍朴素Prim算法算法思路⭐例题:858. Prim算法求最小生成树 Kruskal算法算法思路⭐例题:859. Kruskal算法求最小生成树 最小生成树介绍 最小生成树 有关树的定义 生成子图:生成子图是从原图中选取部分节点以及这些节点…...

扩展Ceph集群实现高可用
...

代码随想录 DAY45
class Solution { public: int climbStairs(int n) { vector<int>dp(n1,0); dp[0]1; for(int j0;j<n;j){ for(int i1;i<2;i){ if(j>i) dp[j]dp[j-i]; } } return dp[n]; } }; 这个题还是说想清楚 这个因为有1和2 阶的情况 所以i就是从1开始遍历 然后小于等于…...

Centos报错:[Errno 12] Cannot allocate memory
执行一个脚本刚开始正常,后面就报[Errno 12] Cannot allocate memory 如果内存不足,可能需要增加交换内存。或者可能根本没有启用交换。可以通过以下方式检查您的交换: sudo swapon -s如果它为空,则表示您没有启用任何交换。添加 1GB 交换…...