公司动态
企业级堡垒机JUMPSERVER\K8S的部署、常见资源作用及yaml字段含义
任务完整答案分为三大模块JumperServer 部署 组件总结K8s 高可用部署 K8s 资源 YAML 详解Jumpserver你写的 JumperServer 标准名称Jumpserver 堡垒机一、任务 1Jumpserver 部署 纳管实验节点环境说明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 节点完整流程创建资产左侧【资产授权】→【创建资产】 填写资产名称、IP 地址、系统类型 Linux、ssh 端口 22创建账号【账号管理】→【系统用户】→创建 ssh 登录账号如 root两种模式密码认证 / 密钥认证推荐密钥资产授权【权限管理】→【资产授权】 把 用户 (运维账号) ↔ 资产 ↔ 系统用户 三者绑定测试连接Web 终端 / Guacamole 图形终端直接连接实验节点完成纳管关键点实验节点需要开放 22 端口堡垒机网络可达目标节点。二、任务 2Jumpserver 组件、作用、核心配置文件解析2.1 Jumpserver 五大核心组件Jumpserver 采用分布式微服务架构表格组件作用Core核心服务主 API 服务所有业务逻辑处理权限、资产、用户认证、任务调度是整个堡垒机的控制中心。端口 8080KokoSSH/Web Terminal 终端组件提供 web 端 ssh 字符终端处理用户 SSH 会话连接LionGuacamole图形化远程组件支持 RDP (Windows)、VNC 图形桌面访问Celery异步任务队列。执行离线命令、录像转码、资产巡检、定时任务、日志清理Redis缓存 消息队列存储会话临时信息、celery 任务消息MySQL/MariaDB持久化数据库存储用户、资产、权限、操作日志、录像元数据补充Web 前端Nginx 反向代理统一入口 80/443分发请求给 Core/Koko/Lion2.2 核心配置文件路径一键安装模式安装根目录默认/opt/jumpserver主配置文件/opt/jumpserver/config/config.txt旧版本为 config.py新版统一使用 config.txt配置文件重点字段解析ini# 1. 数据库配置 DB_ENGINEmysql DB_HOST127.0.0.1 DB_PORT3306 DB_NAMEjumpserver DB_USERjumpserver DB_PASSWORDxxxxxx # 作用连接数据库存储所有堡垒机业务数据 # 2. Redis配置 REDIS_HOST127.0.0.1 REDIS_PORT6379 REDIS_PASSWORD # 缓存与异步任务消息中间件 # 3. 密钥非常重要生产必须修改 SECRET_KEYxxxx BOOTSTRAP_TOKENxxxx # SECRET_KEY加密密钥加密密码、会话凭证丢失无法解密已有账号密码 # BOOTSTRAP_TOKENkoko/lion 向core注册通信令牌集群多节点必须保持一致 # 4. 服务监听地址 CORE_HOSThttp://127.0.0.1:8080 # Koko、Lion通过这个地址和Core通信 # 5. 文件存储 VIDEO_ROOT/opt/jumpserver/media/videos # 存放会话录像文件生产建议挂载独立磁盘/NFS2.3 常用控制命令bash三、任务 3高可用 Kubernetes (K8s) 部署方案 K8s 资源总结 YAML 字段详解3.1 高可用 K8s 架构简述标准 3 主架构拓扑3 台 Master 控制节点etcd 集群、kube-apiserver、kube-controller-manager、kube-schedulerN 台 Worker 工作节点kubelet、kube-proxy负载均衡HA 方案二选一1硬件 LB / HaproxyKeepalived推荐生产 2云厂商 SLBapiserver 统一入口所有节点、kubectl 都访问 LB 地址实现 master 高可用部署工具选择kubeadm实验环境最常用部署简要流程所有节点关闭 swap、加载内核模块、配置 sysctl、主机名互通所有节点安装 docker/containerd 容器运行时安装 kubeadm、kubelet、kubectl同一版本部署 HaproxyKeepalived 实现 apiserver VIP使用 kubeadm init 初始化第一个 master 节点另外两个 master 执行kubeadm join --control-plane加入控制平面worker 节点执行 kubeadm join 加入集群安装网络插件Calico/Flannel部署 ingress、metrics-server 等组件验证集群高可用关闭任意一台 master集群业务不受影响实验验证kubectl get nodes全部 Ready停机一台 masterpod 正常调度。3.2 K8s 常见资源对象及作用表格资源名称资源 Kind核心作用PodPodK8s 最小调度单元一个或多个容器组成短暂生命周期。业务真正运行载体DeploymentDeployment无状态应用控制器管理 Pod 副本实现扩缩容、滚动更新、自愈StatefulSetStatefulSet有状态应用mysql、redis 集群稳定网络标识、稳定存储、有序启停DaemonSetDaemonSet每个节点运行一个 Pod日志收集、监控 agentnode-exporterJobJob一次性任务执行完成即退出CronJobCronJob定时 Job类似 linux crontab 定时任务ServiceService为一组 Pod 提供固定访问入口实现服务发现、负载均衡屏蔽 Pod IP 变化ConfigMapConfigMap存放非敏感配置文件、环境变量明文SecretSecret存放敏感信息密码、密钥、证书base64 编码加密可选IngressIngress七层 HTTP/HTTPS 反向代理域名路由对外暴露服务NamespaceNamespace资源隔离集群内虚拟分区区分开发 / 测试 / 生产环境PersistentVolume(PV)PV存储资源集群持久化存储卷PersistentVolumeClaim(PVC)PVC存储申请用户声明需要多大存储绑定 PV3.3 YAML 通用基础字段含义标准 k8s yaml 模板解析yaml# 1. apiVersionAPI资源版本不同资源使用不同版本 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持续调谐重点字段总结apiVersionPod/core/v1Deployment/StatefulSet → apps/v1Ingress → networking.k8s.io/v1selectorService、Deployment 依靠标签匹配 Pod标签不匹配则无法关联replicas期望副本数控制器持续保证运行副本数量imagePullPolicyAlways每次都拉取IfNotPresent本地有就不拉常用Never只使用本地镜像requests /limitsK8s 调度依据没有设置 limits 容易出现节点资源耗尽3.4 Service YAML 简易示例补充yamlapiVersion: 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云厂商负载均衡