ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

企业级堡垒机JUMPSERVER\K8S的部署、常见资源作用及yaml字段含义

2026/8/5 10:35:56 拓冰建站 浏览量
企业级堡垒机JUMPSERVER\K8S的部署、常见资源作用及yaml字段含义

任务完整答案(分为三大模块:JumperServer 部署 + 组件总结;K8s 高可用部署 + K8s 资源 & YAML 详解)

Jumpserver(你写的 JumperServer 标准名称:Jumpserver 堡垒机)

一、任务 1:Jumpserver 部署 + 纳管实验节点

环境说明

1.1 一键部署步骤(Ubuntu24.04 示例)

bash

#1 关闭防火墙

2 国内官方源(不要用github地址,极易超时)
curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash

# 3 启动服务

访问地址:http://服务器IP:80默认账号密码:admin / ChangeMe,首次登录强制修改密码

1.2 纳管实验 Linux 节点完整流程

  1. 创建资产左侧【资产授权】→【创建资产】 填写:资产名称、IP 地址、系统类型 Linux、ssh 端口 22
  2. 创建账号【账号管理】→【系统用户】→创建 ssh 登录账号(如 root)

两种模式:密码认证 / 密钥认证(推荐密钥)

  1. 资产授权【权限管理】→【资产授权】 把 用户 (运维账号) ↔ 资产 ↔ 系统用户 三者绑定
  2. 测试连接Web 终端 / Guacamole 图形终端直接连接实验节点,完成纳管

关键点:实验节点需要开放 22 端口;堡垒机网络可达目标节点。


二、任务 2:Jumpserver 组件、作用、核心配置文件解析

2.1 Jumpserver 五大核心组件

Jumpserver 采用分布式微服务架构

表格

组件作用
Core(核心服务)主 API 服务,所有业务逻辑;处理权限、资产、用户认证、任务调度;是整个堡垒机的控制中心。端口 8080
KokoSSH/Web Terminal 终端组件,提供 web 端 ssh 字符终端,处理用户 SSH 会话连接
Lion(Guacamole)图形化远程组件,支持 RDP (Windows)、VNC 图形桌面访问
Celery异步任务队列。执行离线命令、录像转码、资产巡检、定时任务、日志清理
Redis缓存 + 消息队列;存储会话临时信息、celery 任务消息
MySQL/MariaDB持久化数据库:存储用户、资产、权限、操作日志、录像元数据

补充:

  • Web 前端:Nginx 反向代理,统一入口 80/443,分发请求给 Core/Koko/Lion

2.2 核心配置文件路径(一键安装模式)

安装根目录默认:/opt/jumpserver主配置文件:/opt/jumpserver/config/config.txt

旧版本为 config.py,新版统一使用 config.txt

配置文件重点字段解析

ini

# 1. 数据库配置 DB_ENGINE=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_NAME=jumpserver DB_USER=jumpserver DB_PASSWORD=xxxxxx # 作用:连接数据库,存储所有堡垒机业务数据 # 2. Redis配置 REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_PASSWORD= # 缓存与异步任务消息中间件 # 3. 密钥(非常重要,生产必须修改!) SECRET_KEY=xxxx BOOTSTRAP_TOKEN=xxxx # SECRET_KEY:加密密钥,加密密码、会话凭证;丢失无法解密已有账号密码 # BOOTSTRAP_TOKEN:koko/lion 向core注册通信令牌,集群多节点必须保持一致 # 4. 服务监听地址 CORE_HOST=http://127.0.0.1:8080 # Koko、Lion通过这个地址和Core通信 # 5. 文件存储 VIDEO_ROOT=/opt/jumpserver/media/videos # 存放会话录像文件,生产建议挂载独立磁盘/NFS

2.3 常用控制命令

bash


三、任务 3:高可用 Kubernetes (K8s) 部署方案 + K8s 资源总结 + YAML 字段详解

3.1 高可用 K8s 架构简述(标准 3 主架构)

拓扑:

  • 3 台 Master 控制节点:etcd 集群、kube-apiserver、kube-controller-manager、kube-scheduler
  • N 台 Worker 工作节点:kubelet、kube-proxy
  • 负载均衡(HA 方案二选一)1)硬件 LB / Haproxy+Keepalived(推荐生产) 2)云厂商 SLB

apiserver 统一入口,所有节点、kubectl 都访问 LB 地址,实现 master 高可用

部署工具选择:kubeadm(实验环境最常用)部署简要流程:

  1. 所有节点:关闭 swap、加载内核模块、配置 sysctl、主机名互通
  2. 所有节点安装 docker/containerd 容器运行时
  3. 安装 kubeadm、kubelet、kubectl(同一版本)
  4. 部署 Haproxy+Keepalived 实现 apiserver VIP
  5. 使用 kubeadm init 初始化第一个 master 节点
  6. 另外两个 master 执行kubeadm join --control-plane加入控制平面
  7. worker 节点执行 kubeadm join 加入集群
  8. 安装网络插件(Calico/Flannel)
  9. 部署 ingress、metrics-server 等组件
  10. 验证集群高可用:关闭任意一台 master,集群业务不受影响

实验验证:kubectl get nodes全部 Ready;停机一台 master,pod 正常调度。

3.2 K8s 常见资源对象及作用

表格

资源名称资源 Kind核心作用
PodPodK8s 最小调度单元;一个或多个容器组成,短暂生命周期。业务真正运行载体
DeploymentDeployment无状态应用控制器;管理 Pod 副本,实现扩缩容、滚动更新、自愈
StatefulSetStatefulSet有状态应用(mysql、redis 集群);稳定网络标识、稳定存储、有序启停
DaemonSetDaemonSet每个节点运行一个 Pod;日志收集、监控 agent(node-exporter)
JobJob一次性任务,执行完成即退出
CronJobCronJob定时 Job,类似 linux crontab 定时任务
ServiceService为一组 Pod 提供固定访问入口,实现服务发现、负载均衡;屏蔽 Pod IP 变化
ConfigMapConfigMap存放非敏感配置文件、环境变量(明文)
SecretSecret存放敏感信息:密码、密钥、证书(base64 编码,加密可选)
IngressIngress七层 HTTP/HTTPS 反向代理,域名路由,对外暴露服务
NamespaceNamespace资源隔离,集群内虚拟分区,区分开发 / 测试 / 生产环境
PersistentVolume(PV)PV存储资源;集群持久化存储卷
PersistentVolumeClaim(PVC)PVC存储申请,用户声明需要多大存储,绑定 PV

3.3 YAML 通用基础字段含义(标准 k8s yaml 模板解析)

yaml

# 1. apiVersion:API资源版本,不同资源使用不同版本 apiVersion: apps/v1 # 2. kind:资源类型(Deployment/Pod/Service等) kind: Deployment # 3. metadata:元数据信息 metadata: name: nginx-demo # 资源名称,同namespace唯一 namespace: default # 所属命名空间,不写默认default labels: # 标签,用于筛选、service关联pod app: nginx annotations: # 注解,附加扩展信息(ingress配置、监控注解) author: test # 4. spec:期望状态(核心定义,告诉k8s你想要什么) spec: replicas: 3 # pod副本数量 selector: # 标签选择器,匹配下方pod模板的labels matchLabels: app: nginx template: # Pod模板,创建pod的模板 metadata: labels: app: nginx spec: containers: # 容器列表 - name: nginx # 容器名称 image: nginx:1.24 # 镜像名称 imagePullPolicy: IfNotPresent # 镜像拉取策略 ports: - containerPort: 80 # 容器内部监听端口 resources: # 资源限制、请求 requests: # 调度保证最小资源 cpu: 100m memory: 128Mi limits: # 最大资源上限,防止抢占节点资源 cpu: 500m memory: 256Mi env: # 环境变量 - name: TEST_ENV value: "hello" volumeMounts: # 存储挂载 - name: html-volume mountPath: /usr/share/nginx/html volumes: # 定义存储卷 - name: html-volume emptyDir: {} # 5. status:【只读】当前实际状态,不需要手动编写yaml # kubectl get xxx -o yaml 才会看到,控制器对比spec期望状态和status,持续调谐
重点字段总结
  1. apiVersionPod/core/v1;Deployment/StatefulSet → apps/v1;Ingress → networking.k8s.io/v1
  2. selectorService、Deployment 依靠标签匹配 Pod,标签不匹配则无法关联
  3. replicas期望副本数;控制器持续保证运行副本数量
  4. imagePullPolicy
    • Always:每次都拉取
    • IfNotPresent:本地有就不拉(常用)
    • Never:只使用本地镜像
  5. requests /limits:K8s 调度依据,没有设置 limits 容易出现节点资源耗尽

3.4 Service YAML 简易示例补充

yaml

apiVersion: v1 kind: Service metadata: name: nginx-svc spec: type: ClusterIP # 类型:ClusterIP/NodePort/LoadBalancer/ExternalName selector: app: nginx # 和pod标签匹配 ports: - port: 80 # service端口(集群内部访问端口) targetPort: 80 # pod容器端口

Service type 说明:

  • ClusterIP:集群内部访问(默认)
  • NodePort:节点端口暴露,外部可访问
  • LoadBalancer:云厂商负载均衡