运维开发笔记
码龄13年
关注
提问 私信
  • 博客:103,817
    问答:3,019
    106,836
    总访问量
  • 85
    原创
  • 111,316
    排名
  • 188
    粉丝
  • 0
    铁粉
  • 学习成就
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:山东省
  • 加入CSDN时间: 2012-02-24
博客简介:

云胜的笔记

查看详细资料
  • 原力等级
    成就
    当前等级
    2
    当前总分
    162
    当月
    0
个人成就
  • 获得232次点赞
  • 内容获得6次评论
  • 获得239次收藏
创作历程
  • 15篇
    2024年
  • 5篇
    2019年
  • 21篇
    2017年
  • 46篇
    2016年
  • 8篇
    2015年
  • 2篇
    2014年
  • 1篇
    2013年
成就勋章
TA的专栏
  • web工程
    11篇
  • JVM
    4篇
  • python
  • java
    14篇
  • spring
    9篇
  • linux
    4篇
  • javascript
    9篇
  • netty
    8篇
  • R语言
    2篇
  • 中间件
    2篇
  • 管理
    2篇
  • mysql
    2篇
  • 设计模式
    2篇
  • 工具使用
  • CSS
    1篇
  • dubbo
    1篇
  • 前端
    1篇
  • mongo
    2篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

347人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Sealos急速部署生产用k8s集群

sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # 永久关闭,reboot生效。这来我装的是不使用docker的版本。最大的好处是提供 99 年证书,用到我跑路是足够了。使用 Sealos,可以安装一个不包含任何组件的裸 Kubernetes 集群。因为我们在oom时应该干脆的杀死应用,而不是用swap续命,引发级联故障。# 查看,我的服务器交付时就已经关了,现在有了阿里云的镜像源,速度嗖嗖快。
原创
发布博客 2024.05.08 ·
1355 阅读 ·
8 点赞 ·
0 评论 ·
22 收藏

ansible快速入门手册

参数功能-v详细模式,如果执行成功,输出详细结果-i指定host文件路径,默认在/etc/ansible/hosts-f,-forks=NUMNUM默认是整数5,指定fork开启同步进程的个数-m指定使用的module名称,默认command模块-a指定模块的参数-k提示输入SSH密码,而不是使用基于ssh密钥认证-sudo指定使用sudo获取root权限-K提示输入sudo密码-u指定客户端的执行用户-C测试命令执行会改变什么内容,不会真正的去执行。先了解ansible的能力,深入学习靠自己。
原创
发布博客 2024.05.07 ·
978 阅读 ·
8 点赞 ·
0 评论 ·
19 收藏

kubebuilder(6)webhook

这篇笔记讲的是admission webhook。当某个特定的时间发生时,api server就会查询注册的webhook,并根据一些逻辑确认转发消息给某个webhook。一种是校验类的webhook,只读取信息,做校验判断,不会改变消息,称为validating类型。在k8s中,有3类webhook,admission webhook, authorization webhook 和 CRD conversion webhook.更重要的文件是生成的这个webhook文件,我们的业务代码是写在这里的。
原创
发布博客 2024.05.04 ·
981 阅读 ·
18 点赞 ·
0 评论 ·
11 收藏

kubebuilder(5)制作镜像&部署

使用项目自带的deploy指令,这种方式是将operator部署到本地集群中,其实和make run差不多。然后,默认的这个FROM gcr.io/distroless/static:nonroot也是下不到的。所以啊,我们只要执行下这两行就可以得到我们想要的yaml文件,然后就可以随便到别的集群执行了哦。也可修改~/.kube/config来连接其他集群,但还是太麻烦。我们需要的当然是把写的operator分发到别的集群部署。如果你的部署遇到问题,可能会遇到镜像下载不下来的问题。去别的集群,部署试试。
原创
发布博客 2024.04.29 ·
618 阅读 ·
23 点赞 ·
0 评论 ·
17 收藏

kubebuilder(4)部署&测试

现在还没有我们自定义的demo crd实例,demo nameSpace下也没有任何pod。在samples目录下有一个默认的资源描述文件tutorial_v1_demo.yaml。验证通过patch修改podNum,来增减pod的数量。controller中也会看到对应的日志。我们apply一下这个demo crd。编译运行controller。controller的日志。看到3个pod都创建出来了。我们可以使用进行部署测试。将crd部署到k8s。
原创
发布博客 2024.04.25 ·
973 阅读 ·
5 点赞 ·
0 评论 ·
16 收藏

kubebuilder(3)实现operator

在开发公司自己的paas平台,有一个需求是,用户在发版的时候,只需要在页面上填几个字段,我们在k8s中自动拉起service和deployment等资源,屏蔽k8s的底层技术对上层用户的困扰。就是对任何tutorialv1.Demo或Service、Deployment、Pod的变化,我们的Controller都会监听到,并生成事件,触发Reconcile()方法。在前面的文章我们已经了解了operator项目的基本结构。也就是我们在k8s中只要这个crd的变动,就会触发我们的Reconcile()方法。
原创
发布博客 2024.04.24 ·
908 阅读 ·
6 点赞 ·
0 评论 ·
7 收藏

kubebuilder(2)创建项目及初始化

groupversion_info是一些group和version信息,zz_generated.deepcopy.go是会自动生成的。manager是用来管理controller的控制器,代码的主要功能就是启动controller,并使多个controller共存。main.go是程序的入口,初始化了Manager,由manager来管理api和controller。这一步创建了 Go module 工程基本的模板文件,引入了必要的依赖。否则找不到,就会去下载,但是我当前工作目录下并没有bin目录。
原创
发布博客 2024.04.22 ·
349 阅读 ·
4 点赞 ·
0 评论 ·
4 收藏

kubebuilder(1)开发环境搭建

基于模板生成YAML文件,下载kustomize二进制压缩包:https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v3.8.1/kustomize_v3.8.1_linux_amd64.tar.gz。kustomize允许用户将不同环境所共享的配置放在一个文件目录下,而将其他不同的配置放在另外的目录下。这样用户就可以很容易的区分那些值是当前环境所特有的,从而在修改的时候会额外关注。首选需要一个可用的K8S集群。
原创
发布博客 2024.04.20 ·
805 阅读 ·
21 点赞 ·
0 评论 ·
11 收藏

怎么理解load_average

这通常意味着进程正在等待 I/O 操作,如从磁盘读取数据,而这个操作目前无法完成,可能是因为物理设备(如硬盘)正在忙碌,或者数据尚未准备好。可以 cat /proc/<pid>/stack, 看到进程停在内核中的哪个函数上,结合内核的代码,猜一下到底是卡在哪里。假设一台只有1个cpu的服务器,如果此时cpu在运行一个进程,并且没有其他等待运行的进程。比如同样的业务应用场景,服务器配置一样,将高速磁盘换成低速磁盘,会明显感受到应用性能的降低。还是看这张图,在进行磁盘io操作的时候,进程就会进入这个状态。
原创
发布博客 2024.04.19 ·
405 阅读 ·
3 点赞 ·
0 评论 ·
7 收藏

【开源分享】容器内的top命令工具

考虑到部署lxcfs有一定的成本,topic(top in container)的思路则是改造top命令,去适配容器,读取容器中反映真实运行情况的系统文件,从而展示正确的容器运行信息,对于用户而言成本更低。针对容器内查看系统状态的问题,目前比较通用的解决方案是通过lxcfs,将容器中相应的文件通过fuse劫持read调用,在打开时显示为容器信息,从而统一解决各种系统状态诊断工具的问题。topic 即 top in container的缩写,意味容器内的top命令。现在的cpu和内存都是容器自己的。
原创
发布博客 2024.04.18 ·
591 阅读 ·
5 点赞 ·
0 评论 ·
5 收藏

如何正确查看容器的CPU使用率

在容器里top看到的是宿主机的cpu的原因就是,top查的是/proc/stat文件,这个文件是反应整个宿主机的状态信息的,不是单个容器的。很多工具如Prometheus,k8s中的资源计算,docker的计算最终都是从这个cgroup文件来的。这些指标每个空格隔开是一项,现在就看第14项时utime,即进程的用户态部分占用的cpu时间片。每个进程的状态是放在文件里的,在/proc目录下,每个进程有自己pid命名的文件夹,进入容器中top,虽然看到的PID是容器的,但是%Cpu的统计信息却是宿主机的。
原创
发布博客 2024.04.17 ·
940 阅读 ·
23 点赞 ·
0 评论 ·
7 收藏

绝对清晰的top中cpu指标的解释

nice值正数表示低优先级进程占用的CPU时间,而steal是在虚拟化环境中使用的,表示被同一宿主机上的其他虚拟机偷走的CPU时间。在内核态中,read()系统调用会首先在文件系统层面进行操作,这一阶段的CPU使用时间会计入“sy”(即system的缩写)。当一个用户程序开始执行,它首先处于用户态,用CPU使用率中的“us”(user的缩写)来表示。不管是硬中断hi还是软中断si,它们的CPU使用时间都不会计入进程的CPU时间,因为处理这些中断的时间不属于任何特定进程。横线的上半部分时用户态。
原创
发布博客 2024.04.16 ·
440 阅读 ·
5 点赞 ·
0 评论 ·
6 收藏

容器的底层技术:CGroup和NameSpace

无论是容器,还是虚拟机,都依赖于内核中的技术,虚拟机依赖的是 KVM,容器依赖的是 namespace 和 cgroup 对进程进行隔离和资源限制。容器实现封闭的环境主要要靠两种技术,一种是看起来是隔离的技术,称为(命名空间)。在每个 namespace 中的应用看到的,都是不同的 IP 地址、用户空间、进程 ID 等。另一种是用起来是隔离的技术,称为(资源限制),即明明整台机器有很多的 CPU、内存,但是一个应用只能用其中的一部分。
原创
发布博客 2024.04.03 ·
1115 阅读 ·
30 点赞 ·
0 评论 ·
26 收藏

MongoDB内存过高问题分析解决

freelist的就是已经分配后来又用完释放的内存,存在这个freelist数据结构中,已备后面重用这些内存,我的理解就是我用完了,但是我先拿着。因为这里的配置只是wiredTiger的内存cache限额,并不是mongo的全部使用内存限额,整个mongo进程的内存占用要比这个值大,所以cacheSizeGB万万不可设置超过RAM的60%。, 多数情况下,内存使用率高的原因是 tcmalloc 未能及时将内存归还给操作系统,导致内存最大可能达到几十GB。已经用满了,这种情况可以加一下内存了。
原创
发布博客 2024.03.28 ·
1368 阅读 ·
6 点赞 ·
0 评论 ·
7 收藏

这班上的值不值

生活不只有眼前的苟且,还有诗和远方——但如果诗和远方的路费有点贵,那就先来【这班上的值不值】算一算,看看今天的班,到底值不值得你跨出这一步!输入日薪,工作时长,通勤时长,摸鱼时长,学历系数,工作环境系数,异性环境系数,同事环境系数,职业资格系数等。各位打工人,是不是每天上班遇到烦心事时,心里就想,这xx工作真是干不下去了。后来在一个群里有朋友分享了一个excel,用来测算自己这个班上的值不值。用了一晚上开发好了,发布的时候微信说要备案,好家伙,一备备了三个星期。想了一下,这玩意做个小程序这不很简单吗。
原创
发布博客 2024.03.26 ·
477 阅读 ·
3 点赞 ·
0 评论 ·
7 收藏

[易学SpringBoot]配置项的使用总结

在业务开发中,配置配置项是基本能力。本篇总结下SpringBoot中常用的配置项使用方法。1,最基础的直接使用在配置文件application.yml中写好配置。在代码中直接使用@RestControllerpublic class HelloController { @Value("${spring101.name}") private String name;...
原创
发布博客 2019.03.20 ·
350 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

老的SpringMVC项目接入shiro步骤

最近新接手了一个老项目。之前没有任何的权限管理。现在想接入shiro把权限这块管理起来。关于shiro网上的资料已经很多了,我就不重复了。 直接开搞。1,引入依赖 &lt;dependency&gt; &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt; &lt;artifactId&gt;shiro-all&lt;/ar...
原创
发布博客 2019.01.31 ·
772 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

[极简SpringCloud]1,SpringCloud简介与5大组件

springcloudspringcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflix图片来源@王璐-Louise。我是画不出来...
原创
发布博客 2019.01.20 ·
259 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[极简SpringCloud]0,关于微服务

本文是SpringCloud系列文章的第一篇。学习Springcloud要先理解微服务。明白SpringCloud是为了解决什么问题而产生的。什么是微服务?微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。 此图适用于一切高大上的名字——技术有SOA,Agile,CLOUD,DevOps等等,古代有道,气,八卦等...
原创
发布博客 2019.01.20 ·
264 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

mongo集群移除shard操作

1,登录mongos移除shard必须在mongos节点执行命令我们先查一下当前的shard开始移除: db.runCommand( {removeshard:“shard1”} )看到如图的报错。原因下面说2,先做主节点切换一个库如果开启了分片,他是有一个primary shard的。不是所有分片都是平等的。如果要移除的恰好是主分片,必须在迁移完数据后,手动执行 movePri...
原创
发布博客 2019.01.14 ·
3092 阅读 ·
3 点赞 ·
0 评论 ·
3 收藏
加载更多