1. 核心参数详解 1.1. sync_binlog 参数 1.1.1. 参数含义 sync_binlog 控制MySQL何时将二进制日志从OS缓存同步到磁盘。 1.1.2. 可选值与含义 sync_binlog = 0:完全依赖操作系统,MySQL不主动同步 sync_binlog = 1:每次事务提交后立即同步到磁盘 sync_binlog = N (N>1):每N次事务提交后同步一次 1.1.3. 工作机制 事务提交 → 写入binlog buffer → 写入OS cache → sync_binlog控制 → 刷写到磁盘 1.1.4. 配置建议 # 生产环境推荐配置 sync_binlog = 1 # 最高安全级别 # 高并发场景可考虑 sync_binlog = 10 # 平衡性能与安全 # 开发测试环境 sync_binlog = 0 # 最佳性能 1.2. innodb_flush_log_at_trx_commit 参数 1.2.1. 参数含义 控制InnoDB事务日志(redo log)的刷盘策略。 1.2.2. 可选值详解 0:每秒刷写一次,事务提交时不立即刷盘 1:每次事务提交都立即刷写到磁盘(最安全) 2:每次事务提交写入OS缓存,每秒刷写到磁盘 1.2.3. 工作流程对比 值为0: 事务提交 → redo log buffer → (每秒) → OS cache → 磁盘 值为1: 事务提交 → redo log buffer → OS cache → 立即刷盘 值为2: 事务提交 → redo log buffer → OS cache → (每秒) → 磁盘 1.
前言 在 Kubernetes 集群中,默认情况下所有 Pod 之间都可以自由通信。但在生产环境中,我们往往需要对网络流量进行精细化控制,这时就需要用到 NetworkPolicy。本文将从基础概念到实际应用,全面介绍 NetworkPolicy 的使用方法。 什么是 NetworkPolicy? NetworkPolicy 是 Kubernetes 的一种资源对象,用于定义 Pod 之间的网络访问规则。它类似于传统网络中的防火墙规则,可以控制: 入站流量(Ingress):哪些来源可以访问目标 Pod 出站流量(Egress):目标 Pod 可以访问哪些目的地 前置条件 在开始之前,确保您的集群满足以下条件: 1. CNI 插件支持 NetworkPolicy 需要 CNI 插件的支持,常见支持的插件包括: Calico(推荐) Cilium Weave Net Antrea ⚠️ 注意:Flannel 默认不支持 NetworkPolicy 2. 验证支持情况 # 检查当前 CNI 插件 kubectl get pods -n kube-system | grep -E "(calico|cilium|weave|antrea)" # 创建测试策略验证支持 kubectl apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: test-policy namespace: default spec: podSelector: {} policyTypes: [] EOF # 如果支持,会输出 "networkpolicy/test-policy created" kubectl get networkpolicies -n default NetworkPolicy 基础语法 完整结构示例 apiVersion: networking.
1. 介绍 2. 安装 3. 初始化项目 4. 基础用法示例 5. 添加子命令 6. 使用Flags 7. 参数验证 8. 完整示例 9. 使用示例 10. 总结 1. 介绍 Cobra 是一个用于创建强大的现代 CLI 应用程序的库。如果你使用 Go,并且正在寻找一个简单而强大的库来创建 CLI 应用程序,那么你可能会对 Cobra 感兴趣。 2. 安装 go mod init your-project-name go get -u github.com/spf13/cobra@latest 3. 初始化项目 使用 Cobra CLI 工具快速创建项目结构 # 安装 cobra-cli go install github.com/spf13/cobra-cli@latest # 初始化项目 cobra-cli init 4. 基础用法示例 创建一个简单的CLI应用: package main import ( "fmt" "github.com/spf13/cobra" "os" ) var rootCmd = &cobra.
1. 为什么使用 helm 安装 https://github.com/kubernetes/dashboard/?tab=readme-ov-file#introduction 从版本 7.0.0 开始,我们不再支持基于 Manifest 的安装。现在仅支持基于 Helm 的安装。 由于多容器设置和对 Kong 网关 API 代理的硬依赖,因此无法轻松支持基于 Manifest 的安装。 2. Helm 安装 本次以 k8s 1.27 版本为例 找到适配的版本,即 Helm Chart 7.5.0, See: https://github.com/kubernetes/dashboard/releases?page=5 # 添加 helm 仓库 helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/ # 更新仓库 helm repo update # 查找 kubernetes-dashboard helm search repo kubernetes-dashboard/kubernetes-dashboard -l # 列出所有版本 helm search repo kubernetes-dashboard/kubernetes-dashboard --version 7.5.0 # 查看指定版本 # 安装(不含 metrics-server、使用事先安装好的 metrics-server) helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard \ --version 7.
Vim 是一个功能强大的文本编辑器,被广泛应用于 Linux/Unix 系统中。本文将从基础操作开始,逐步介绍 Vim 的各种功能和使用技巧。 基础操作 模式切换 Vim 有几种不同的工作模式: 普通模式(Normal Mode):默认模式,用于浏览和操作文本 插入模式(Insert Mode):用于输入文本 可视模式(Visual Mode):用于选择文本 命令模式(Command Mode):用于执行命令 模式切换快捷键 i - 在光标前进入插入模式 I - 在行首进入插入模式 a - 在光标后进入插入模式 A - 在行尾进入插入模式 o - 在下一行进入插入模式 O - 在上一行进入插入模式 Esc - 返回普通模式 v - 进入可视模式 V - 进入行可视模式 Ctrl+v - 进入块可视模式 : - 进入命令模式 光标移动 基本移动 h - 左移一个字符 j - 下移一行 k - 上移一行 l - 右移一个字符 w - 移动到下一个单词开头 b - 移动到上一个单词开头 e - 移动到当前单词结尾 快速移动 0 - 移动到行首 ^ - 移动到行首第一个非空字符 $ - 移动到行尾 gg - 移动到文件开头 G - 移动到文件结尾 nG - 移动到第 n 行(如 10G 移动到第10行) Ctrl+f - 向下翻页 Ctrl+b - 向上翻页 Ctrl+d - 向下翻半页 Ctrl+u - 向上翻半页 文本编辑 删除操作 x - 删除光标下的字符 X - 删除光标前的字符 dd - 删除当前行 ndd - 删除 n 行(如 3dd 删除3行) dw - 删除到下一个单词 db - 删除到上一个单词 d$ - 删除到行尾 d0 - 删除到行首 复制和粘贴 yy - 复制当前行 nyy - 复制 n 行 yw - 复制一个单词 y$ - 复制到行尾 p - 在光标后粘贴 P - 在光标前粘贴 撤销和重做 u - 撤销上一次操作 Ctrl+r - 重做被撤销的操作 U - 撤销对当前行的所有修改 查找和替换 查找操作 /pattern - 向下查找 pattern ?
1. 介绍 在 Kubernetes 环境中进行 故障分析与调试 是一项重要的技能,因为 Kubernetes 涉及众多的组件和服务,且其工作负载通常是分布式的。在面对问题时,分析和调试的技巧将帮助你更快速地定位问题并找到解决方案 2. 涉及工具 kubectl crictl kubeadm journalctl netstat ss lsof tcpdump ip iptables firewall-cmd traceroute nmap 3. 网络问题 首先,我们需要了解 k8s 整个网络架构,数据包是如何流转的,才能快速定位问题。 架构图如下(以flannel为例): 具体如何排查,网络问题千万种,这里只提供一种思路,仅供参考。 第一步:基本参数,如 overlay,br_netfilter,net.ipv4.ip_forward 等是否配置正确 第二步:防火墙,如 iptables, firewalld 第三步:路由表,如 ip route 第四步:网络插件,如 flannel, calico 第五步:服务发现,如 coredns 第六步:网络策略,如 networkpolicy 第七步:网络日志,如 kubectl describe pod, kubectl logs pod, flannel, calico,journalctl -fu kubelet 第八步:抓包诊断,如 tcpdump, ss, netstat # 基本参数 ## 1 为开启,0 为关闭 ## 查看方法一 lsmod | grep -E 'overlay|br_netfilter' cat /proc/sys/net/ipv4/ip_forward cat /proc/sys/net/bridge/bridge-nf-call-iptables cat /proc/sys/net/bridge/bridge-nf-call-ip6tables ## 查看方法二 modprobe overlay modprobe br_netfilter sysctl net.
1. Containerd 软件安装 1.1. Containerd 组件介绍 2. runc 安装 3. crictl 安装 3.1. crictl 配置 4. containerd 配置 4.1. 修改配置 4.2. 配置镜像加速 5. 添加 containerd 到 systemd 6. Containerd 使用说明 6.1. crictl 命令 6.2. cri 命令 1. Containerd 软件安装 https://github.com/containerd/containerd/releases # 下载 wget https://github.com/containerd/containerd/releases/download/v1.7.22/containerd-1.7.22-linux-amd64.tar.gz # 解压 tar -zxvf containerd-1.7.22-linux-amd64.tar.gz # 移动 mv bin/* /usr/local/bin/ -> # ctr version Client: Version: v1.7.22 Revision: 7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c Go version: go1.22.7 1.1. Containerd 组件介绍 序列 名称 介绍 1 containerd-shim-runc-v1 containerd 的旧版本 shim 进程,用于管理单个容器的生命周期。 2 containerd-shim-runc-v2 containerd 的更新版本 shim 进程,用于管理单个容器的生命周期。 3 containerd-stress 用于压力测试 containerd 的工具。 4 containerd containerd 的主要守护进程,负责管理容器的生命周期和镜像存储。 5 containerd-shim containerd 的 shim 进程,用于在容器和 containerd 守护进程之间建立通信。 6 ctr containerd 的命令行界面(CLI)工具,允许直接与 containerd 守护进程交互。 2.
1. 目录 1. 目录 2. 介绍 3. Docker 4. Docker-Compose 5. 二进制包 5.1. 下载及创建目录 5.2. 配置环境变量 5.3. 配置my.cnf 5.4. 初使化并启动mysql 6. k8s Deployment 7. 参考链接 2. 介绍 MySQL 是一个开源的关系型数据库管理系统,广泛用于各种应用程序中。它支持多种存储引擎,包括 InnoDB、MyISAM 等,并且具有高性能、可靠性和易用性等特点。MySQL 可以在多种操作系统上运行,包括 Windows、Linux 和 macOS 等。 本次采用多种方式部署 MySQL,包括 Docker、Docker-Compose、二进制包、k8s-Deployment。 3. Docker docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=your_power_password -v /data/mysql:/var/lib/mysql mysql:5.7.44 4. Docker-Compose cat > docker-compose.yml <<EOF version: '3' services: mysql: image: mysql:5.7.44 container_name: mysql ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD=your_power_password volumes: - /data/mysql:/var/lib/mysql EOF # 创建其它帐号 cat > docker-compose.
Kubernetes 升级操作 1. 目录 Kubernetes 升级操作 1. 目录 2. 升级需知 3. 升级流程 4. 检查集群 5. 备份操作 5.1. 备份 etcd 数据 5.2. 备份 flannel 二进制文件 5.3. 备份 kubernetes 文件 6. 升级主master 6.1. 查看当前版本 6.2. 设置版本号 7. 规划升级版本 8. 查询 9. 升级主master 9.1. 设置版本号 9.2. 获取当前集群配置 9.3. kubeadm 升级 9.4. 查看计划&差异 9.5. 升级主master 9.6. 升级组件 9.7. 验证升级 10. 升级其它 master 11. 升级 worker 节点 11.1. 排空节点 11.2. 升级节点 11.3. 验证 12. 回滚 13.
Docker 版本 https://github.com/kubernetes/kubernetes/blob/release-1.20/build/dependencies.yaml k8s 不同版本,支持的 docker 版本不同,导致安装和升级,版本冲突,需要提前了解。 版本对应关系 Kubernetes 版本 支持的 Docker 版本 1.20.x 18.09, 19.03, 20.10 1.19.x 18.09, 19.03, 20.10 1.18.x 18.09, 19.03, 19.03 flanned 选择版本:https://github.com/flannel-io/flannel/blob/v0.24.4/Documentation/kube-flannel.yml ingress-nginx 选择版本:https://github.com/kubernetes/ingress-nginx?tab=readme-ov-file#changelog