自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 k8s ingress-controller处理流程及原理

k8s之ingress-controller处理流程及原理

2022-05-17 14:39:09 6293 1

原创 网络常用知识

数据的发送和接收分流,分别由两根不同的传输线传送,通信双方都能在同一时刻进行发送和接收操作,无需进行方向的切换,因此没有时间延迟,适合高效率、低延迟的通信。例:PC端300Mbps的带宽,下行速率一般是37.5MB/s,如果服务端上行速率无限制,那么资源下载速度一般能达到峰值,如果服务端上行速率限制了,那就达不到了。以个人PC端为视角,在我们从服务端下载资源时,用的是PC端的下行带宽,受下行速率限制,同样用的是服务端的上行带宽,也受到上行速率限制。:顾名思义专门为某个机构或者组织使用的网络。

2024-10-29 11:16:14 803

原创 详解TCP三次握手和四次断开

详解TCP三次握手和四次断开

2024-10-28 13:08:50 161

原创 Linux功法之文件切割术

linux文件切割及合并

2024-10-23 13:33:09 470

原创 Containerd镜像构建

参考golang官网安装手册Tip:版本根据自己需求选择,如果只想做一个镜像构建环境,可选最新的几个版本安装完成后可查看go环境。

2024-03-11 18:17:48 931

原创 GO语言切片的比较操作

有两个[]map[string]interface分别是A和B,如果B中没有A中map的元素则将A中的map追加给B,如果B中有A[“ID”]的元素那么将B[“count”]+1。

2023-12-14 18:48:20 205

原创 GO语言 Base64编解码

Base64是一种常用的编码方式,可以将任意的二进制数据编码成只包含可打印字符的ASCII字符串,用于在文本协议中传输数据。Base64编码的原理是将输入数据每3个字节一组,转换为4个Base64字符。如果输入数据的长度不是3的倍数,会进行相应的填充。在Go语言中,可以使用encoding/base64包来进行Base64编码和解码操作。该包提供了StdEncoding和URLEncoding两种编码方式。

2023-12-13 10:22:11 501

原创 docker常见退出码

Docker退出码是指在容器内运行的命令或应用程序退出时返回给Docker守护进程的状态码。下面是一些常见的Docker退出码:

2023-11-14 16:16:10 1140

原创 docker安装ssh服务

最后的CMD需要注意,虽然centos基础镜像里面有CMD的指令,但是nginx Dockerfile里的CMD指令会覆盖centos的CMD,因为CMD只有最后一个生效,所以sshd的启动命令又写了一遍。构建过程输出很少,因为centos7-base:v4之前已经构建过一次了,所以没有安装依赖包的过程。

2023-11-07 16:19:53 809

原创 k8s安全机制:Pod Security Policy与Security Context

自从首次引入 PodSecurityPolicy 以来, PSP 存在一些严重的可用性问题, 只有做出断裂式的改变才能解决。PodSecurityPolicy (PSP) 在 Kubernetes 1.21 中被弃用, 在Kubernetes v1.25会被移除。替代方案Pod Security Standard(Pod安全标准)。使用 Pod 安全标准的 PSP 来获得和目前 PSP 替代策略相似的功能。

2023-11-03 18:44:43 971

原创 第七讲《一个Pod的诞生》

安装方法是参考GitLab在GitHub上的Wiki页面。③然后再把该配置动态的写到ingress-controller的pod里,该ingress-controller的pod里面运行着一个nginx服务,控制器会把生成的nginx配置写入到nginx的配置文件中,然后reload一下,使其配置生效。①ingress-contronler通过与k8s的api进行交互,动态的去感知k8s集群中ingress服务规则的变化,然后读取它,并按照定义的ingress规则,转发到k8s集群中对应的service。

2023-08-11 14:23:10 178

原创 第一讲《初识Kubernetes》

kubernetes,简称k8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是Google开源的一个容器编排引擎,使用go语言编写。它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

2023-08-11 14:19:02 142

原创 第八讲《k8s服务:Service》

Service主要用于提供网络服务,通过Service的定义,能够为客户端应用提供稳定的访问地址(域名或IP地址)和负载均衡功能,以及屏蔽后端Endpoint的变化,是kubernetes实现微服务的核心资源。Service通过命名空间、标签选择器、后端pod端口绑定指定pod。

2023-08-11 14:14:57 227

原创 第十讲《k8s配置:ConfigMap》

ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pod 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。ConfigMap将你的环境配置信息和容器镜像解耦,便于应用配置的修改。

2023-08-11 11:50:25 906

原创 Go语言简介

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。

2023-07-14 14:04:18 91

原创 第九讲《k8s负载均衡:ingress & ingress controller》

我们知道Service的表现形式为IP地址和端口号(ClusterIP:Port),即工作在TCP/IP层。而对于基于http的服务来说,不同的URL地址经常对应不同的后端服务或者虚拟服务器,这些应用层的转发机制仅通过k8s的service机制是无法实现的。k8s引入了ingress资源对象,用于将k8s集群外的客户端请求路由到集群内部的服务上,同时提供7层(HTTP和HTTPS)路由功能。k8s使用了一个Ingress策略定义和一个具体提供转发服务的Ingress Controller,两者结合,实现了

2023-07-13 20:34:29 2092

原创 Git介绍及测试

Git 是分布式版本控制和源代码管理系统,重点使用和管理代码的速度。Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。Git 是根据GNU通用公共许可证版本2的条款分发的自由/免费软件。//更多请阅读:https://www.yiibai.com/git。

2023-06-29 14:59:36 804

原创 k8s中nfs pv使用量突破容量限制问题

k8s集群里面搭建了nfs storageclass,创建了一个sts资源动态申领了pv,存储大小1Gi,但是这个pv实际使用量突破了1Gi,这是为什么??

2023-06-25 15:59:00 1937 4

原创 k8s各组件端口

10252:kube-controller-manager和kube-apiserver之间的通信端口,用于接收kube-apiserver发送的请求,包括同步cluster state、管理Pod副本数、节点状态等。10251:kube-scheduler和kube-scheduler组件之间的通信端口,用于接收来自kube-apiserver的调度请求,并将调度结果返回给kube-apiserver。10255:kubelet的只读端口,用于提供节点的健康状况以及容器运行时信息的监控数据。

2023-05-24 16:26:02 3375

原创 NetworkPolicy配置解读

所以,该网络策略示例:1.隔离 default 名字空间下 role=db 的 Pod (如果它们不是已经被隔离的话)3.(Egress 规则)允许 default 名字空间中任何带有标签 role=db 的 Pod 到 CIDR 10.0.0.0/24 下 5978 TCP 端口的连接。

2023-05-16 14:25:49 226

原创 第六讲《k8s资源介绍:Job & Cronjob》

Job 会创建一个或者多个 Pod,并将继续重试 Pod 的执行,直到指定数量的 Pod 成功终止。随着 Pod 成功结束,Job 跟踪记录成功完成的 Pod 个数。当数量达到指定的成功个数阈值时,任务(即 Job)结束。删除 Job 的操作会清除所创建的全部 Pod。挂起 Job 的操作会删除 Job 的所有活跃 Pod,直到 Job 被再次恢复执行。一种简单的使用场景下,你会创建一个 Job 对象以便以一种可靠的方式运行某 Pod 直到完成。

2023-04-07 12:27:44 355

原创 自签ssl证书

2.使用命令完成签发。

2023-03-20 11:44:53 155

原创 节点notready时pod快速驱逐

节点notready后大概5分钟才能重新调度pod,生产环境中高并发的场景下,一个副本5分钟无法提供服务,肯定会将请求压力转到其他副本,容易造成堵塞,严重的会阻断服务。如何缩短这个时间?

2023-03-09 18:42:39 1197

原创 第五讲《k8s资源介绍:Daemonset控制器》

DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时, 也会为他们新增一个 Pod。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。一种简单的用法是为每种类型的守护进程在所有的节点上都启动一个 DaemonSet。一个稍微复杂的用法是为同一种守护进程部署多个 DaemonSet;每个具有不同的标志, 并且对不同硬件类型具有不同的内存、CPU 要求。

2023-03-09 14:50:34 697

原创 第四讲《k8s资源介绍:Statefulset资源介绍 》

StatefulSet 是用来管理有状态应用的工作负载 API 对象。StatefulSet 用来管理某 Pod 集合的部署和扩缩, 并为这些 Pod 提供持久存储和持久标识符。和 Deployment 类似, StatefulSet 管理基于相同容器规约的一组 Pod。但和 Deployment 不同的是, StatefulSet 为它们的每个 Pod 维护了一个有粘性的 ID。这些 Pod 是基于相同的规约来创建的, 但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID。

2023-02-16 15:59:37 462

原创 kubeadm 搭建 k8s-1.20.13

ignore-preflight-errors=:忽略运行时的错误,例如执行时存在[ERROR NumCPU]和[ERROR Swap],忽略这两个报错就是增加–ignore-preflight-errors=NumCPU 和–ignore-preflight-errors=Swap的配置即可。默认情况下, kubelet不允许所在的主机存在交换分区,后期规划的时候,可以考虑在系统安装的时候不创建交换分区,针对已经存在交换分区的可以设置忽略禁止使用swap的限制,不然无法启动kubelet。

2023-02-13 23:20:36 803

转载 linux服务器开机启动流程

通常,Linux 都是从硬盘上引导的,其中主引导记录(MBR)中包含主引导加载程序。众所周知,硬盘上第 0 磁道第一个扇区被称为 MBR,也就是 Master Boot Record,即主引导记录,它的大小是 512 字节,存放了预启动信息、分区表信息。init进程是系统所有进程的起点,内核在完成核内引导以后,即在本线程(进程)空间内加载init程序,它的进程号是1。因为在任何基于Unix的系统(比如Linux)中,它都是第一个运行的进程,所以init进程的编号(Process ID,PID)永远是1。

2023-01-12 14:38:01 1899

原创 Linux功法之jq工具

null-input/ -n:不读取任何输入,过滤器运行使用null作为输入。-raw-output /-r :如果过滤的结果是一个字符串,那么直接写到标准输出(去掉字符串的引号)–compact-output /-c:使输出紧凑,而不是把每一个JSON对象输出在一行。–raw-input/-R:不作为JSON解析,将每一行的文本作为字符串输出到屏幕。–ascii-output /-a:指定输出格式为ASCII。.[foo] :输出指定数组元素。–slurp/-s:读入整个输入流到一个数组。

2023-01-03 16:57:43 95

原创 Helm部署Harbor

文章中用到的harbor存储是hostpath,根据harbor官网提示,需要提前创建pv和pvc,既然选择了hostpath,那么就需要将pod固定到某一个node上面,本文所有的资源副本都是1,harbor的所有pod放在同一个namespace,并且需要将namespace固定到某个node上,具体步骤见正文。

2022-12-28 19:44:55 4709 4

原创 Dockerfile制作nginx镜像

这里能看到,centos是公共基础镜像,只有204MB,centos7-base是基于公共基础镜像制作的私有基础镜像,安装了一些基础命令,有432MB,nginx-1.16.1是基于私有基础镜像制作的nginx镜像,有471MB,分层构建,联合挂载会在依赖的私有基础镜像层基础上增加nginx占用空间,在构建镜像时,尽量每个中间件或者服务都单独在私有镜像基础上构建,不要依赖太多层,不然会变得越来越大。那么可以附加一个新层即E层,E层是专门属容器A的层,是能读能写的,所以容器A就可以在E层进行读写。

2022-12-23 17:21:01 2755 1

转载 Dockerfile详解

Dockerfile 是一个用来构建镜像的文本文件。

2022-12-22 17:07:30 227

原创 第二讲《k8s资源介绍:Namespace与Pod 》

Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元,是由用户创建或部署的最小组件,也是 kubernetes 系统上运行容器化应用的资源对象。Kubernetes 集群中其他资源对象都是为 pod 这个资源对象做支撑来实现 kubernetes 管理应用服务的目的。

2022-12-01 23:25:21 1631

原创 第三讲《k8s资源介绍:控制器Deployment》

资源介绍之Deployment

2022-12-01 17:58:29 300

原创 k8s中Service ClusterIP ping不通?

在权威指南中介绍到ClusterIP是供集群内部访问的,但有天我发现我环境里的ServiceIP在服务器上是能ping通的,那这难道是书上面写的有问题?

2022-11-29 14:06:27 6145

原创 k8s搭建nfs存储类

NFS原理不再赘述,可以自行了解,在NFS StorageClass中最核心了解Provisioner,那什么是Provisioner?Provisioner是StorageClass中必须的一个资源,它是存储资源自动调配器,可以将其看作是后端存储驱动。对于NFS类型,K8S没有提供内部Provisioner,但可以使用外部的Provisioner。Provisioner必须符合存储卷的开发规范(CSI)。本文档中使用NFS提供的Provisioner。

2022-11-16 18:06:46 2321 1

原创 k8s LimitRange HPA实战

为什么把LimitRange和HPA放一块测试?因为创建HPA需要拿到pod的request值,而文章使用LimitRange实现了某个命名空间下的资源限额1.创建limit-test名称空间下的名为limit-test的LimitRange[root@k8s-master namespace]# vim limit-test.yamlapiVersion: v1kind: LimitRangemetadata: name: limit-test namespace: limit-tes

2022-05-23 11:19:18 513

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除