深入理解Kubernetes Pod网络原理 - CNI

本文是关于深入理解Kubernetes网络原理系列第3章 深入理解Kubernetes Pod网络原理 - 网络名称空间 深入理解Kubernetes Pod网络原理 - Linux虚拟网络技术 深入理解Kubernetes Pod网络原理 - CNI 深入理解Kubernetes Pod网络原理 - 跟随 flannel 学习CNI原理 深入理解Kubernetes Pod网络原理 - 跟随 flannel + multus 剖析 Chained Plugins 深入理解Kubernetes Pod网络原理 - 从零实现一个 CNI Plugin part 1 (Shell) 深入理解Kubernetes Pod网络原理 - 从零实现一个 CNI Plugin part 2 (libcni) 深入理解Kubernetes Pod网络原理 - Kubernetes网络模型 1 深入理解Kubernetes Pod网络原理 - Kubernetes网络模型 2 深入理解Kubernetes Pod网络原理 - Pod网络排错思路 概述 这是我在 kubernetes 网络之旅中的中的第4部分,主要学习 CNI 规范(5要素,旧版本是4要素)。要深深记住这些,在后面旅程中常常被用到。 Notes 本文讲解均按照 1....

 ·  · 

使用WSL2安装kind (Windows10 & Docker Desktop)

本文说明如何使用 Windows 10 创建单节点的 kind 集群 (KinD Kubernetes in Docker)。 先提条件 条件 版本 操作系统:Windows 10 或 Windows 11 May 2020 Update (build 19041) Docker in WSL2 推荐安装Docker Desktop WSL2 distro 镜像 这里采用Debian 内存 至少 8GB 内存 安装windows子系统 安装windows子系统步骤可以参考 [1] 启用子系统 Open PowerShell as Administrator (Start menu > PowerShell > right-click > Run as Administrator) and enter this command: bash 1 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 查看 wsl 状态 bash 1 2 3 4 5 6 7 8 9 10 PS C:\Windows\system32> wsl --status 默认分发:docker-desktop 默认版本:2 适用于 Linux 的 Windows 子系统最后更新于 2023/8/3 适用于 Linux 的 Windows 子系统内核可以使用“wsl --update”手动更新,但由于你的系统设置,无法进行自动更新。 若要接收自动内核更新,请启用 Windows 更新设置:“在更新 Windows 时接收其他 Microsoft 产品的更新”。 有关详细信息,请访问https://aka....

 ·  · 

debian12 - 高版本系统安装旧版本k8s异常处理

今日在部署旧版本 k8s 集群 (1.16.10) 时出现错误,主要是在新版本操作系统上部署老版本 k8s,kubelet会出现如下错误 bash 1 2 W1123 22:31:47.383423 3686 server.go:605] failed to get the kubelet's cgroup: mountpoint for cpu not found. Kubelet system container metrics may be missing. W1123 22:31:47.383572 3686 server.go:612] failed to get the container runtime's cgroup: failed to get container name for docker process: mountpoint for cpu not found. Runtime system container metrics may be missing. 错误原因 上面的报错是 Kubelet 无法正确访问 Docker 容器运行时的 cgroup 信息,特别是关于 CPU 使用的 cgroup 信息...

 ·  · 

TLS Everywhere - 解密kubernetes集群的安全认证

本文是关于Kubernetes 4A解析的第5章 深入理解Kubernetes 4A - Authentication源码解析 深入理解Kubernetes 4A - Authorization源码解析 深入理解Kubernetes 4A - Admission Control源码解析 深入理解Kubernetes 4A - Audit源码解析 TLS Everywhere - 解密kubernetes集群的安全认证 所有关于Kubernetes 4A部分代码上传至仓库 github.com/cylonchau/hello-k8s-4A 在 kubernetes 集群中,所有的通讯都是用 TLS 进行加密和认证,本文使用一次老集群(二进制部署集群)证书更换作为记录,通过这种方式深入对 kubernetes 的认证方式来了解更换证书的步骤,以及一次模拟老集群的更换步骤。 本文使用证书生成工具为 “kubernetes-generator” [1] 专用于 k8s 二进制部署生成证书和安装包的工具。 note 本文中的引用文档使用 web.archive 进行保存,避免官方版本更新,其概念与文档中的概念有变动导致,资料引用失败。 Kubernetes认证方式 为了了解证书更换需要做那些步骤,所以必须了解 k8s 的认证方式,这样才能更好的在更换证书时对集群上部署的业务系统的影响降低到最低。 X509 证书 kube-apiserver 的启动参数 --client-ca-file,可以使用客户端办法机构,英文代号就是熟悉的 “CA” (Certificate authority),当这个证书传递后,可以验证 kube-apiserver 用于验证向 kube-apiserver 提供的客户端证书,这里包含 k8s 中提供的用户种类的两种: 用户名:对应证书的 CN (Common Name) 用户组:对应证书的O (organization),用于对一个用户组进行授权,例如 “system:masters” 表示一个组 [1],允许不受限制地访问 kube-apiserver 静态token kube-apiserver 的启动参数 --token-auth-file,是以文件提供给 kube-apiserver,该 Token 会长期有效,并且如果不重启服务 Token 是不会更新。...

 ·  · 

构建集群kubernetes v1.28并使用kine和mysql替换etcd

在本文中,将探讨使用 k3s 的 kine 项目来替换掉 etcd,并通过实验使用 kubeadm 去 run 一个 k8s 集群,并用 k3s 的 kine 项目来替换掉 etcd。 为什么使用 kine etcd 在 Kubernetes 之外基本上没有应用的场景,并且 etcd 迭代也比较慢,由于没有人愿意维护因此一直在衰退 [1],并且,Kubernetes 集群中,etcd 也是一个影响集群规模的重大因素。并且 K3S 存在一个项目 Kine 可以使用关系型数据库运行,这样对集群维护者来说可以不需要维护复杂的 etcd 集群,由于关系型数据库有很多高可用方案,这将使得 k8s 集群规模变成了无限可能。 Kine 介绍 前文提到,kubernetes (kube-apiserver) 与 etcd 是耦合的,如果我们要使用 RDBMS 去替换 etcd 就需要实现 etcd 的接口,那么这个项目就是 Kine [2]。 Kine 是一个 etcdshim,处于 kube-apiserver 和 RDBMS 的中间层,它实现了 etcdAPI的子集(不是etcd的全部功能),Kine 在 RDBMS 数据库之上实现了简单的多版本并发控制;将所有信息存储在一个表中;每行存储此 key 的修订, key, 当前值, 先前值, 先前修订,以及表示该 Key 是已创建还是已删除的标记,通过这种机制可以作为 shim 层来替换 etcd。...

 ·  ·