自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 docker buildx: #0 1.147 .buildkit_qemu_emulator: /bin/sh: Invalid ELF image for this architecture

.buildkit_qemu_emulator: /bin/sh: Invalid ELF image for this architecture

2024-02-20 14:13:58 528

原创 最快的ebpf开发环境搭建方式

ebpf开发环境

2023-11-22 17:34:38 384

原创 查看k8s secret/tls证书过期时间

将ca.crt和tls.crt的值分别拷贝到文件中,文件名为ca.crt和tls.crt,然后使用base64解码(ca.crt同)

2023-06-07 17:10:08 722

原创 kubebuilder注释

第一个参数与名称之间用冒号隔开,而后面的参数使用逗号隔开。matchPolicy : 定义"规则"列表用于如何匹配传入请求, 允许的值为"Exact"(仅当它与指定规则完全匹配时才匹配)或"Equivalent"(如果请求修改了规则中列出的资源,则匹配请求,即使是通过另一个 API 组或版本)覆盖该字段的类型(默认为 Go 类型的等价物), 这通常必须与自定义序列化配对, 例如,metav1.Time 字段将被标记为"type: string"和"format: date-time"

2023-03-09 14:29:40 1196 1

原创 k8s节点状态管理源码分析

节点有两种对象来表示其存活状态, node.status和每一个node所对应的lease对象, 这两种对象都由kubelet来更新:当节点状态发生变化,或者没有变化但是超过了配置的时间间隔,kubelet 会更新.status。.status更新的默认间隔为 5 分钟(比节点不可达事件的 40 秒默认超时时间长很多)。kubelet会创建并每 10 秒(默认更新间隔时间)更新 Lease 对象。Lease 的更新独立于 Node 的.status更新而发生。

2023-03-07 09:55:31 1127 1

原创 ipvs之ipvs0网卡

kubernetes将kube-proxy的代理模式设置为ipvs模式后会在每个创建一个ipvs0的网卡,并会在每个节点的ipvs0网卡上配置所有service的ip,等于每个节点都配置了很多相同的ip,为什么不会出现ip冲突?集群内部访问service ip如何访问?集群外部访问service ip又是如何访问?ipvs0网卡是一块dummy类型的虚拟网卡,可以手动添加,其中ipvs0只是一个名称,只是为了演示,所以和ipvs创建的网卡名一致:然后使用ip a查看该网卡然后给该网卡配上一个ip

2022-06-24 13:53:17 2466 5

原创 golang泛型:generics

golang在没有泛型的时候,如果我们要计算一个map的所有value之和,比如该map的key为string类型,value是int64类型,我们需要定义以下函数:同时我们又有另外一个map也需要计算所有value之和,该map的key也为string类型,但是value是float64类型,所以我们还需要定义另外一个函数:然后在分别调用两个函数执行计算操作1. 先定义两个map2. 调用函数可以发现SumInts和SumFloats除了接收参数不同之外内部逻辑完全相同,如果有更多

2022-06-06 15:07:43 680

原创 构建多架构镜像

搭建本地镜像仓库docker run -d --name registry -p 5000:5000 registry配置域名解析修改/etc/hosts172.20.16.185 local-registry设置可信仓库本地为http,需要配置# cat /etc/docker/daemon.json { "insecure-registries" : ["local-registry:5000"]}从dockerhub拉取测试镜像因本地为x86环

2022-05-07 11:03:00 425

原创 veth pair实战

veth pair作用veth pair用于同一主机不同命名空间通信,其原理为向veth pair设备的一端输入数据,数据通过内核协议栈后从veth pair的另一端出来netns帮助# ip netns helpUsage: ip netns list ip netns add NAME ip netns attach NAME PID ip netns set NAME NETNSID ip [-all] netns delete [NAME]...

2022-04-29 17:01:32 1218

原创 Error: looks like “https://helm.min.io/“ is not a valid chart repository or cannot be reached

直接添加repo报错如下# helm repo add minio https://helm.min.io/Error: looks like "https://helm.min.io/" is not a valid chart repository or cannot be reached: Get "https://helm.min.io/index.yaml": x509: certificate is not valid for any names, but wanted to matc

2022-02-16 16:03:35 4189 2

原创 socket转发

sudo socat TCP4-LISTEN:80,fork TCP4:172.20.187.63:80

2022-02-14 17:54:36 654

原创 helm安装minio

老版本(建议使用新版本)https://github.com/minio/charts安装# helm repo remove minio# helm repo add minio https://helm.min.io/# helm install --set accessKey=admin,secretKey=12341234,mode=distributed,replicas=4,service.type=NodePort,persistence.storageClass=nfs-s

2022-02-12 14:29:59 1254

原创 kubernetes故障模拟:ChaosMesh && litmus使用

混沌工程介绍2008年8月, Netflix 主要数据库的故障导致了三天的停机, DVD 租赁业务中断,多个国家的大量用户受此影响。之后 Netflix 工程师着手寻找替代架构,并在2011年起,逐步将系统迁移到 AWS 上,运行基于微服务的新型分布式架构。这种架构消除了单点故障,但也引入了新的复杂性类型,需要更加可靠和容错的系统。为此, Netflix 工程师创建了 Chaos Monkey ,会随机终止在生产环境中运行的 EC2 实例。工程师可以快速了解他们正在构建的服务是否健壮,有足够的弹性,可以

2022-01-25 15:22:54 2525

原创 测试工具jmeter使用

jmeter介绍Apache JMeter™ 应用程序是开源软件,是一个 100% 纯 Java 应用程序,旨在负载测试功能行为和测量性能。 它最初设计用于测试 Web 应用程序,但后来扩展到其他测试功能。Apache JMeter 可用于测试静态和动态资源、Web 动态应用程序的性能。它可用于模拟服务器、服务器组、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。Apache JMeter 功能包括: 1. 能够加载和性能测试许多不同的应用程序/服务器/协议类...

2022-01-05 13:43:29 1300

原创 kubernetes对象

定义kubernetes对象 创建 Kubernetes 对象时,必须提供对象的规约,用来描述该对象的期望状态, 以及关于对象的一些基本信息(例如名称)。 当使用 Kubernetes API 创建对象时(或者直接创建,或者基于kubectl), API 请求必须在请求体中包含 JSON 格式的信息。 大多数情况下,需要在 .yaml 文件中为 kubectl 提供这些信息。 kubectl 在发起 API 请求时,将这些信息转换成 JSON 格式。这里有一个 .yaml 示例文件,展...

2022-01-04 21:28:35 949

原创 kubectl工具使用

kubectl安装 官网提供了在linux、mac、windows上的安装方式,详见安装工具 | Kubernetes 还提供了一些插件,比如命令自动补全功能,自动补全功能可以显著提高使用体验,详见在 Linux 系统中安装并设置 kubectl | Kubernetes...

2022-01-03 15:09:21 913

原创 认识kubernetes

什么是kuberneteskubernetes,名字源于希腊语,意为“舵手”或“飞行员”,因k和s中间有8个字母,所以也叫做k8s。kubernetes是一个开源的容器编排平台,用于让用户更方便的管理容器化应用,包括应用自动部署到合适的节点、应用回滚、应用自我修复、存储编排、秘钥和配置管理、服务发现和负载均衡等。为什么需要kubernetes容器是打包和运行应用程序当前最主流的方式,在生产环境中,需要管理运行应用程序的容器,并确保不会停机。 例如,如果一个容器发生...

2022-01-02 23:02:39 1797

原创 golang.org/x/crypto/ssh使用

packagepackage sshplusimport ( "fmt" "golang.org/x/crypto/ssh" "io/ioutil")func NewConfig(keyFile, user string) (config *ssh.ClientConfig, err error) { key, err := ioutil.ReadFile(keyFile) if err != nil { err = fmt.Errorf("unable to read pr.

2021-12-23 15:25:25 2489

原创 Kata Containers及相关vmm介绍

Kata Containers介绍 Kata Containers 是轻量级虚拟机的一种新颖实现,可无缝集成到容器生态系统中。 Kata Containers 与容器一样轻巧快速,并与容器管理层集成,同时还提供 VM 的安全优势。 Kata Containers 是两个现有开源项目的合并:Intel Clear Containers 和 Hyper runV。 新项目结合了两种技术的优点,共同愿景是重组虚拟化以适应容器原生应用程序,以提供容器的速度和 VM 的安全性。...

2021-12-16 14:32:54 7520

原创 kata-containers对接firecracker

在arm64环境下测试kata-containers对接firecracker,kata2.0需要使用containerd,不能使用docker,docker将kata版本硬编码为1下载kata-containersx86可直接下载官方打包好的压缩包,arm64需要自己编译 curl -OL https://github.com/kata-containers/kata-containers/releases/download/2.1.1/kata-static-2.1.1-x86_64.

2021-12-15 16:50:21 1979

原创 rust环境搭建

curl -OL https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup/archive/1.21.1/aarch64-unknown-linux-gnu/rustup-initchmod a+x rustup-init./rustup-init会在$HOME/.cargo/bin下生成相关可执行文件将可执行文件加到PATH中source ~/.cargo/envcargo build加速创建~/.cargo/config文件[source.

2021-12-14 14:32:19 2471

原创 github.com/spf13/pflag使用

使用全局pflag获取选项参数package mainimport ( "fmt" "github.com/spf13/pflag")var ( name string age int weight *int height *int)func init() { // 支持长选项、短选项、默认值和使用文本,并将标志的值绑定到变量。 pflag.StringVarP(&name, "name", "n","null", "Input Your Name").

2021-12-11 21:59:13 839

原创 Makefile使用

基本使用当前有如下Golang代码需要编译package mainimport "fmt"func main(){ fmt.Println("hello makefile!\n")}make支持makefile和Makefile两种命名方式,一般将文件命名为Makefile,以下内容分别表示为:hello: 目标文件 main.go: 依赖文件 go build -o hello: 生成目标文件的命令% cat Makefilehello: main.go..

2021-12-11 17:02:49 511

原创 ssh突然无法登录Connection closed by xxx port 22

记一次ssh突然无法登录的问题,本次出现问题的复现过程如下:1. 目的是测试kata-containers2. 安装kata-containers3. 安装qemu4. 修改daemon.json文件,配置docker可使用kata-runtime5. 重启docker6. 使用docker指定kata-runtime启动容器7. 此时当前终端没有退出,用另一终端ssh连接提示无法连接Connection closed by xxx port 22开始解决查看/var/l

2021-11-25 11:28:17 13271

原创 Calico使用BGP做网络隔离

Calico使用BGP做网络隔离,关闭全互联模式,自定义BGPPeer做网络隔离本次测试环境节点情况 [root@bgp-node1 ~]# calicoctl get node -o wide NAME ASN IPV4 IPV6 bgp-master1 (64512) 172.20.42.80/32 bgp-node1 (64512) 172.20.42.81/32 bgp-node2 (64512) 172.20...

2021-11-22 14:50:06 1319

原创 Calico网络模型

本次测试使用的k8s平台,默认开启节点全互联模式,使用IPIP,模式为Always,即不管是否跨子网,均使用IPIP模式进行通信[root@bgp-master1 bgp]# calicoctl node statusCalico process is running.IPv4 BGP status+--------------+-------------------+-------+----------+-------------+| PEER ADDRESS | PEER TY..

2021-11-19 17:43:53 844

原创 容器跨主机网络

本文以flannel项目UDP模式举例FlannelFlannel支持多种后端实现,包括:VXLAN、host-gw、UDP、gce、ali-vpc等UDP模式性能最差,目前已被启用,但最易理解,以下使用UDP模式理解跨主机网络实现原理示例现有两台宿主机:Node1、Node2Node1上有一个容器container1,container1的ip地址为100.96.1.2,对应docker0网桥的地址为100.96.1.1/24Node2上有一个容器container2,contai

2021-11-17 10:01:44 1019

原创 容器网络模型

网络栈通过Network Namespace隔离linux容器的"网络栈",网络栈包括网卡、回环设备、路由表和iptables规则,这个要素构成了进程发起和响应网络请求的基本环境;容器也可以直接使用宿主机的网络栈,即不开启Network Namespace,使用docker run时添加--net=host参数即可,比如:docker run -d --net=host nginx这样当容器启动后,将监听宿主机的80端口,如果宿主机的80端口...

2021-11-16 15:27:19 931

原创 Calico网络选项选择

概念了解 Calico 支持的不同网络选项,以便可以根据需要选择最佳选项。Calico 灵活的模块化架构支持广泛的部署选项,因此您可以选择适合您特定环境和需求的最佳网络方法。这包括使用各种 CNI 和 IPAM 插件以及底层网络类型在非覆盖或覆盖模式下运行的能力,有或没有 BGP。Kubernetes 网络基础知识Kubernetes 网络模型定义了一个“扁平”网络,其中:每个 pod 都有自己的 IP 地址。 任何节点上的 Pod 都可以在没有 NAT 的情况下与所有其他节点上的所有

2021-11-16 11:03:58 1383

原创 Calico根据拓扑分配 IP 地址并隔离

本文默认已安装calico10-calico.conflist文件确认确认/etc/cni/net.d/10-calico.conflist中ipam字段为以下内容,不能在此处填入ipv4_pools: ["xx.xx.xx.xx/xx"],如果有,直接删除该字段即可"ipam": { "type": "calico-ipam", "assign_ipv4": "true" },配置calicoctl如已配置可忽略下载对应架构及对应操作...

2021-11-15 15:42:29 2190

原创 使用Restful API访问k8s集群

创建命名空间或者使用已有的命令空间kubectl create ns myns创建serviceaccount名称为mysc,命名空间为mynskubectl create serviceaccount mysc -n myns使用RBAC赋权创建Role定义访问资源的权限,rules参考使用 RBAC 鉴权 | KubernetesapiVersion: rbac.authorization.k8s.io/v1kind: Rolemetadata: nam.

2021-10-29 16:37:46 993

原创 k8s创建普通用户

创建私钥下面的脚本展示了如何生成 PKI 私钥和 CSR。 设置 CSR 的 CN 和 O 属性很重要。CN 是用户名,O 是该用户归属的组。CN : common name 名字 O : orgnization 组openssl genrsa -out myuser.key 2048openssl req -new -key myuser.key -out myuser.csr -subj "/CN=myuser/O=myo"创建 CertificateSignin...

2021-10-27 15:17:58 1666

原创 OPA-Gatekeeper使用

文档地址:https://open-policy-agent.github.io/gatekeeper/website/docs/install安装赋予集群管理员权限 kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole cluster-admin \ --user admin安装opa-gatekeeper版本需要与k8s版本匹配,目前测试1.15版本使用3.4,1.19版本使用...

2021-10-26 19:21:15 932

原创 Open Policy Agent(OPA) rego使用

下载opa文档地址https://www.openpolicyagent.org/docs/latest/#1-download-opacurl -L -o opa https://openpolicyagent.org/downloads/v0.33.1/opa_linux_amd64_staticchmod a+x opamv opa /usr/local/bin非交互式运行package r1 #必须有包名pi = 3.14运行:opa eval -d r1..

2021-10-26 13:38:40 1046

原创 使用kind部署k8s

kind即 Kubernetes In Docker,将 k8s 所需要的所有组件,全部部署在了一个docker容器中,是一套开箱即用的 k8s 环境搭建方案。kind – Quick Starthttps://kind.sigs.k8s.io/docs/user/quick-start/#installation下载kind注意,虽然有arm64的kind二进制,但是没有相关的k8s镜像,所以目前只能用x86的环境curl -Lo ./kind https://kin...

2021-10-22 16:34:39 8021 5

原创 使用Scheduling Framework扩展kube-scheduler

调度框架介绍调度框架是面向 Kubernetes 调度器的一种插件架构, 它为现有的调度器添加了一组新的“插件” API。插件会被编译到调度器之中。 这些 API 允许大多数调度功能以插件的形式实现,同时使调度“核心”保持简单且可维护。框架工作流程调度框架定义了一些扩展点。调度器插件注册后在一个或多个扩展点处被调用。 这些插件中的一些可以改变调度决策,而另一些仅用于提供信息。每次调度一个 Pod 的尝试都分为两个阶段,即 调度周期 和 绑定周期。调度周...

2021-10-22 15:18:49 691

原创 Harbor对接OIDC

Harbor对接OIDCLinux版本:Linux node3 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux1、关闭防火墙和selinux2、安装docker-ceyum install -y yum-utilsyum-config-manager --add-repohttps://download.docker.com/linux/centos/.

2021-10-18 16:15:43 1978 2

原创 etcd-golang sdk使用

etcd介绍"etcd"这个名字源于两个想法,即 unix "/etc" 文件夹和分布式系统"d"istibuted。 "/etc" 文件夹为单个系统存储配置数据的地方,而 etcd 存储大规模分布式系统的配置信息。因此,"d"istibuted 的 "/etc" ,是为 "etcd"。etcd 以一致和容错的方式存储元数据。分布式系统使用 etcd 作为一致性键值存储,用于配置管理,服务发现和协调分布式工作。使用 etcd 的通用分布式模式包括领导选举,分布式锁和监控机器活动。etcd 设计用

2021-10-15 09:58:26 907

原创 kube-promethues添加自定义指标

通过promethues-golang创建自定义指标https://github.com/prometheus/client_golang/blob/master/examples/random/main.gohttps://github.com/prometheus/client_golang/blob/master/examples/random/main.go直接go run main.go运行起来即可此时通过IP:8080/metrics可以获取到数据添加额外监控组件配置scrape_c

2021-10-08 15:14:51 1775

原创 rke安装k8s

文档地址:https://docs.rancher.cn/docs/rancher2.5/installation/resources/k8s-tutorials/ha-rke/_index/https://docs.rancher.cn/docs/rke/_index环境准备1. 安装docker-ce2. 禁用所有worker节点交换功能3. 修改内核参数net.bridge.bridge-nf-call-iptables=1下载rkehttps://github.com/ran

2021-09-23 16:45:50 381

空空如也

空空如也

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

TA关注的人

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