docker-elastic7.9.3集群搭建并开启用户验证

本文详细介绍了如何在三台机器上使用Docker部署Elasticsearch 7.9.3集群,包括配置文件、主机参数调整、证书生成及用户验证过程。重点涉及节点配置、安全设置和集群启动步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【一】docker es 7.9.3 集群搭建
1.1 首先准备3台机器,确认master 节点机器。
192.168.30.1 (master)
192.168.30.2
192.168.30.3
1.2 编写每个node 节点的 elasticsearch.yml
node1:
vim /data/elasticsearch/config/es1.yml

cluster.name: "docker-cluster"
network.host: 0.0.0.0
node.name: es-node-1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.30.1
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
#master 节点配置
node.master: true
node.data: true
#设置master节点,用户认证需要配置识别master
cluster.initial_master_nodes: ["es-node-1"]
discovery.zen.ping.unicast.hosts: ["192.168.30.1:9300","192.168.30.2:9300","192.168.30.3:9300"]
discovery.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
#开启安全认证
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
#节点数分片最大数限制
cluster.max_shards_per_node: 100000
#集群证书配置
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

node2:
vim /data/elasticsearch/config/es2.yml

cluster.name: "docker-cluster"
network.host: 0.0.0.0
node.name: es-node-1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.30.2
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
#从节点配置
node.master: false
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.30.1:9300","192.168.30.2:9300","192.168.30.3:9300"]
discovery.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
#开启安全认证
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
#节点数分片最大数限制
cluster.max_shards_per_node: 100000
#集群证书配置
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

node3:
vim /data/elasticsearch/config/es3.yml

cluster.name: "docker-cluster"
network.host: 0.0.0.0
node.name: es-node-1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.30.3
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
#从节点配置
node.master: false
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.30.1:9300","192.168.30.2:9300","192.168.30.3:9300"]
discovery.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
#开启安全认证
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
#节点数分片最大数限制
cluster.max_shards_per_node: 100000
#集群证书配置
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

1.3 调整node 主机 vm.max_map_count
vm.max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量
vim /etc/sysctl.conf

vm.max_map_count = 655360

sysctl -p
1.5 启动es 集群
node1 :

 docker run -d --name elastic -p 9200:9200 -p 9300:9300 -v /data/elasticsearch/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml  -v /etc/localtime:/etc/localtime elasticsearch:7.9.3

node2 :

 docker run -d --name elastic -p 9200:9200 -p 9300:9300 -v /data/elasticsearch/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml  -v /etc/localtime:/etc/localtime elasticsearch:7.9.3

node3 :

 docker run -d --name elastic -p 9200:9200 -p 9300:9300 -v /data/elasticsearch/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml  -v /etc/localtime:/etc/localtime elasticsearch:7.9.3

【二】开启集群用户验证
2.1 进入容器内部,在master 节点即node1 节点,生成ca 证书
docker exec -it elastic bash

#建立证书夹路径
mkidr /usr/share/elasticsearch/config/certs/ 
cd /usr/share/elasticsearch/config/certs/ 
#证书生成,可以跳过配置密码,默认直接回车下一行生成证书
./bin/elasticsearch-certutil ca
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

elastic-certificates.p12
elastic-stack-ca.p12
将配置的证书夹certs拷贝,并同步至其他node 节点上,重启elastic即可
为了避免权限问题,记得赋权。
chown -R elasticsearch ./*
2.2 master 节点配置登录密码
docker exec -it elastic bash

#需要6次密码认证,按照提示进行即可
./bin/elasticsearch-setup-passwords interactive

重启master节点docker,验证即可。

curl -X GET '127.0.0.1:9200/' --user elastic:passwad
<think>嗯,用户希望使用Rancher部署Kubernetes集群通过Dashboard进行测试操作。用户需求很具体,涉及集群搭建、节点监控、容器管理和应用部署四个核心环节。此前对话中用户引用了三篇文档,其中提到Rancher解决了国内网络问题、支持高可用和可视化管理等优势,这些都需要在回答中重点体现。用户的技术水平应该属于中级——既不是完全新手(知道要测试集群功能),也不是专家(需要具体操作指引)。情绪上显得比较急切,用词精准但省略了部分前置条件(比如是否已有Linux服务器)。考虑到生产环境需求,安装步骤必须包含高可用模式说明。从技术角度看,这个需求可拆解为五个层次:环境准备(包括国内镜像源处理)、Rancher服务部署、K8S集群创建、Dashboard启用和实际应用测试。特别要注意的是:1国内网络问题需通过镜像加速解决,文档提到修改仓库地址的方案必须保留2高可用部分要明确三个节点的配置差异3Dashboard需要说明从Rancher控制台的访问路径而非独立安装4应用部署示例应该包含完整的YAML配置安全方面要提醒端口开放策略,尤其nginx-ingress的80/443端口。性能提示则集中在资源分配上,特别是ETCD节点的磁盘要求。最后主动提供排错指引能降低用户试错成本,这也是引用[1]强调Rancher优势的延伸。用户隐藏需求可能是想验证Rancher是否真如文档所说适合国内环境,因此所有涉及网络配置的步骤都要标注“大陆地区专用”。另外ta没有明确集群规模,按最小生产配置(3节点)设计更稳妥。</think> 以下是根据你的需求整理的 **Rancher 部署 Kubernetes 集群及使用 Dashboard 测试的完整流程**,包含搭建集群、节点管理、容器操作和应用部署。操作基于 Rancher v2.6+(当前主流版本),结合引用内容优化国内网络配置: --- ### **一、环境准备(关键步骤)** 1. **服务器要求**: - 至少 3 台 Linux 主机(推荐 Ubuntu 20.04/CentOS 7.9- 配置:4核CPU/8GB RAM/100GB 磁盘(**生产环境建议更高配置**) - 开启端口:`22`(SSH)、`80/443`(Web)、`6443`(K8s API)、`2379/2380`(ETCD) 2. **配置国内镜像加速**(解决网络问题,引用[1][3]): ```bash # 所有节点执行: sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"] } EOF sudo systemctl restart docker ``` --- ### **二、部署 Rancher Server(高可用模式,引用[3])** #### 1. 通过 Docker 安装 Rancher ```bash # 主控制节点执行(需域名 rancher.yourdomain.com 解析到该节点) docker run -d --restart=unless-stopped \ -p 80:80 -p 443:443 \ --privileged \ -e CATTLE_SYSTEM_DEFAULT_REGISTRY=registry.cn-hangzhou.aliyuncs.com \ # 国内镜像源 -v /opt/rancher:/var/lib/rancher \ rancher/rancher:latest ``` #### 2. 初始化 Rancher 1. 访问 `https://<服务器IP>`,设置管理员密码 2. **重要:** 在 `Settings` 中将 `server-url` 修改为你的域名(如 `https://rancher.yourdomain.com`)确保后续通信 --- ### **三、创建 Kubernetes 集群** 1. **登录 Rancher 控制台** → **集群** → **创建** 2. 选择 **自定义集群** 3. **集群配置**: - 集群名称:`prod-cluster` - Kubernetes 版本:选择 v1.24+(兼容 Docker 20.10+) - 网络插件:`Flannel`(默认)或 `Calico` - 启用项目监控(引用[3]功能6) 4. **节点角色分配**: | 主机类型 | 角色 | 数量 | |----------------|--------------------------|------| | Control Plane | `etcd`, `Control Plane` | 3 | | Worker | `Worker` | ≥2 | 5. 复制生成的 `docker run` 命令到对应节点执行(**自动加入集群**) ```bash # 示例命令(实际需用 Rancher 生成的命令) docker run --privileged -d \ --restart=unless-stopped \ --net=host \ -v /etc/kubernetes:/etc/kubernetes \ rancher/rancher-agent:v2.7.0 \ --server https://rancher.yourdomain.com \ --token <TOKEN> \ --ca-checksum <CHECKSUM> \ --etcd --controlplane --worker ``` --- ### **四、使用 Dashboard 测试集群功能** #### 1. **启用 Kubernetes Dashboard** - Rancher 已集成 Dashboard(引用[3]功能6),无需额外安装 - 访问路径:Rancher 控制台 → **集群仪表盘** → **Kubernetes Dashboard** #### 2. **查看节点状态** 1. 进入 Dashboard → **节点** 2. 检查节点状态是否为 **`Ready`** 3. 点击节点名称查看详细信息: - CPU/内存使用率 - 运行中的 Pod 数量 - 系统事件(如节点压力告警) #### 3. **管理容器(Pod)** 1. **查看容器**: - 导航到 **命名空间** → **default** → **Pods** - 验证核心组件(如 `coredns`、`flannel`)状态为 **`Running`** 2. **终端操作**: - 选择任意 Pod → 点击 **终端** 图标进入容器命令行 - 执行命令(如 `nslookup kubernetes.default` 测试DNS) #### 4. **部署测试应用** ```yaml # 在 Dashboard 中选择 YAML 创建 → 输入以下内容 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-test spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.25-alpine # 使用国内镜像源自动加速 ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx-svc spec: type: NodePort selector: app: nginx ports: - port: 80 targetPort: 80 nodePort: 30080 ``` - **访问应用**:`http://<任意Worker节点IP>:30080` 显示 Nginx 欢迎页 - **扩缩容**:在 Dashboard 中修改 Deployment 的 `Replicas` 数量实时生效 --- ### **五、关键注意事项** 1. **高可用保障**(引用[3]): - Rancher Server 备份:定期备份 `/opt/rancher` 目录 - 使用 `Rancher Backup` 应用实现自动备份 2. **资源配额管理**(引用[3]功能1): - 在 Rancher 中创建项目 → 设置 CPU/内存限额 3. **节点维护**(引用[3]功能3): - 驱散节点:节点详情页 → **编辑** → 启用 **调度禁用 + 驱逐 Pod** --- ### **常见问题排查** | 问题 | 解决方案 | |------------------------------|--------------------------------------------------------------------------| | 节点卡在 `Provisioning` 状态 | 检查防火墙规则和 `docker run` 命令中的 token 是否过期 | | Pod 无法拉取镜像 | 确认 `/etc/docker/daemon.json` 镜像加速配置生效 | | Dashboard 无法访问 | 在集群设置中检查 `nginx-ingress-controller` Pod 是否运行正常 | | ETCD 磁盘压力告警 | 清理历史快照:`ETCDCTL_API=3 etcdctl --endpoints=<IP>:2379 compact <revision>` | > 提示:生产环境建议启用 **Rancher 监控**(Prometheus+Grafana)和 **日志收集**(Elasticsearch+Fluentd)[^3]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值