自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 k8s calico vxlan式详解

之前的文章讲了k8s ipip模式的使用以及流量路径,本篇文章主要是来讲解一下vxlan 模式下pod 流量是如何通信的。

2024-04-23 10:35:53 592

原创 k8s whereabouts 使用

whereabouts是一个cluster-wide(集群级别)的IPAM插件,非常适合用在NetworkAttachment的场景。之前我们描述过k8s为分配地址使用的是ipam,常见的ipam类型为host-local,calico-ipam。whereabouts是一款用于替换host-local的ipam。记录本地或者k8s已经分配的pool和ip地址。通常以 NAD 为地址段设定的模式,一个 nad 中描述 该 地址段的 ip 范围,网关等信息。

2024-04-22 18:17:26 383 2

原创 k8s pod使用sriov

SR-IOV在2010年左右由Intel提出,但是随着容器技术的推广,intel官方也给出了SR-IOV技术在容器中使用的开源组件,例如:sriov-cni和sriov-device-plugin等,所以SR-IOV也开始在容器领域得到的大量使用。在传统的虚拟化中,虚拟机的网卡通常是通过桥接(Bridge或OVS)的方式,因为这种方式最方便,也最简单,但是这样做最大的问题在于性能。

2024-04-22 18:05:08 955

原创 k8s pod 绑核

默认配置下,kubelet/Linux 使用CFS(完全公平调度)算法来为 Pod 分配 CPU,工作负载(Pod 中的进程)会被调度到不同的可用的 CPU 核心,而且大多数工作负载对这种迁移带来的性能损失并不敏感。CFS 是 Linux 内核中 SCHED_NORMAL 类任务(普通进程)的默认调度算法,摒弃了原先的固定时间片优先级概念,致力于公平地将 CPU 时间分配给任务。但是 CPU 缓存的亲和性和调度延迟会对少数进程带来显著影响,这类工作负载需要独占 CPU(“绑核”)。

2024-04-22 17:47:39 436 1

原创 k8s ingress高级用法一

前面的文章中,我们讲述了ingress的基础应用,接下来继续讲解ingress的一些高级用法。

2023-11-17 15:58:06 1446 2

原创 k8s ingress基础

在k8s集群中,service和pod的ip为内网ip,仅集群内部才可以访问。如果外部应用想要直接访问集群内的服务,就需要把外部请求通过负载均衡转发到service上,然后再由kube-proxy组件将其转发给后端pod。一般service可以通过NodePort和LoadBalancer两种方式对外提供访问,但是这两种方式都有以下缺点NodePort:将service暴露在节点网络上,NodePort背后就是Kube-Proxy,Kube-Proxy是沟通service网络、Pod网络和节点网络的桥梁。

2023-11-10 18:00:45 1096

原创 k8s集群中namespace状态一直显示Terminating

今天在做测试时,在一个namespace下无法启动pod,查看ns状态一直显示Terminating。根据以上现象,怀疑是该ns下有未释放的资源,使用如下命令查看。将空ns通过调用k8s的api接口覆盖掉原来的ns。打开新的终端,再次执行上述命令,返回如下内容。使用–force 删除也是一直卡着的状态。以json格式导出ns的详细信息。使用kube-proxy开启端口。

2023-11-02 16:46:47 343

原创 k8s 多网卡方案multus

Multus CNI 是一种符合CNI规范的开源插件,为实现 K8s环境下容器多网卡而提出的解决方案并与其他 CNI 插件搭配使用。Multus CNI 本身不提供网络配置功能,它是通过用其他满足 CNI 规范的插件进行容器的网络配置。如下图所示,当集群环境存在 Multus CNI 插件并添加额外配置后,将会发现此容器内不再仅有 eth0 接口CNI 是一组限于容器网络面的规范,定义了容器网络资源创建、管理的规则。其自身实现并提供了内置且通用的网络插件,同时为第三方实现其规范预留了扩展。类型。

2023-11-02 15:20:01 1473 7

原创 calico ipam使用

前面的文章pod获取ip地址的过程中提到过calico使用的IP地址的管理模块是其自己开发的模块calico-ipam,本篇文章来讲述下其具体用法。

2023-11-01 15:03:01 251

原创 k8s 资源预留

可压缩资源(CPU)和不可压缩资源可压缩资源比如CPU超配后,在系统满负荷时会划分时间片分时运行进程,系统整体会变慢(一般不会导致太大的问题)。但不可压缩资源如Memory,当系统内存不足时,就有可能触发系统 OOM;这时候根据 oom score 来确定优先杀死哪个进程,而 oom_score_adj 又是影响 oom score 的重要参数,其值越低,表示 oom 的优先级越低。

2023-10-31 19:59:07 12942

原创 k8s pod获取ip地址过程

Kube-controller-manager 为每个节点分配一个 podCIDR。从 podCIDR 中的子网值为节点上的 Pod 分配了 IP 地址。由于所有节点上的 podCIDR 是不相交的子网,因此它允许为每个 pod 分配唯一的IP地址。Kubernetes 集群管理员可配置和安装 kubelet、container runtime、network provider,并在每个节点上分发 CNI 插件。Network provider agent 启动时,将生成 CNI 配置。

2023-10-30 15:46:10 764

原创 helm 内置对象

前面的文章介绍了 Helm Chart 的一些基本概念和使用,接下来我们重点介绍下 Chart 模板的编写。模板会渲染成 Kubernetes 的资源清单文件,接下来我们将来学习下模板的结构和如何使用它们,以及如何调试。对象从模板引擎传递到模板中,在代码中可以传递对象,也有一种方法可以在模板宏创建新的对象,比如tuple函数。对象可以很简单,也可以包含其他对象或函数,例如,Release 对象就包含几个对象(比如 Release.Name),Files 对象就包含几个函数。

2023-08-10 15:10:07 222

原创 iptables自定义chain

在iptables中,可以创建自定义链(Custom Chains)来组织和管理防火墙规则。自定义链可以以更高层次和更好的可读性来管理规则,使配置和维护更加简单。以下为在iptables中创建和使用自定义链的示例1:创建chain mychain2:添加规则到自定义链禁止192.168.1.0的网段访问本机,丢弃源地址的流量3:调用自定义链这将将所有传入 TCP 端口 80 的流量传递到 MYCHAIN 自定义链进行处理。如果不调用自定义的规则链,则自定义的规则链无效4:删除自定义链。

2023-08-10 14:10:43 1261

原创 helm chart 介绍

Helm 使用一种名为 charts 的包格式,一个 chart 是描述一组相关的 Kubernetes 资源的文件集合,单个 chart 可能用于部署简单的应用,比如 nginx pod,或者复杂的应用,比如一个完成的lnmp应用程序。Charts 是创建在特定目录下面的文件集合,然后可以将它们打包到一个版本化的存档中来部署。接下来我们就来看看使用 Helm 构建 charts 的一些基本方法。

2023-07-28 16:53:47 788

原创 helm基础

Helm 可以帮助我们管理 Kubernetes 应用程序 - Helm Charts 可以定义、安装和升级复杂的 Kubernetes 应用程序,Charts 包很容易创建、版本管理、分享和分布。Helm 对于 Kubernetes 来说就相当于 centos中的yum ,可以减少复杂的Kubernetes 应用程序的维护成本,接下来讲解一下 Helm 的使用方法。在我们进行上述的安装、升级、回滚等动作时,还可以进行一些参数的添加--timeout。

2023-07-27 16:59:59 131

原创 k8s calico ipip模式详解

Calico 是一种容器之间互通的网络方案。在虚拟化平台中,比如 OpenStack、Docker 等都需要实现 workloads 之间互连,但同时也需要对容器做隔离控制。而在多数的虚拟化平台实现中,通常都使用二层隔离技术来实现容器的网络,这些二层的技术有一些弊端,比如需要依赖 VLAN、bridge 和隧道等技术,其中 bridge 带来了复杂性,vlan 隔离和 tunnel 隧道则消耗更多的资源并对物理环境有要求,随着网络规模的增大,整体会变得越加复杂。

2023-06-28 07:16:47 1564

原创 iptables详解

netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。iptables 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。

2023-06-26 15:01:52 5697

原创 k8s configmap 详解

ConfigMap是k8s的一个配置管理组件,可以将配置以key-value的形式传递,通常用来保存不需要加密的配置信息,加密信息则需用到Secret,主要用来应对以下场景:生成为容器内的环境变量;设置容器启动命令的启动参数(需设置为环境变量)以Volume的形式挂载为容器内部的文件或目录。

2023-06-19 17:53:29 4832

原创 openssl证书签发流程详解

openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS 协议的实现。构成部分密码算法库密钥和证书封装管理功能SSL通信API接口用途建立 RSA、DH、DSA key 参数建立 X.509 证书、证书签名请求(CSR)和CRLs(证书回收列表)计算消息摘要使用各种 Cipher加密/解密SSL/TLS 客户端以及服务器的测试处理S/MIME 或者加密邮件数字证书标准X.509版本号。

2023-06-13 22:24:52 3514

原创 k8s kube-proxy详解

kube-proxy是kubernetes中网络核心组件,实现了服务暴露和转发等网络功能。kube-proxy支持userspace,ipvs和iptables三种代理模式。userspace性能问题较严重,基本不再使用,应用最多的是iptables和ipvs模式。kube-proxy 以daemonset的方式运行在每个Node计算节点上,负责Pod网络代理, 它会定时通过apiserver从etcd服务获取到service和endpoint资源的变化,维护网络规则和四层负载均衡工作。

2023-06-13 13:46:55 4924 1

原创 k8s CoreDns详解

服务发现是 K8s 的一项很重要的功能。K8s 的服务发现有两种方式,一种是将 svc 的 ClusterIP 以环境变量的方式注入到 pod 中;一种就是 DNS,从 1.13 版本开始,coreDNS 就取代了 kube dns 成为了内置的 DNS 服务器。CoreDNS的kubernetes插件的具体实现遵循k8s官方提供的标准指南,这也是它能够替代kube-dns成为kubebernetes中默认的DNS的重要原因。

2023-06-12 11:05:59 3323

原创 k8s pvc详解

PVC 的全称是:PersistentVolumeClaim(持久化卷声明),PVC 是用户存储的一种声明,PVC 和 Pod 比较类似,Pod 消耗的是节点,PVC 消耗的是 PV 资源,Pod 可以请求 CPU 和内存,而 PVC 可以请求特定的存储空间和访问模式。对于真正使用存储的用户不需要关心底层的存储实现细节,只需要直接使用 PVC 即可。PVC作为用户对存储资源的需求申请,主要涉及存储空间请求访问模式PV选择条件和存储类别等信息的设置。

2023-06-05 17:15:43 3844

原创 k8s pv详解

在Kubernetes 中为了让用户更加方便的使用存储,便引入了 PV 和 PVC这两个资源对象来实现对存储的管理。本章节主要介绍PV。PV 的全称是:PersistentVolume(持久化卷),是对底层的共享存储的一种抽象,PV 由管理员进行创建和配置,它和具体的底层的共享存储技术的实现方式有关,比如 Ceph、GlusterFS、NFS 等,都是通过插件机制完成与共享存储的对接。PV作为对存储资源的定义,主要涉及存储能力、访问模式、存储类型、回收策略、后端存储类型等关键信息的设置。

2023-06-05 16:03:10 1175

原创 storageclass详解

名称后端存储的提供者 (provisioner)后端存储的相关参数配置和回收策略的名称尤为重要,将在创建PVC时引用,管理员应该准确命名具有不同存储特性的StorageClass 一旦被创建,则无法修改,如需更改,则只能删除原 StorageClass资源对象并重新创建。如下为storageclass举例metadata:name: nfsstorageclass.beta.kubernetes.io/is-default-class="true" ###设置为默认的存储类型。

2023-06-02 09:44:22 836

原创 k8s使用localpath为pod动态提供存储

在k8s环境中,我们经常会使用本机路径作为持久化存储。在k8s官方文档中有两种方式使用本机存储,一种是hostPath,另一种是local volume,这两种都不支持动态扩容,并且程序移植改动比较大,而local-path-provisioner很好的弥补了这一缺陷。

2023-05-24 16:06:28 644

原创 POD启动时执行多条命令

创建Pod时,可以为其下的容器设置启动时要执行的命令及其参数。如果要设置命令,就填写在配置文件的command字段下,如果要设置命令的参数,就填写在配置文件的args字段下。一旦Pod创建完成,该命令及其参数就无法再进行更改了。如果在配置文件中设置了容器启动时要执行的命令及其参数,那么容器镜像中自带的命令与参数将会被覆盖而不再执行。如果配置文件中只是设置了参数,却没有设置对应的命令,那么容器镜像中自带的命令会使用该新参数作为其执行时的参数。

2023-05-24 16:04:47 611

原创 docker too many open files解决方式

docker 提示too many open files

2023-04-13 16:43:43 1162

原创 hint: running `helm repo update` may help

hint: running `helm repo update` may help

2023-04-12 21:29:42 450

原创 k8s RBAC权限控制

k8s RBAC权限控制

2023-04-05 20:45:55 664 1

原创 k8s qos等级

k8s qos 等级介绍

2023-04-03 18:38:22 365

原创 k8s 探针

k8 探针

2023-04-03 15:19:51 980

原创 kubectl get node慢问题排查

k8s get node慢问题排查思路

2023-03-30 23:02:49 1494

原创 nfs为kubernetes动态提供后端卷

nfs为k8s 动态提供后端卷

2023-03-27 23:10:18 91

原创 k8s设置node不可调度

k8s设置节点不可调度

2023-03-22 15:01:39 1991

原创 k8s 之NetworkPolicy介绍使用

k8s之networkpolicy 应用

2023-03-21 21:09:26 1318

原创 kubekey部署k8s集群

kubekey部署k8s集群

2022-12-06 17:50:19 3197

原创 containerd对接harbor

containerd 对接harbor

2022-10-18 17:18:07 2681

原创 DockerFile详解

dockerfile常用参数解释

2022-10-17 15:17:37 2311

原创 harbor机器人账户使用

harbor机器人账户使用

2022-09-27 17:17:45 2995

原创 k8s之deployment应用

k8s之deployment应用

2022-08-04 20:42:00 1445

空空如也

空空如也

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

TA关注的人

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