con un clic
k8s-install
K8s 集群安装指导。通过对话询问用户安装方式、节点信息,分步骤输出命令,每步等待用户确认。不嵌入安装包,优先使用阿里云镜像下载,国内网络更稳定。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
K8s 集群安装指导。通过对话询问用户安装方式、节点信息,分步骤输出命令,每步等待用户确认。不嵌入安装包,优先使用阿里云镜像下载,国内网络更稳定。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
| name | k8s-install |
| description | K8s 集群安装指导。通过对话询问用户安装方式、节点信息,分步骤输出命令,每步等待用户确认。不嵌入安装包,优先使用阿里云镜像下载,国内网络更稳定。 |
优先级说明:本技能为通用知识库,先于数据库 system_prompt 注入。数据库中的定制(如安装路径、版本偏好)会追加在后,优先于本技能默认值。改数据库即可生效,无需改 SKILL。
本技能用于指导用户安装 Kubernetes 集群,不嵌入任何二进制,优先使用阿里云镜像下载,国内网络更稳定。安装涉及 containerd、CNI、kubeadm/二进制等,需分步骤进行,每步后等待用户确认。
所有 URL 和命令中的版本号必须使用占位符,并根据「用户指定」或「默认策略」动态替换:
| 占位符 | 含义 | 示例值 | 说明 |
|---|---|---|---|
{K8S_VERSION} | K8s 版本 | v1.29、v1.30、v1.31 | 用户指定或询问后确认,格式 vX.Y 或 vX.Y.Z |
{CONTAINERD_VERSION} | containerd 版本 | 1.7.18、1.7.30 | 用户指定或推荐与 K8s 兼容的稳定版 |
{CALICO_VERSION} | Calico 版本 | v3.28、v3.29 | 用户指定或推荐与 K8s 兼容的版本 |
{RUNC_VERSION} | runc 版本 | 1.1.12 | containerd 依赖 |
{CNI_PLUGINS_VERSION} | CNI 插件版本 | 1.4.0 | 如 v1.4.0 |
{ETCD_VERSION} | etcd 版本 | v3.5.16、v3.5.17 | 与 K8s 版本兼容,推荐 3.5.x |
Calico、containerd、etcd 等版本需与 K8s 版本兼容,用户未指定时按 K8s 版本选取对应兼容的稳定版。
规则:
{xxx} 未替换方式一:yum/apt 安装(推荐):
https://mirrors.aliyun.com/kubernetes-new/core/stable/{K8S_VERSION}/rpm/https://mirrors.aliyun.com/kubernetes-new/core/stable/{K8S_VERSION}/deb/https://mirrors.aliyun.com/kubernetes-new/core/stable/{K8S_VERSION}/rpm/repodata/repomd.xml.key方式二:二进制:https://dl.k8s.io/{K8S_VERSION}/bin/linux/amd64/{kubectl|kubelet|kubeadm}
方式一:阿里云 docker-ce 源:yum/apt install containerd.io(repo 无版本占位符)
方式二:二进制:https://ghproxy.com/https://github.com/containerd/containerd/releases/download/v{CONTAINERD_VERSION}/containerd-{CONTAINERD_VERSION}-linux-amd64.tar.gz
https://ghproxy.com/https://github.com/opencontainers/runc/releases/download/v{RUNC_VERSION}/runc.amd64Calico:
https://ghproxy.com/https://raw.githubusercontent.com/projectcalico/calico/{CALICO_VERSION}/manifests/calico.yamlhttps://ghproxy.com/https://raw.githubusercontent.com/projectcalico/calico/{CALICO_VERSION}/manifests/canal.yamlFlannel:https://ghproxy.com/https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml(无版本占位符,用 latest)
CNI 二进制:https://ghproxy.com/https://github.com/containernetworking/plugins/releases/download/v{CNI_PLUGINS_VERSION}/cni-plugins-linux-amd64-v{CNI_PLUGINS_VERSION}.tgz
registry.aliyuncs.com/google_containers--image-repository=registry.aliyuncs.com/google_containershttps://ghproxy.com/https://github.com/etcd-io/etcd/releases/download/{ETCD_VERSION}/etcd-{ETCD_VERSION}-linux-amd64.tar.gzhttps://github.com/etcd-io/etcd/releases/download/{ETCD_VERSION}/etcd-{ETCD_VERSION}-linux-amd64.tar.gzetcd 部署模式:
initial-cluster、initial-cluster-token,奇数节点(3/5/7)保证 quorum在输出安装命令前,先判断目标机器网络条件,并选择对应策略:
公网可达(可直接访问 mirrors.aliyun.com / github / registry)
内网受限(目标机不能直连公网,但可访问公司内网源)
{INTERNAL_YUM_REPO}{INTERNAL_APT_REPO}{INTERNAL_BINARY_REPO}(二进制包下载地址){INTERNAL_IMAGE_REGISTRY}(容器镜像仓库)完全离线(目标机既不能公网也不能内网源)
kubeadm init 使用内网镜像仓库:--image-repository={INTERNAL_IMAGE_REGISTRY}{INTERNAL_BINARY_REPO},例如:
{INTERNAL_BINARY_REPO}/kubernetes/{K8S_VERSION}/kubeadm{INTERNAL_BINARY_REPO}/containerd/{CONTAINERD_VERSION}/containerd-{CONTAINERD_VERSION}-linux-amd64.tar.gzscp/rsync/u盘/NAS 分发到目标节点ctr -n k8s.io images import k8s-images.tardocker load -i k8s-images.tar 后推送到内网私有仓库kubeadm initkubeadm join当任务开头包含 【环境预配置的节点信息】 时,表示用户已在环境中配置好 master/worker/etcd 节点 IP,直接使用,无需再询问:
kubeadm init 相关命令,针对所列 IPkubeadm join 相关命令,针对所列 IP(join 命令需在 master 执行 init 后获取 token 和 hash)initial-cluster(如 etcd1=https://IP1:2380,etcd2=https://IP2:2380,etcd3=https://IP3:2380),奇数节点保证 quorum按节点角色自动区分 init、join 与 etcd 安装,输出命令时用预配置的 IP 替换占位符。
若任务未包含预配置节点信息,则先询问或确认:
每步只输出一个阶段的命令,以 Final Answer: 开头:
输出下一步命令,同样以 Final Answer: 开头,末尾加确认提示
在内网受限/离线场景下,正式安装前先输出并引导用户完成以下检查:
DNS 与主机名
/etc/hostshostnamectl 与规划一致,避免 kubelet 节点名混乱时间同步(NTP/Chrony)
timedatectl 显示 NTP 正常内核与网络参数
br_netfilter、overlay 模块已加载net.ipv4.ip_forward=1、bridge-nf-call-iptables=1容器运行时一致性
SystemdCgroup = true(与 kubelet cgroup driver 对齐)防火墙与端口策略
内网仓库与证书
离线物料完整性(离线场景)
避免冲突
kubeadm reset)若自检有未通过项,先修复未通过项,再继续安装步骤输出。
以下细节在 OpenCloudOS 等 RHEL 系发行版中很关键,输出步骤时应按实际系统补齐:
主机名与 hosts 映射(必须先做)
hostnamectl set-hostname <name>/etc/hosts 互相可解析(master/worker/etcd)SELinux 与防火墙策略(二选一)
ipvs/ipset 模块准备(kube-proxy 使用 ipvs 时建议)
ipset ipvsadmip_vs、ip_vs_rr、ip_vs_wrr、ip_vs_sh、nf_conntrackcontainerd 配置关键项(必须明确)
containerd config default > /etc/containerd/config.tomlSystemdCgroup = trueunix:///run/containerd/containerd.sock)CNI 插件路径与发行版差异
/opt/cni/bin/usr/libexec/cni,需复制或在配置中明确插件目录时间同步修复命令(chrony)
标准重置/回滚模板(排错必备)
kubeadm reset -f/etc/cni/net.d以下为模板格式,输出给用户时必须已将占位符替换为具体版本(如用户指定 v1.31,则 baseurl 中为 v1.31):
# CentOS/RHEL:配置阿里云 K8s 源(替换 K8S_VERSION,如 v1.31)
export K8S_VERSION=v1.31 # 或用户指定的版本
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/${K8S_VERSION}/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/${K8S_VERSION}/rpm/repodata/repomd.xml.key
EOF
yum install -y kubelet kubeadm kubectl --nogpgcheck
systemctl enable kubelet
# 二进制方式:containerd(替换 CONTAINERD_VERSION)
export CONTAINERD_VERSION=1.7.18 # 或用户指定
curl -LO "https://ghproxy.com/https://github.com/containerd/containerd/releases/download/v${CONTAINERD_VERSION}/containerd-${CONTAINERD_VERSION}-linux-amd64.tar.gz"
tar Cxzvf /usr/local containerd-${CONTAINERD_VERSION}-linux-amd64.tar.gz
# 安装 Calico CNI(替换 CALICO_VERSION,如 v3.29)
export CALICO_VERSION=v3.29 # 或用户指定
kubectl apply -f https://ghproxy.com/https://raw.githubusercontent.com/projectcalico/calico/${CALICO_VERSION}/manifests/calico.yaml
# kubeadm init(pod-network-cidr 按 CNI 类型调整,Calico 常用 192.168.0.0/16)
kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=192.168.0.0/16
# 内网受限场景:kubeadm init 使用内网镜像仓库
export INTERNAL_IMAGE_REGISTRY=registry.infra.local/google_containers
kubeadm init --image-repository=${INTERNAL_IMAGE_REGISTRY} --pod-network-cidr=192.168.0.0/16
# 内网受限场景:使用内网 YUM 源(示例)
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl={INTERNAL_YUM_REPO}/kubernetes/{K8S_VERSION}/rpm/
enabled=1
gpgcheck=0
EOF
yum install -y kubelet kubeadm kubectl
# 完全离线场景:导入镜像离线包(示例)
ctr -n k8s.io images import /opt/offline/k8s-images.tar
# etcd 单机(1 节点,替换 ETCD_VERSION 如 v3.5.16)
export ETCD_VERSION=v3.5.16
curl -LO "https://ghproxy.com/https://github.com/etcd-io/etcd/releases/download/${ETCD_VERSION}/etcd-${ETCD_VERSION}-linux-amd64.tar.gz"
tar xzf etcd-${ETCD_VERSION}-linux-amd64.tar.gz
cp etcd-${ETCD_VERSION}-linux-amd64/etcd* /usr/local/bin/
# 配置 systemd 服务 /etc/systemd/system/etcd.service,启动 etcd
# etcd 集群(≥3 节点,替换 IP1/IP2/IP3 为实际 IP)
# 每节点:ETCD_NAME=etcd1(或 etcd2、etcd3)
# initial-cluster=etcd1=https://IP1:2380,etcd2=https://IP2:2380,etcd3=https://IP3:2380
# 奇数节点(3/5/7)保证 quorum
适用角色:k8s-installer
评审模式:强约束模式(不走极速评审)
必查项:
发布底线:
Grafana 仪表盘查询。当目标环境配置了 graf_url 时启用。用于列出仪表盘、获取仪表盘中的 PromQL 查询,便于复用已有面板的查询逻辑。
Kubernetes 集群巡检。当目标环境关联了 k8s_cluster_id 时启用。用于获取集群摘要、节点、命名空间、Pod、工作负载及事件,支持故障排查与资源分析。
Prometheus 指标查询与分析。当目标环境配置了 prom_url 时启用。用于执行 PromQL 查询、搜索指标、获取标签维度、异常检测与相关性分析。