使用 RKE 构建企业生产级 Kubernetes 集群六Rancher 托管 Kubernetes 集群与节点管理摘要本文深入讲解 Rancher 企业级 Kubernetes 管理平台的核心功能与最佳实践涵盖 Rancher 架构设计、高可用部署、集群导入与管理、节点管理、RBAC 权限控制、监控告警、应用商店等关键技术。通过详细的配置示例和实战案例帮助读者构建企业级 Kubernetes 管理平台。关键词RancherKubernetes 管理节点管理RBAC监控告警应用商店多集群管理1 引言1.1 Rancher 在企业级 Kubernetes 管理中的地位Rancher 是全球最流行的企业级 Kubernetes 管理平台根据 Gartner 和 Forrester 的报告全球用户超过 1 亿下载量超过 1 亿次企业采用率 60%财富 500 强企业中 60% 使用 Rancher管理 2000 万 节点全球管理超过 2000 万个 Kubernetes 节点1.2 Rancher 核心价值多集群管理统一管理本地、云端、边缘的 Kubernetes 集群简化运维可视化界面降低 Kubernetes 使用门槛安全合规内置 RBAC、审计日志、网络策略应用生态Helm 应用商店提供 200 企业应用监控告警内置 Prometheus Grafana 监控体系1.3 本文技术要点Rancher 架构设计组件解析、通信机制、高可用方案Rancher 部署实战Docker 安装、Kubernetes 安装、高可用配置集群管理RKE 集群创建、现有集群导入、云厂商集群对接节点管理节点驱动、节点模板、集群扩展权限控制全局权限、项目权限、RBAC 策略监控告警Prometheus 集成、告警规则、通知配置应用商店Helm Chart 管理、应用部署、版本升级2 Rancher 架构设计2.1 整体架构┌─────────────────────────────────────────────────────────┐ │ 用户界面层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Rancher UI │ │ CLI Tools │ │ API Client │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────┐ │ Rancher Server 集群 │ │ ┌─────────────────────────────────────────────────┐ │ │ │ Kubernetes Cluster │ │ │ │ ┌──────────┐ ┌────────── ┌──────────┐ │ │ │ │ │ Rancher │ │ Rancher │ │ Rancher │ │ │ │ │ │ Pod-1 │ │ Pod-2 │ │ Pod-3 │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ ┌──────────┐ ┌────────── ┌──────────┐ │ │ │ │ │ MySQL │ │ etcd │ │ Ingress │ │ │ │ │ └──────────┘ └──────────┘ └────────── │ │ │ └─────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────┐ │ 下游 Kubernetes 集群Downstream │ │ ┌──────────┐ ┌────────── ┌──────────┐ │ │ │ RKE │ │ EKS │ │ GKE │ │ │ │ Cluster │ │ Cluster │ │ Cluster │ │ │ └────────── └──────────┘ └──────────┘ │ │ ┌──────────┐ ┌────────── ┌──────────┐ │ │ │ AKS │ │ Import │ │ Edge │ │ │ │ Cluster │ │ Cluster │ │ Cluster │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────┘2.2 核心组件2.2.1 Rancher Server组件列表rancher/rancher主服务提供 API 和 UIrancher/fleetGitOps 引擎rancher/system-agent系统代理用于 RKE2/K3srancher/webhook准入控制 Webhookrancher/auth-proxy认证代理资源需求组件CPU内存存储Rancher Pod2 核4GB10GBetcd2 核4GB50GB SSDMySQL/MariaDB2 核4GB50GB2.2.2 Rancher Agent运行在下游集群负责与 Rancher Server 通信执行集群管理操作上报集群状态接收配置变更2.3 通信机制通信流程1. Rancher Agent 主动连接 Rancher ServerWebSocket 2. 建立隧道连接Tunnel 3. 用户通过 Rancher Server 访问下游集群 API 4. 请求通过隧道转发到下游集群 5. 响应通过隧道返回给用户安全机制TLS 加密通信Token 认证Service Account Token证书轮换每年自动轮换3 Rancher 高可用部署3.1 部署方案对比部署方案适用场景高可用复杂度成本Docker 单节点开发测试❌低低Kubernetes HA生产环境✅中中Rancher Prime超大规模✅高高3.2 Docker 安装开发测试# 单节点安装快速体验dockerrun-d--restartunless-stopped\--namerancher\-p80:80\-p443:443\--privileged\rancher/rancher:latest# 指定版本安装dockerrun-d--restartunless-stopped\--namerancher\-p80:80\-p443:443\-v/opt/rancher:/var/lib/rancher\--privileged\rancher/rancher:v2.7.9# 自定义证书dockerrun-d--restartunless-stopped\--namerancher\-p80:80\-p443:443\-v/etc/rancher/ssl/cert.pem:/etc/rancher/ssl/cert.pem\-v/etc/rancher/ssl/key.pem:/etc/rancher/ssl/key.pem\--privileged\rancher/rancher:latest# 查看安装日志dockerlogs-francher# 获取初始密码dockerlogs rancher21|grepBootstrap Password:3.3 Kubernetes 高可用部署生产环境3.3.1 前置条件集群要求Kubernetes 版本1.20 - 1.27节点数3 个 Master高可用资源每节点 4 核 CPU, 8GB 内存, 100GB 存储存储类需要默认 StorageClass支持 RWO3.3.2 Helm 安装# 添加 Rancher Helm 仓库helm repoaddrancher-latest https://releases.rancher.com/server-charts/latest helm repo update# 创建命名空间kubectl create namespace cattle-system# 安装 cert-manager证书管理kubectl apply-fhttps://github.com/cert-manager/cert-manager/releases/download/v1.13.2/cert-manager.yaml# 验证 cert-managerkubectl get pods-ncert-manager# 创建 IssuerLets Encryptcatrancher-issuer.yamlEOF apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: rancher spec: acme: server: https://acme-v02.api.letsencrypt.org/directory email: adminexample.com privateKeySecretRef: name: letsencrypt solvers: - http01: ingress: class: nginx EOFkubectl apply-francher-issuer.yaml# 安装 Rancherhelminstallrancher rancher-latest/rancher\--namespacecattle-system\--sethostnamerancher.example.com\--setbootstrapPasswordadmin\--setreplicas3\--setingress.tls.sourcecert-manager\--setcertmanager.version1.13.2# 验证安装kubectl-ncattle-system get deploy rancher kubectl-ncattle-system get pods# 查看服务kubectl-ncattle-system get svc# 获取访问地址kubectl-ncattle-system get ingress3.3.3 高可用优化# values.yaml 高可用配置replicas:3resources:limits:cpu:4memory:8Girequests:cpu:2memory:4Giaffinity:podAntiAffinity:preferredDuringSchedulingIgnoredDuringExecution:-weight:100podAffinityTerm:labelSelector:matchExpressions:-key:appoperator:Invalues:-ranchertopologyKey:kubernetes.io/hostname# 持久化存储persistence:enabled:truesize:50GistorageClass:nfs-client# 监控配置additionalLabels:monitoring.coreos.com/managed:true4 集群管理4.1 创建 RKE 集群4.1.1 通过 Rancher UI 创建步骤登录 Rancher UIhttps://rancher.example.com点击Clusters → “Create”选择From Infrastructure → “Custom”填写集群信息Cluster Name: production-k8sKubernetes Version: v1.26.8Network Provider: CalicoLinux/Windows: Linux配置节点角色3 个节点etcd, Control Plane, Worker或分离角色3 etcd 3 control N worker点击Create在节点上执行生成的命令4.1.2 节点角色配置小型集群3 节点# 所有节点运行相同命令dockerrun-d--privileged--restartunless-stopped--nethost\-v/etc/kubernetes:/etc/kubernetes\-v/var/run:/var/run\rancher/rancher-agent:v2.7.9\--serverhttps://rancher.example.com\--tokenCLUSTER_TOKEN\--etcd--controlplane--worker中型集群6 节点# etcd Control Plane 节点3 个dockerrun-d--privileged... rancher/rancher-agent:v2.7.9\--serverhttps://rancher.example.com\--tokenETCD_CONTROL_TOKEN\--etcd--controlplane# Worker 节点3 个dockerrun-d--privileged... rancher/rancher-agent:v2.7.9\--serverhttps://rancher.example.com\--tokenWORKER_TOKEN\--worker4.2 导入现有集群# 1. 在 Rancher UI 点击Clusters → Existing → Import# 2. 选择Generic# 3. 输入集群名称imported-k8s# 4. 执行生成的命令# 在现有集群上执行kubectl apply-fhttps://rancher.example.com/v3/import/abc123def456.yaml# 验证导入kubectl get namespace cattle-system kubectl get pods-ncattle-system# 查看导入状态kubectl logs-ncattle-system-lappcattle-cluster-agent4.3 云厂商集群集成4.3.1 EKS 集群前提条件AWS 账号 Access KeyIAM 用户权限eks:*配置步骤Rancher UI → Clusters → Create选择Amazon EKS配置云凭证Access Key: AKIAIOSFODNN7EXAMPLESecret Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY选择区域us-east-1配置集群Name: eks-productionKubernetes Version: 1.26Node Groups: 3 节点m5.xlarge点击Create4.3.2 AKS 集群# 创建 Service Principalaz ad sp create-for-rbac--namerancher-aks# 输出:# {# appId: abc123...,# displayName: rancher-aks,# password: def456...,# tenant: ghi789...# }# 在 Rancher UI 配置:# 1. Cloud Credentials → Add Credential → Azure# 2. 填入 Subscription ID, Client ID, Client Secret, Tenant ID# 3. 创建 AKS 集群5 节点管理5.1 节点驱动支持的节点驱动AWS EC2自动创建 EC2 实例Azure VM自动创建 Azure VMGCP GCE自动创建 GCE 实例VMware vSphere自动创建 vSphere VMOCIOracle Cloud 实例自定义驱动通过 Node Driver 扩展5.2 节点模板配置5.2.1 AWS EC2 节点模板# 节点模板配置apiVersion:management.cattle.io/v3kind:NodeTemplatemetadata:name:aws-ec2-templatespec:displayName:aws-ec2-templatecloudCredentialId:cattle-global-data:aws-credentialdriver:amazonec2amazonec2Config:region:us-east-1zone:ainstanceType:m5.xlargerootSize:50securityGroup:-k8s-security-groupsubnetId:subnet-abc123vpcId:vpc-def456iamInstanceProfile:eks-workerusePrivateAddress:truetags:EnvironmentProduction,TeamDevOps5.2.2 自动扩展配置# Cluster Autoscaler 配置apiVersion:autoscaling/v1kind:Scalemetadata:name:worker-node-groupspec:minNodes:3maxNodes:10autoscaling:enabled:truecooldownPeriod:300scaleDownDelay:600scaleUpThreshold:0.75scaleDownThreshold:0.55.3 节点池管理创建节点池apiVersion:management.cattle.io/v3kind:NodePoolmetadata:name:worker-poolspec:clusterId:c-abc123nodeTemplateId:aws-ec2-templatequantity:3controlPlane:falseetcd:falseworker:truedrainBeforeDelete:truenodeDrainInput:force:falsetimeout:300ignoreDaemonSets:truedeleteEmptyDirData:true节点池操作# 扩展节点池kubectl scale nodepool worker-pool--replicas5# 删除节点池kubectl delete nodepool worker-pool# 查看节点池kubectl get nodepool6 RBAC 权限控制6.1 权限模型四级权限体系1. Global Permissions全局权限 - Administrator - User Base - User - Standard User 2. Cluster Permissions集群权限 - Cluster Owner - Cluster Member - Create Projects 3. Project/Namespaces Permissions项目权限 - Project Owner - Project Member - Read-Only - Custom 4. Resource Permissions资源权限 - Pod/Deployment/Service 等资源级别权限6.2 角色配置6.2.1 全局角色apiVersion:management.cattle.io/v3kind:GlobalRolemetadata:name:custom-adminrules:-apiGroups:-*resources:-*verbs:-*-nonResourceURLs:-*verbs:-*6.2.2 集群角色apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:name:custom-cluster-adminrules:-apiGroups:[]resources:[pods,services,configmaps]verbs:[get,list,watch,create,update,delete]-apiGroups:[apps]resources:[deployments,statefulsets]verbs:[get,list,watch,create,update,delete]6.3 用户与组管理6.3.1 本地用户# 创建用户kubectl apply-f-EOF apiVersion: management.cattle.io/v3 kind: User metadata: name: user-abc123 displayName: 张三 username: zhangsan enabled: true password: SecurePassword123! EOF# 绑定角色kubectl apply-f-EOF apiVersion: management.cattle.io/v3 kind: GlobalRoleBinding metadata: name: globalrolebinding-abc123 userName: user-abc123 globalRoleName: user EOF6.3.2 LDAP/AD 集成# Active Directory 配置apiVersion:management.cattle.io/v3kind:ActiveDirectoryConfigmetadata:name:adspec:servers:-ad.example.comport:389tls:falseserviceAccountDistinguishedName:cnrancher,ouservice,dcexample,dccomserviceAccountPassword:password123userSearchBase:ouusers,dcexample,dccomgroupSearchBase:ougroups,dcexample,dccomuserObjectClass:personuserNameAttribute:cnuserLoginAttribute:sAMAccountNamegroupObjectClass:groupgroupNameAttribute:cngroupMemberUserAttribute:sAMAccountNamegroupMemberMappingAttribute:memberconnectionTimeout:50007 监控告警7.1 Prometheus 集成启用集群监控Rancher UI → Cluster → Tools → Monitoring点击Install配置 PrometheusRetention: 15dStorage Class: nfs-clientStorage Size: 50Gi配置 AlertmanagerEmail: adminexample.comSlack Webhook: https://hooks.slack.com/…配置 GrafanaAdmin Password: admin123点击Install7.2 告警规则配置# 自定义告警规则apiVersion:monitoring.coreos.com/v1kind:PrometheusRulemetadata:name:custom-alertsnamespace:cattle-monitoring-systemspec:groups:-name:kubernetes-alertsrules:-alert:HighCPUUsageexpr:100-(avg by(instance) (rate(node_cpu_seconds_total{modeidle}[5m])) * 100)80for:5mlabels:severity:warningannotations:summary:高 CPU 使用率description:{{ $labels.instance }} CPU 使用率超过 80%-alert:HighMemoryUsageexpr:(1-(node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 10085for:5mlabels:severity:warningannotations:summary:高内存使用率description:{{ $labels.instance }} 内存使用率超过 85%-alert:PodCrashLoopingexpr:rate(kube_pod_container_status_restarts_total[15m]) * 60 * 50for:5mlabels:severity:criticalannotations:summary:Pod 重启循环description:Pod {{ $labels.pod }} 在重启循环中7.3 通知配置# Alertmanager 通知配置apiVersion:v1kind:Secretmetadata:name:alertmanager-rancher-monitoring-alertmanagernamespace:cattle-monitoring-systemstringData:alertmanager.yaml:|-global:resolve_timeout:5msmtp_smarthost:smtp.example.com:587smtp_from:rancherexample.comsmtp_auth_username:rancherexample.comsmtp_auth_password:password123route:group_by:[alertname,job]group_wait:30sgroup_interval:5mrepeat_interval:12hreceiver:email-notificationsroutes:-match:severity:criticalreceiver:slack-criticalreceivers:-name:email-notificationsemail_configs:-to:adminexample.comsend_resolved:true-name:slack-criticalslack_configs:-api_url:https://hooks.slack.com/services/xxx/yyy/zzzchannel:#alerts-criticaltitle:{{ template slack.default.title . }}text:{{ template slack.default.text . }}8 应用商店8.1 Helm Chart 管理添加应用仓库apiVersion:catalog.cattle.io/v1kind:ClusterRepometadata:name:bitnamispec:url:https://charts.bitnami.com/bitnami---apiVersion:catalog.cattle.io/v1kind:ClusterRepometadata:name:prometheus-communityspec:url:https://prometheus-community.github.io/helm-charts8.2 应用部署部署 MySQLapiVersion:catalog.cattle.io/v1kind:Appmetadata:name:mysqlnamespace:defaultspec:chart:mysqlversion:9.5.0repoName:bitnamivalues:auth:rootPassword:rootpassword123username:appuserpassword:apppassword123database:appdbprimary:persistence:enabled:truesize:10Giresources:requests:cpu:250mmemory:512Milimits:cpu:1memory:1Gi9 总结与最佳实践9.1 Rancher 部署最佳实践高可用部署生产环境使用 3 副本 Kubernetes 部署外部数据库使用外部 RDS 而非内置数据库证书管理使用 Let’s Encrypt 或企业 CA备份策略定期备份 etcd 和 Rancher 配置9.2 集群管理最佳实践标签规范统一节点、命名空间标签资源配额设置 ResourceQuota 和 LimitRange网络策略启用 NetworkPolicy 实现微隔离版本管理定期升级 Kubernetes 版本9.3 安全加固建议最小权限遵循最小权限原则分配 RBAC审计日志开启审计日志记录所有操作镜像扫描集成 Clair 进行镜像漏洞扫描多因素认证启用 MFA 增强安全性参考文献略版权声明本文版权归作者所有欢迎转载但必须保留此版权信息且在文章开头明确标注原文链接。本文是《使用 RKE 构建企业生产级 Kubernetes 集群》系列文章的第六篇下一篇将深入讲解 etcd 节点管理与 Nginx 应用部署验证敬请期待
二十、Kubernetes基础-22-Rancher 托管 Kubernetes 集群与节点管理
使用 RKE 构建企业生产级 Kubernetes 集群六Rancher 托管 Kubernetes 集群与节点管理摘要本文深入讲解 Rancher 企业级 Kubernetes 管理平台的核心功能与最佳实践涵盖 Rancher 架构设计、高可用部署、集群导入与管理、节点管理、RBAC 权限控制、监控告警、应用商店等关键技术。通过详细的配置示例和实战案例帮助读者构建企业级 Kubernetes 管理平台。关键词RancherKubernetes 管理节点管理RBAC监控告警应用商店多集群管理1 引言1.1 Rancher 在企业级 Kubernetes 管理中的地位Rancher 是全球最流行的企业级 Kubernetes 管理平台根据 Gartner 和 Forrester 的报告全球用户超过 1 亿下载量超过 1 亿次企业采用率 60%财富 500 强企业中 60% 使用 Rancher管理 2000 万 节点全球管理超过 2000 万个 Kubernetes 节点1.2 Rancher 核心价值多集群管理统一管理本地、云端、边缘的 Kubernetes 集群简化运维可视化界面降低 Kubernetes 使用门槛安全合规内置 RBAC、审计日志、网络策略应用生态Helm 应用商店提供 200 企业应用监控告警内置 Prometheus Grafana 监控体系1.3 本文技术要点Rancher 架构设计组件解析、通信机制、高可用方案Rancher 部署实战Docker 安装、Kubernetes 安装、高可用配置集群管理RKE 集群创建、现有集群导入、云厂商集群对接节点管理节点驱动、节点模板、集群扩展权限控制全局权限、项目权限、RBAC 策略监控告警Prometheus 集成、告警规则、通知配置应用商店Helm Chart 管理、应用部署、版本升级2 Rancher 架构设计2.1 整体架构┌─────────────────────────────────────────────────────────┐ │ 用户界面层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Rancher UI │ │ CLI Tools │ │ API Client │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────┐ │ Rancher Server 集群 │ │ ┌─────────────────────────────────────────────────┐ │ │ │ Kubernetes Cluster │ │ │ │ ┌──────────┐ ┌────────── ┌──────────┐ │ │ │ │ │ Rancher │ │ Rancher │ │ Rancher │ │ │ │ │ │ Pod-1 │ │ Pod-2 │ │ Pod-3 │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ ┌──────────┐ ┌────────── ┌──────────┐ │ │ │ │ │ MySQL │ │ etcd │ │ Ingress │ │ │ │ │ └──────────┘ └──────────┘ └────────── │ │ │ └─────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────┐ │ 下游 Kubernetes 集群Downstream │ │ ┌──────────┐ ┌────────── ┌──────────┐ │ │ │ RKE │ │ EKS │ │ GKE │ │ │ │ Cluster │ │ Cluster │ │ Cluster │ │ │ └────────── └──────────┘ └──────────┘ │ │ ┌──────────┐ ┌────────── ┌──────────┐ │ │ │ AKS │ │ Import │ │ Edge │ │ │ │ Cluster │ │ Cluster │ │ Cluster │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────┘2.2 核心组件2.2.1 Rancher Server组件列表rancher/rancher主服务提供 API 和 UIrancher/fleetGitOps 引擎rancher/system-agent系统代理用于 RKE2/K3srancher/webhook准入控制 Webhookrancher/auth-proxy认证代理资源需求组件CPU内存存储Rancher Pod2 核4GB10GBetcd2 核4GB50GB SSDMySQL/MariaDB2 核4GB50GB2.2.2 Rancher Agent运行在下游集群负责与 Rancher Server 通信执行集群管理操作上报集群状态接收配置变更2.3 通信机制通信流程1. Rancher Agent 主动连接 Rancher ServerWebSocket 2. 建立隧道连接Tunnel 3. 用户通过 Rancher Server 访问下游集群 API 4. 请求通过隧道转发到下游集群 5. 响应通过隧道返回给用户安全机制TLS 加密通信Token 认证Service Account Token证书轮换每年自动轮换3 Rancher 高可用部署3.1 部署方案对比部署方案适用场景高可用复杂度成本Docker 单节点开发测试❌低低Kubernetes HA生产环境✅中中Rancher Prime超大规模✅高高3.2 Docker 安装开发测试# 单节点安装快速体验dockerrun-d--restartunless-stopped\--namerancher\-p80:80\-p443:443\--privileged\rancher/rancher:latest# 指定版本安装dockerrun-d--restartunless-stopped\--namerancher\-p80:80\-p443:443\-v/opt/rancher:/var/lib/rancher\--privileged\rancher/rancher:v2.7.9# 自定义证书dockerrun-d--restartunless-stopped\--namerancher\-p80:80\-p443:443\-v/etc/rancher/ssl/cert.pem:/etc/rancher/ssl/cert.pem\-v/etc/rancher/ssl/key.pem:/etc/rancher/ssl/key.pem\--privileged\rancher/rancher:latest# 查看安装日志dockerlogs-francher# 获取初始密码dockerlogs rancher21|grepBootstrap Password:3.3 Kubernetes 高可用部署生产环境3.3.1 前置条件集群要求Kubernetes 版本1.20 - 1.27节点数3 个 Master高可用资源每节点 4 核 CPU, 8GB 内存, 100GB 存储存储类需要默认 StorageClass支持 RWO3.3.2 Helm 安装# 添加 Rancher Helm 仓库helm repoaddrancher-latest https://releases.rancher.com/server-charts/latest helm repo update# 创建命名空间kubectl create namespace cattle-system# 安装 cert-manager证书管理kubectl apply-fhttps://github.com/cert-manager/cert-manager/releases/download/v1.13.2/cert-manager.yaml# 验证 cert-managerkubectl get pods-ncert-manager# 创建 IssuerLets Encryptcatrancher-issuer.yamlEOF apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: rancher spec: acme: server: https://acme-v02.api.letsencrypt.org/directory email: adminexample.com privateKeySecretRef: name: letsencrypt solvers: - http01: ingress: class: nginx EOFkubectl apply-francher-issuer.yaml# 安装 Rancherhelminstallrancher rancher-latest/rancher\--namespacecattle-system\--sethostnamerancher.example.com\--setbootstrapPasswordadmin\--setreplicas3\--setingress.tls.sourcecert-manager\--setcertmanager.version1.13.2# 验证安装kubectl-ncattle-system get deploy rancher kubectl-ncattle-system get pods# 查看服务kubectl-ncattle-system get svc# 获取访问地址kubectl-ncattle-system get ingress3.3.3 高可用优化# values.yaml 高可用配置replicas:3resources:limits:cpu:4memory:8Girequests:cpu:2memory:4Giaffinity:podAntiAffinity:preferredDuringSchedulingIgnoredDuringExecution:-weight:100podAffinityTerm:labelSelector:matchExpressions:-key:appoperator:Invalues:-ranchertopologyKey:kubernetes.io/hostname# 持久化存储persistence:enabled:truesize:50GistorageClass:nfs-client# 监控配置additionalLabels:monitoring.coreos.com/managed:true4 集群管理4.1 创建 RKE 集群4.1.1 通过 Rancher UI 创建步骤登录 Rancher UIhttps://rancher.example.com点击Clusters → “Create”选择From Infrastructure → “Custom”填写集群信息Cluster Name: production-k8sKubernetes Version: v1.26.8Network Provider: CalicoLinux/Windows: Linux配置节点角色3 个节点etcd, Control Plane, Worker或分离角色3 etcd 3 control N worker点击Create在节点上执行生成的命令4.1.2 节点角色配置小型集群3 节点# 所有节点运行相同命令dockerrun-d--privileged--restartunless-stopped--nethost\-v/etc/kubernetes:/etc/kubernetes\-v/var/run:/var/run\rancher/rancher-agent:v2.7.9\--serverhttps://rancher.example.com\--tokenCLUSTER_TOKEN\--etcd--controlplane--worker中型集群6 节点# etcd Control Plane 节点3 个dockerrun-d--privileged... rancher/rancher-agent:v2.7.9\--serverhttps://rancher.example.com\--tokenETCD_CONTROL_TOKEN\--etcd--controlplane# Worker 节点3 个dockerrun-d--privileged... rancher/rancher-agent:v2.7.9\--serverhttps://rancher.example.com\--tokenWORKER_TOKEN\--worker4.2 导入现有集群# 1. 在 Rancher UI 点击Clusters → Existing → Import# 2. 选择Generic# 3. 输入集群名称imported-k8s# 4. 执行生成的命令# 在现有集群上执行kubectl apply-fhttps://rancher.example.com/v3/import/abc123def456.yaml# 验证导入kubectl get namespace cattle-system kubectl get pods-ncattle-system# 查看导入状态kubectl logs-ncattle-system-lappcattle-cluster-agent4.3 云厂商集群集成4.3.1 EKS 集群前提条件AWS 账号 Access KeyIAM 用户权限eks:*配置步骤Rancher UI → Clusters → Create选择Amazon EKS配置云凭证Access Key: AKIAIOSFODNN7EXAMPLESecret Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY选择区域us-east-1配置集群Name: eks-productionKubernetes Version: 1.26Node Groups: 3 节点m5.xlarge点击Create4.3.2 AKS 集群# 创建 Service Principalaz ad sp create-for-rbac--namerancher-aks# 输出:# {# appId: abc123...,# displayName: rancher-aks,# password: def456...,# tenant: ghi789...# }# 在 Rancher UI 配置:# 1. Cloud Credentials → Add Credential → Azure# 2. 填入 Subscription ID, Client ID, Client Secret, Tenant ID# 3. 创建 AKS 集群5 节点管理5.1 节点驱动支持的节点驱动AWS EC2自动创建 EC2 实例Azure VM自动创建 Azure VMGCP GCE自动创建 GCE 实例VMware vSphere自动创建 vSphere VMOCIOracle Cloud 实例自定义驱动通过 Node Driver 扩展5.2 节点模板配置5.2.1 AWS EC2 节点模板# 节点模板配置apiVersion:management.cattle.io/v3kind:NodeTemplatemetadata:name:aws-ec2-templatespec:displayName:aws-ec2-templatecloudCredentialId:cattle-global-data:aws-credentialdriver:amazonec2amazonec2Config:region:us-east-1zone:ainstanceType:m5.xlargerootSize:50securityGroup:-k8s-security-groupsubnetId:subnet-abc123vpcId:vpc-def456iamInstanceProfile:eks-workerusePrivateAddress:truetags:EnvironmentProduction,TeamDevOps5.2.2 自动扩展配置# Cluster Autoscaler 配置apiVersion:autoscaling/v1kind:Scalemetadata:name:worker-node-groupspec:minNodes:3maxNodes:10autoscaling:enabled:truecooldownPeriod:300scaleDownDelay:600scaleUpThreshold:0.75scaleDownThreshold:0.55.3 节点池管理创建节点池apiVersion:management.cattle.io/v3kind:NodePoolmetadata:name:worker-poolspec:clusterId:c-abc123nodeTemplateId:aws-ec2-templatequantity:3controlPlane:falseetcd:falseworker:truedrainBeforeDelete:truenodeDrainInput:force:falsetimeout:300ignoreDaemonSets:truedeleteEmptyDirData:true节点池操作# 扩展节点池kubectl scale nodepool worker-pool--replicas5# 删除节点池kubectl delete nodepool worker-pool# 查看节点池kubectl get nodepool6 RBAC 权限控制6.1 权限模型四级权限体系1. Global Permissions全局权限 - Administrator - User Base - User - Standard User 2. Cluster Permissions集群权限 - Cluster Owner - Cluster Member - Create Projects 3. Project/Namespaces Permissions项目权限 - Project Owner - Project Member - Read-Only - Custom 4. Resource Permissions资源权限 - Pod/Deployment/Service 等资源级别权限6.2 角色配置6.2.1 全局角色apiVersion:management.cattle.io/v3kind:GlobalRolemetadata:name:custom-adminrules:-apiGroups:-*resources:-*verbs:-*-nonResourceURLs:-*verbs:-*6.2.2 集群角色apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:name:custom-cluster-adminrules:-apiGroups:[]resources:[pods,services,configmaps]verbs:[get,list,watch,create,update,delete]-apiGroups:[apps]resources:[deployments,statefulsets]verbs:[get,list,watch,create,update,delete]6.3 用户与组管理6.3.1 本地用户# 创建用户kubectl apply-f-EOF apiVersion: management.cattle.io/v3 kind: User metadata: name: user-abc123 displayName: 张三 username: zhangsan enabled: true password: SecurePassword123! EOF# 绑定角色kubectl apply-f-EOF apiVersion: management.cattle.io/v3 kind: GlobalRoleBinding metadata: name: globalrolebinding-abc123 userName: user-abc123 globalRoleName: user EOF6.3.2 LDAP/AD 集成# Active Directory 配置apiVersion:management.cattle.io/v3kind:ActiveDirectoryConfigmetadata:name:adspec:servers:-ad.example.comport:389tls:falseserviceAccountDistinguishedName:cnrancher,ouservice,dcexample,dccomserviceAccountPassword:password123userSearchBase:ouusers,dcexample,dccomgroupSearchBase:ougroups,dcexample,dccomuserObjectClass:personuserNameAttribute:cnuserLoginAttribute:sAMAccountNamegroupObjectClass:groupgroupNameAttribute:cngroupMemberUserAttribute:sAMAccountNamegroupMemberMappingAttribute:memberconnectionTimeout:50007 监控告警7.1 Prometheus 集成启用集群监控Rancher UI → Cluster → Tools → Monitoring点击Install配置 PrometheusRetention: 15dStorage Class: nfs-clientStorage Size: 50Gi配置 AlertmanagerEmail: adminexample.comSlack Webhook: https://hooks.slack.com/…配置 GrafanaAdmin Password: admin123点击Install7.2 告警规则配置# 自定义告警规则apiVersion:monitoring.coreos.com/v1kind:PrometheusRulemetadata:name:custom-alertsnamespace:cattle-monitoring-systemspec:groups:-name:kubernetes-alertsrules:-alert:HighCPUUsageexpr:100-(avg by(instance) (rate(node_cpu_seconds_total{modeidle}[5m])) * 100)80for:5mlabels:severity:warningannotations:summary:高 CPU 使用率description:{{ $labels.instance }} CPU 使用率超过 80%-alert:HighMemoryUsageexpr:(1-(node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 10085for:5mlabels:severity:warningannotations:summary:高内存使用率description:{{ $labels.instance }} 内存使用率超过 85%-alert:PodCrashLoopingexpr:rate(kube_pod_container_status_restarts_total[15m]) * 60 * 50for:5mlabels:severity:criticalannotations:summary:Pod 重启循环description:Pod {{ $labels.pod }} 在重启循环中7.3 通知配置# Alertmanager 通知配置apiVersion:v1kind:Secretmetadata:name:alertmanager-rancher-monitoring-alertmanagernamespace:cattle-monitoring-systemstringData:alertmanager.yaml:|-global:resolve_timeout:5msmtp_smarthost:smtp.example.com:587smtp_from:rancherexample.comsmtp_auth_username:rancherexample.comsmtp_auth_password:password123route:group_by:[alertname,job]group_wait:30sgroup_interval:5mrepeat_interval:12hreceiver:email-notificationsroutes:-match:severity:criticalreceiver:slack-criticalreceivers:-name:email-notificationsemail_configs:-to:adminexample.comsend_resolved:true-name:slack-criticalslack_configs:-api_url:https://hooks.slack.com/services/xxx/yyy/zzzchannel:#alerts-criticaltitle:{{ template slack.default.title . }}text:{{ template slack.default.text . }}8 应用商店8.1 Helm Chart 管理添加应用仓库apiVersion:catalog.cattle.io/v1kind:ClusterRepometadata:name:bitnamispec:url:https://charts.bitnami.com/bitnami---apiVersion:catalog.cattle.io/v1kind:ClusterRepometadata:name:prometheus-communityspec:url:https://prometheus-community.github.io/helm-charts8.2 应用部署部署 MySQLapiVersion:catalog.cattle.io/v1kind:Appmetadata:name:mysqlnamespace:defaultspec:chart:mysqlversion:9.5.0repoName:bitnamivalues:auth:rootPassword:rootpassword123username:appuserpassword:apppassword123database:appdbprimary:persistence:enabled:truesize:10Giresources:requests:cpu:250mmemory:512Milimits:cpu:1memory:1Gi9 总结与最佳实践9.1 Rancher 部署最佳实践高可用部署生产环境使用 3 副本 Kubernetes 部署外部数据库使用外部 RDS 而非内置数据库证书管理使用 Let’s Encrypt 或企业 CA备份策略定期备份 etcd 和 Rancher 配置9.2 集群管理最佳实践标签规范统一节点、命名空间标签资源配额设置 ResourceQuota 和 LimitRange网络策略启用 NetworkPolicy 实现微隔离版本管理定期升级 Kubernetes 版本9.3 安全加固建议最小权限遵循最小权限原则分配 RBAC审计日志开启审计日志记录所有操作镜像扫描集成 Clair 进行镜像漏洞扫描多因素认证启用 MFA 增强安全性参考文献略版权声明本文版权归作者所有欢迎转载但必须保留此版权信息且在文章开头明确标注原文链接。本文是《使用 RKE 构建企业生产级 Kubernetes 集群》系列文章的第六篇下一篇将深入讲解 etcd 节点管理与 Nginx 应用部署验证敬请期待