04 2023 档案
摘要:
本篇要分享的内容 这里假设你已经完成了kube-prometheus的部署。 假设有个需求:需要将node-exporter的指标暴露到k8s集群外部。如果要搞清楚这个问题,并实现这个需求,需要对通过operator部署的资源、内部链路有一定的了解才可以。所以,本篇要做这方面的一个分享。 关于在ma
阅读全文

摘要:
本篇使用的goweb demo,页面很简单,功能也是很简单,写代码不是本篇的重点,重点是先体验一下整个流程:开发环境准备、写代码、提交到仓库、拉取代码构建并打包镜像、推送到镜像仓库,部署到K8S。 本篇的分享分为上篇和下篇,上篇是手动,计划在下篇再讲自动。只有手动体验过,才能更能深入的理解里面的流程
阅读全文

摘要:
Kubernetes Operator是什么 K8S Operator这个东西不好解释,这么说吧,比如有一个应用程序,并且想要将其部署到 k8s 上,并且希望能够实现自动化运维和可扩展性,那么就可以考虑使用 K8S Operator 的框架,将应用程序的管理逻辑抽象为 k8s 资源,并编写自定义 O
阅读全文

摘要:
什么是协程 在 Python 中,协程(Coroutine)是一种轻量级的并发编程方式,可以通过协作式多任务来实现高效的并发执行。协程是一种特殊的生成器函数,通过使用 yield 关键字来挂起函数的执行,并保存当前的执行状态。协程的执行可以通过 send 方法来恢复,并在下一次挂起时返回一个值。 在
阅读全文

摘要:
大家都知道,Go是一种支持并发编程的编程语言,但并发编程也是比较复杂和容易出错的。比如本篇分享的问题:竞态条件和数据竞争的问题。 会发生竞态条件和数据竞争的场景有哪些 多个 goroutine 对同一变量进行读写操作。例如,多个 goroutine 同时对一个计数器变量进行增加操作。 多个 goro
阅读全文

摘要:
SELinux是什么鬼 SELinux(Security-Enhanced Linux)是一个安全模块,内置于 Linux 内核中,为 Linux 系统提供了一个额外的安全层。它通过实施强制访问控制(MAC)来限制进程的访问权限,可以帮助防止恶意软件和攻击者对系统的攻击。与传统的基于用户/组的访问控
阅读全文

摘要:
支持的客户端库 可参考:https://kubernetes.io/zh-cn/docs/reference/using-api/client-libraries/ 身份验证插件 在 K8S API 客户端库golang client-go 中,Auth plugins(身份验证插件)是用于处理 K
阅读全文

摘要:
K8S API概述 可参考:https://kubernetes.io/zh-cn/docs/concepts/overview/kubernetes-api/ Kubernetes API是Kubernetes控制平面的核心。它是一组REST API,用于与Kubernetes中的各种对象进行交互
阅读全文

摘要:
环境准备 ceph官方文档:https://docs.ceph.com/en/latest/ 本次搭建用到的测试机器,规划如下: | 主机名 | IP | 数据盘 | | | | | | ceph-node01 | 192.168.11.13 | 5块1TB容量硬盘 | | ceph-node02
阅读全文

摘要:
迭代器&生成器 在 Python 中,迭代器和生成器都是用来遍历数据集合的工具,可以按需逐个生成或返回数据,从而避免一次性加载整个数据集合所带来的性能问题和内存消耗问题。 具体来说,迭代器是一个包含 iter() 和 next() 方法的对象,它通过 next() 方法依次返回数据集合中的每个元素,
阅读全文

摘要:
关于指针未初始化、指针越界、指针悬挂 指针未初始化可能会导致程序崩溃或者出现奇怪的行为,看看下面这个例子: package main import "fmt" type MyStruct struct { value string } func (s *MyStruct) SetValue(val
阅读全文

摘要:
3种特殊权限 在Linux系统中,有3种特殊权限,它们分别是Setuid(SUID)、Setgid(SGID) 和 Sticky Bit。 Setuid权限:通过Setuid权限,普通用户可以在执行某些特定程序时,拥有与程序所有者相同的权限。也就是说,该程序在执行时,会自动获取其所有者的权限,而不是
阅读全文

摘要:
K8S后端存储:NFS 大家都知道,NFS是一种基于网络的文件系统协议,允许在不同的机器之间共享文件系统资源。在K8S中,可以使用NFS作为后端存储,以提供持久化存储和共享存储卷。但是否适合在生产环境使用NFS作为后端存储,这取决于具体的应用程序和使用场景。如果应用程序对性能和可靠性要求比较高,可能
阅读全文

摘要:
golang的接口是什么 在 Golang 中,接口是一种类型,它是由一组方法签名组成的抽象集合。接口定义了对象应该具有的行为,而不关心对象的具体实现。实现接口的对象必须实现接口定义的所有方法,这样才能称为该接口的实现。 什么情况下要用接口 定义通用的方法:接口可以定义一组通用的方法,以便在不同类型
阅读全文

摘要:
Block Devices(块存储) 在 Rook 中,块存储有两种存储类型:副本存储和纠删码存储。这两种存储类型都可以在 Kubernetes 集群中使用,可以通过在 CephBlockPool 中指定不同的存储类别来实现。 「副本存储:」 是一种基于副本的存储方式,其中数据被复制到多个节点上,以
阅读全文

摘要:
写在开篇 “ 上一次,我发了一篇:《理论篇:让我们一起鲁克鲁克——rook(开源存储编排)》。这次,来一篇实战,使用rook在k8s上把ceph集群搞起来。后续,还会陆续分享如何对接k8s(作为k8s的后端存储)、以及分享一些在生产上的实践经验。 ” 环境规划 | 主机名 | IP | 角色 | 数
阅读全文

摘要:
听说是鸡肋 ❝ 一直以来,关于Python的多线程和多进程是否是鸡肋的争议一直存在,今晚抽空谈谈我的看法,以下是我的观点: ❞ 对于多线程: Python 的多线程库 threading 在某些情况下确实是鸡肋的,这是因为 Python 的全局解释器锁(Global Interpreter Lock
阅读全文
