蜻蜓的窝 - DevOps
type: channel
link: https://dragonfly.fun/category/devops/
description: 运维
items: 基于 containerd 运行时的 Kubernetes 环境搭建
items: Windows 本地快速启动 K8S 集群

基于 containerd 运行时的 Kubernetes 环境搭建
type: item
date: 2022-04-23T18:03:00+08:00
description: 众说周知，Kubernetes 从 1.24 起就删除了 Dockershim 相关代码，现在整理了一下国内网络环境下使用 containerd 作为运行时的集群搭建步骤1. 系统准备# 允许 iptables 检查桥接流量 sudo tee /etc/modules-load.d/containerd.conf << EOF overlay br_netfilter EOF sudo tee /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF # 使设置生效 sudo modprobe overlay br_netfilter sudo sysctl --system # 禁用虚拟内存 sudo swapoff -a2. 安装 Kubernetes 组件2.1 Debian/Ubuntu# 安装 containerd curl -sL http://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-ce.gpg echo "deb http://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list sudo apt update sudo apt install -y containerd.io # 安装 kubeadm curl -sL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpg echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt update sudo apt install -y kubeadm=1.21.14-00 kubectl=1.21.14-00 kubelet=1.21.14-002.2 CentOS# 安装 containerd sudo curl https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo sudo yum install -y containerd.io sudo systemctl enable containerd # 安装 kubeadm sudo tee /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=0 gpgcheck=1 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF sudo yum install -y --enablerepo=kubernetes kubeadm-1.21.14 kubelet-1.21.14 kubectl-1.21.14 sudo systemctl enable kubelet2.3 配置容器运行时# 配置容器运行时 sudo tee /etc/containerd/config.toml << EOF version = 2 [plugins."io.containerd.grpc.v1.cri"] sandbox_image = "registry.aliyuncs.com/google_containers/pau…

Windows 本地快速启动 K8S 集群
type: item
date: 2021-06-17T11:43:00+08:00
description: Kubernetes (以下简称 K8S) 是 Docker 推出之后最热门的容器编排技术，然而想在本地将 K8S 跑起来，并不像我们想象的那么容易。存在以下几点「问题」：网络：K8S 里面的一些镜像在国内很难将其 pull 下来，当然这可以通过代理、镜像站等方式解决。资源：在内存资源不这么充裕的本地开发环境，去部署一个 K8S 集群，这无疑不是一个明智的选择。那么有没有什么方案可以更优雅更轻量更快速搭建一个 K8S 集群呢？答案就是 K3D目前主流的本地 k8s 运行方式有很多minikube 仅支持单节点，但是我们期望可以跑一个集群的方式，方便我们去 Mock 节点宕机之后 K8S 自动调度的 case ✖️microk8s 是 Ubuntu 生态里提供的一个可以单机运行的 k8s 版本，配合 Ubuntu 生态的 multipass，可以模拟多节点，但是在本就资源紧张的本地环境，通过虚拟机的方式模拟多节点，显然并不是我想要的 ✖️kind 是一个基于 Docker 构建 Kubernetes 集群的工具，Kubernetes in Docker ✔️k3d 是一个可以让 k3s 运行在 Docker 中的工具，相比于 kind ，启动速度更快，占用资源更小，也是本文采取的方案 ✅关于 k3d 以及 kind 的对比，可以参考 K3d vs Kind 谁更适合本地研发。1. 什么是 K3Dk3s 是 Rancher 公司推出非常快速且轻量级的完全兼容的 Kubernetes 发行版（CNCF 认证） k3d 是一个可以让 k3s 运行在 Docker 中的工具，它提供了一个简单的 CLI 来创建、运行和删除具有 1 到 N 个节点的 Kubernetes 集群最大程度减轻了外部依赖性，仅需要 kernel 和 cgroup 挂载。占用资源比完整版的 K8S 少了不少内置了很多组件，开箱即用，而且每一个组件都是可替换的详情参考官方文档 什么是 K3s?2. 通过 docker-machine 启动 Docker 服务官方提供的 Docker Desktop 是基于 WSL2 实现的，需要开启 Hyper-V 功能。 这样会使整个 Windows 都跑在虚拟机中，导致某些虚拟化相关的应用不正常 (比如某些模拟器)，而且内存占用也不太可控。 本文采用了基于 boot2docker 的方式运行 Docker 服务，定制性更灵活一些。2.1 安装必备工这里强烈推荐使用 Git for Windows 自带的 MinGW 命令行SHELL，使开发体验更加贴近与 Linux。以下操作均在 Git Bash 中进行首先需要安装虚拟机软件 VirtualBox 然后需要下载如下命令工具并添加到环境变量 PATH 中docker-machine 下载后重命名为 docker-machine.exek3d 下载后重命名为 k3d.exekubectl 官方的 K8S本文中上面这些工具下载到了 D:\Docker\bin，并将 D:\Docker\bin 添加到环境变量中同时也配置了如下环境变量，将虚拟机文件的储存位置修改为 D 盘，避免占用系统空间MACHINE_STORAGE_PATH=D:\Docker在 ~/.profile 文件添加如下内容配置命令行自动补全sudo tee /etc/profile.d/kubectl.sh << EOF source <(kubectl completion bash) source <(k3d completion bash) 2.2 使用 boot2docker 启动 Docker 引擎下面创建了一个磁盘大小为 60000 MB，CPU 使用 2 个核心的虚拟机docker-machine create --virtualbox-cpu-count 2 \ --engine-registry-mirror https://hub-mirror.c.163.com \ --virtualbox-disk-size 60000 --virtualbox-memory 2048 \ --virtualbox-no-share default # 每次使用 docker 时都需要执行如下命令 eval $(docker-machine env --shell bash default)稍等片刻，当出现以下日志时，说明 Docker 服务已启动完成第一次创建 Docker 实例会下载 boot2docker.iso 作为启动镜像，国内用户可以通过添加参数 --virtualbox-boot2docker-url https://github.com.cnpmjs.org/dragonflylee/boot2…