惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hacker News: Ask HN
Hacker News: Ask HN
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Schneier on Security
Schneier on Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
F
Full Disclosure
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Proofpoint News Feed
Hacker News - Newest:
Hacker News - Newest: "LLM"
罗磊的独立博客
S
Schneier on Security
H
Hacker News: Front Page
H
Heimdal Security Blog
美团技术团队
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
P
Privacy International News Feed
博客园 - 三生石上(FineUI控件)
P
Palo Alto Networks Blog
PCI Perspectives
PCI Perspectives
NISL@THU
NISL@THU
T
Troy Hunt's Blog
Project Zero
Project Zero
Y
Y Combinator Blog
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
小众软件
小众软件
月光博客
月光博客
Google DeepMind News
Google DeepMind News
W
WeLiveSecurity
C
Cisco Blogs
腾讯CDC
Blog — PlanetScale
Blog — PlanetScale
I
Intezer
I
InfoQ
WordPress大学
WordPress大学
F
Fortinet All Blogs
T
Threat Research - Cisco Blogs
N
News and Events Feed by Topic
T
Tor Project blog
N
News | PayPal Newsroom
A
Arctic Wolf
有赞技术团队
有赞技术团队
博客园 - Franky
Vercel News
Vercel News
宝玉的分享
宝玉的分享
Application and Cybersecurity Blog
Application and Cybersecurity Blog

Kubernetes

K8s 发布失败后,大家第一眼先看哪? - V2EX 基于终端 TUI 的 k8s 运维工具 运维 help 运维,开源一个桌面端 K8S 多集群管理工具: https://github.com/eryajf/kite-desktop - V2EX 基于 K8S 实现的无限扩展的 tikrok v3 企业版 - V2EX 怎么优化集群上大量 crontab 执行问题 - V2EX K8s Admin:一个轻量级的多集群 Kubernetes 管理平台 - V2EX K8S 网关求助, 兼容老 HTTP 协议和老 TLS 版本 - V2EX 初学 k8s,如何解决网络下载慢的问题? - V2EX 在阿里云上搭建 K8S 的最佳实践是什么? - V2EX [求助] sealos 私有化部署失败 - V2EX K8s etcd 恢复 - V2EX 大家在生产环境使用 Redis on K8s 的方案是什么? - V2EX Claude Code Skill + K8S 安全审计有没有搞头? - V2EX 捡了点垃圾,打算在家里玩 K3S,求创意 - V2EX istio 的 ambient 模式现在成熟了吗? - V2EX 轻量的 K8s 镜像自动更新工具: kube-watchtower - V2EX openwrt + pve (pve 上部署 k8s) 能够实现 将 op 上的 ipv6-pd 动态的分配到 k8s svc 上吗?当 ra 通告到达时能够自动更新的程度。 - V2EX 有一些 Golang/k8s 基础,想转行做 云原生开发 我还需要学什么? - V2EX 有什么可以快速验证应用部署 K8S 的办法么? - V2EX 有没有办法实现一个对外服务就可以访问 k8s 集群内的所有服务? - V2EX k8s ingress 转发会把 encode 后的 uri 还原成转义前的字符串 - V2EX k8s 下 nfs-provisioner 迁移 - V2EX K8S 中的 POD,如何安全的执行 docker build? - V2EX k8s 的一些问题 - V2EX 有人用过 victoria metrics stack 吗? - V2EX django 应用里面的脚本怎么在 k8s 平台启动更合适? - V2EX kubesphere 直接闭源下线 怎么看? - V2EX IDEA 本地调试 Spring Cloud 项目,如何调用 k8s 集群里的 svc ip - V2EX 有没有 k8s + ingress +frp 这种方案 - V2EX Gitops 中涉及敏感信息推荐用什么工具呢? - V2EX 你认为什么规模的公司适合使用 k8s? - V2EX 请问大家所在公司的 k8s 集群 cni 和 cri 选型是什么? - V2EX 求大神指点在 k3s 上面启动容器报错 libc.so.6: invalid ELF header milvus 应该怎么入手排查 - V2EX 搞了一个 kubernetes dashboard - V2EX gitlab runner in k8s 构建镜像的最佳实战是什么 - V2EX 认真请教有什么好的方式可以深入了解学习 k8s - V2EX 各位是如何在 k8s 中做镜像构建的? - V2EX KubeCon China 2025 见闻 单机能不能用来学习 K8S - V2EX k8s 使用调研 - V2EX 请问现在大佬们公司都是用的什么 k8s 可视化工具 [开源自荐] 搞了一个 SSH 和 K8s 连接信息的管理小工具(仅限 Mac) 开源小白,最近开源了个练手新项目 CILIKUBE,欢迎大佬们 Star! 再也不用记 k8s 的命令了 - V2EX 救救我~~, k8s 的 containerd 的镜像加速还有那些办法可以用呀 - V2EX 昨天 rancher 给我挖了一个大坑 - V2EX 不懂就问: kubeadm 能否用于生产?和 kubespray 区别是什么? - V2EX 新人练手请教 - V2EX 大家公司的基础服务有哪些是二进制包方式部署在服务器上的? - V2EX 想学习 K8S,请问大佬们应该怎么入门呢? 有人用过 open-local
求份搭建高可用 k8s 的教程 - V2EX
sakurawzt · 2025-10-30 · via Kubernetes

自己玩可以如果企业搭建先建 ETCD ,家里玩尽量用 Debian ,Ubuntu 等用的比较多的,别弄国产
要先弄 Keeplived + HA

*前提:*

```
1. 选择官方推荐版本并且不要选择最新版的
2. 国内存在着镜像拉取问题
3. 如果服务没起来需要看一下 containerd 服务
```

*准备工作:*

```
1. 确定机器的信息,操作系统,CPU 架构
1. 操作系统
2. CPU 架构
2. 时区设置
1. 配置系统时区: timedatectl set-timezone Asia/Shanghai
2. 设置本地 RTC 为 0: timedatectl set-local-rtc 0
3. 验证时区设置: timedatectl show --property=Timezone
4. 验证 RTC 设置: timedatectl show --property=RTC
3. 加载内核模块
*需要加载['br_netfilter', 'overlay']*
1. 查看/etc/modules-load.d,目录是否存在内核模块文件: ls /etc/modules-load.d/ | grep "k8s.conf"
2. 如果不存在
1. 创建模块加载配置文件: vi k8s.conf
2. 写入模块加载文件:tee >

<<EOF br_netfilter \n overlay \n EOF
3. 临时加载模块: modprobe overlay br_netfilter
4. 加载模块:

5. 验证模块是否成功加载

4. 关闭防火墙
1. 常用的防火墙: ['firewalld', 'ufw', 'iptables']
2. 检查服务是否运行: systemctl is-active <service-name>
3. 禁用防火墙服务
1. 停止服务: systemctl stop <service-name>
2. 禁止开机自启: systemctl disable <serivce-name>
4. 额外操作:
firewalld: firewall-cmd --state && firewall-cmd --permanent --shutdown
ufw: ufw disable
iptables: iptables -F && iptables -X && iptables -t nat -F && iptables -t nat -X && iptables -t mangle -F && iptables -t manage -X
5. 交换分区
1. 检查交换分区: free -h && swapon --show
2. 临时关闭交换分区: swapoff -a
3. 永久关闭交换分区
1. 注释掉

文件中关于 swap 的配置:

6. 修改内核参数:
1. net.bridge.bridge-nf-call-ip6tables = 1
2. net.bridge.bridge-nf-call-iptables = 1
3. net.ipv4.ip_forward = 1
```

*部署组件:*

````
Dokcer [https://download.docker.com/linux/static/stable/]( https://download.docker.com/linux/static/stable/?_gl=1*1w17yhs*_ga*OTg3MzYwNS4xNzQzOTA0MTQ2*_ga_XJWPQMJYHQ*MTc0NDYwMDEwMC4zLjEuMTc0NDYwMDExNi40NC4wLjA.)

```
export KUBE_VERSION=<version>
export ARCH=<arch>
export KUBEADM_URL=https://dl.k8s.io/release/<KUBE_VERSION>/bin/linux/<ARCH>/kubeadm
export KUBECTL_URL=https://dl.k8s.io/release/<KUBE_VERSION>/bin/linux/<ARCH>/kubectl
export KUBELET_URL=https://dl.k8s.io/release/<KUBE_VERSION>/bin/linux/<ARCH>/kubelet
```

1. 安装 Docker:
1. 下载安装包: curl -OL <docker_url>
2. 解压安装包: tar -xf <tar_name> && sudo mv docker/* /usr/local/bin/
2. 安装 kubeadm,kubectl,kubelet:
1. 下载二进制: curl -OL $(echo $KUBEADM_URL) && curl -OL $(echo $KUBECTL_URL) && curl -OL $(echo $KUBECTL_URL)
2. 移动文件位置: chmod +x kubeadm kubectl kubelet && sudo mv kubeadm kubectl kubelet /usr/local/bin/
3. 创建 containerd.service:
1. 创建 containerd 配置文件:

2. 创建 containerd 服务文件:

```
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
Wants=network.target

[Service]
Type=notify
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd
TimeoutStartSec=0
RestartSec=10
Restart=always
Delegate=yes
KillMode=process
OOMScoreAdjust=-999
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Environment="CGROUP_DRIVER=systemd"

[Install]
WantedBy=multi-user.target
```
4. 创建 docker.service:
1. 创建 docker 服务文件: /etc/systemd/system/docker.service
```
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
BindsTo=containerd.service
After=network-online.target containerd.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd --containerd=/run/containerd/containerd.sock
Restart=always
RestartSec=5
TimeoutStartSec=0
Delegate=yes
KillMode=process
OOMScoreAdjust=-999
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
EnvironmentFile=-/etc/docker/daemon.json

[Install]
WantedBy=multi-user.target
```
5. 创建 kubeadm-kubelet 配置:
1. 创建 kubeadm-kubelet: /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
```
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=

/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
EnvironmentFile=-/etc/sysconfig/kubelet
ExecStart=
ExecStart=/usr/local/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
```
6. 创建 kubelet.service:
*非必须*
1.创建 kubelet 服务文件: /etc/systemd/system/kubelet.service
```
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/home/
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/kubelet
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target
```
7. 启动服务
1. 重载 systemd 配置: systemctl daemon-reload
2. 组件加入开机自启:
1. containerd: systemctl enable --now containerd.service
2. docker: systemctl enable --now docker.service
3. kubelet: systemctl enable --now kubelet.service
````

*部署 k8s*

````
```bash
#!/bin/bash
# 这里因为环境的不同的只提供一个基础的模版
# <*> 需要按环境替换
# <cri_socket> 默认地址: unix:///run/containerd/containerd.sock
# <controlPlaneEndpoint> 部署多 master 需要这个控制平台地址不能为空
# <san> apiservice 通过证书 san 校验,被请求的地址是否在证书内
# <serviceSubnet> k8s 服务网络段
# <podSubnet> k8s Pod 网络段
# <etcd_data_dir> etcd 存储的地址
# 具体的配置可以仔细阅读 https://kubernetes.io/zh-cn/docs/reference/setup-tools/kubeadm

tee kubeadm-init.conf << EOF
apiVersion: kubeadm.k8s.io/v1beta4
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: <bootstrapTokens_token>
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: <localAPIEndpoint>
bindPort: <bind_port>
nodeRegistration:
criSocket: <cri_socket>
imagePullPolicy: IfNotPresent
imagePullSerial: true
timeouts:
controlPlaneComponentHealthCheck: 4m0s
discovery: 5m0s
etcdAPICall: 2m0s
kubeletHealthCheck: 4m0s
kubernetesAPICall: 1m0s
tlsBootstrap: 5m0s
upgradeManifests: 5m0s
---
apiVersion: kubeadm.k8s.io/v1beta4
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
apiServer:
certSANs:
- <san>
controlPlaneEndpoint: <controlPlaneEndpoint>
controllerManager: {}
dns: {}
encryptionAlgorithm: RSA-2048
etcd:
local:
dataDir: <etcd_data_dir>
imageRepository: registry.k8s.io
kind: ClusterConfiguration
kubernetesVersion: 1.32.3
networking:
dnsDomain: cluster.local
serviceSubnet: <serviceSubnet>
podSubnet: <podSubnet>
proxy: {}
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "iptables"
EOF

# 启动 k8s
kubeadm init --config kubeadm-init.conf
```

# 后续: 可以根据需要部署 CNI,CSI

# CNI:
# export calico_version=v3.27.4
# calico : https://raw.githubusercontent.com/projectcalico/calico/$calico_version/manifests/calico.yaml

# CSI: NFS 这个很简单!,CEPH 部署麻烦些
````

*额外的说明*

```
*k8s 加入节点*
1. 如果初始化的没有配置 controlPlaneEndpoint ,现在需要加 master 节点
1. 配置控制平面地址: kubeadm init --control-plane-endpoint <control-plane-endpoint> --upload-certs
2. 加入 control_plane
1. 创建新的令牌: kubeadm token create --print-join-command --certificate-key $(kubeadm init phase upload-certs --upload-certs | tail -n 1)
3. 加入 worker
1. 创建新的令牌: kubeadm token create --print-join-command

*k8s 镜像*
1. 查看镜像:kubeadm config images list
```