k8s多节点master部署

多节点master2节点部署

img

从master01节点上拷贝证书文件、配置文件和服务管理文件到master02

scp -r /opt/etcd/ root@192.168.80.16:/opt/
scp -r /opt/kubernetes/ root@192.168.80.16:/opt
scp /usr/lib/systemd/system/{
   
   kube-apiserver,kube-controller-manager,kube-scheduler}.service root@192.168.80.16:/usr/lib/systemd/system/

img

修改配置文件kube-apiserver中的IP

vim /opt/kubernetes/cfg/kube-apiserver
KUBE_APISERVER_OPTS="--logtostderr=true \
--v=4 \
--etcd-servers=https://192.168.80.11:2379,https://192.168.80.12:2379,https://192.168.80.13:2379 \
--bind-address=192.168.80.16 \				#修改master02的ip
--secure-port=6443 \
--advertise-address=192.168.80.16 \			#修改master02的ip

img

在master02节点上启动各服务并设置开机自启

systemctl enable --now kube-apiserver.service
systemctl enable --now kube-controller-manager.service
systemctl enable --now kube-scheduler.service

img

查看node节点状态

ln -s /opt/kubernetes/bin/* /usr/local/bin/
kubectl get nodes
kubectl get nodes -o wide			#-o=wide:输出额外信息;对于Pod,将输出Pod所在的Node名
//此时在master02节点查到的node节点状态仅是从etcd查询到的信息,而此时node节点实际
### Kubernetes多节点环境下的ELK Stack部署方案 在Kubernetes多节点环境下部署ELK Stack是一种常见的需求,用于集中化日志管理和分析。以下是针对该场景的解决方案和指南。 #### 1. 部署前提条件 为了成功部署ELK Stack,需满足以下先决条件: - Kubernetes集群版本应为v1.15.0及以上[^1]。 - 节点支持的CPU架构包括`amd64`和`arm64`[^1]。 - 使用Docker或Containerd作为容器运行时环境。 - 各组件的具体版本建议为Elasticsearch:7.9.3, Filebeat:7.9.3, Kibana:7.9.3 和 Logstash:7.9.3。 #### 2. 架构设计 ELK Stack由以下几个核心组件组成: - **Elasticsearch**: 数据存储和检索引擎。 - **Logstash/Kafka (可选)**: 日志数据处理管道。 - **Filebeat**: 轻量级日志收集器,负责从各个节点采集日志并发送到Elasticsearch或Logstash。 - **Kibana**: 可视化工具,提供友好的界面展示日志和其他指标数据。 对于多节点环境中的日志收集,推荐采用以下架构模式: - 在每个Node上部署一个Filebeat实例,监听本地应用产生的日志文件,并将其转发至中央化的Logstash服务或者直接写入Elasticsearch。 - 如果存在高吞吐率的日志流,则可以在中间加入消息队列(如Kafka),缓解压力并提高可靠性[^2]。 #### 3. 实现步骤概述 ##### a. 创建持久卷(PV)与声明(PVC) 由于Elasticsearch需要长期保存索引数据,因此必须为其分配稳定的存储资源。可以通过NFS或其他分布式文件系统实现跨节点的数据共享。例如,在Master节点执行命令创建共享目录[^4]: ```bash mkdir -p /data/elk vim /etc/exports # 添加如下内容 /data/elk *(rw,no_root_squash) exportfs -arv ``` 接着定义PV对象yaml文件: ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: elk-pv-volume spec: capacity: storage: 5Gi accessModes: - ReadWriteMany nfs: path: "/data/elk" server: <MASTER_IP> ``` ##### b. 配置StatefulSet管理 Elasticsearch Pod 利用Kubernetes StatefulSets特性保障Pod顺序启动以及稳定网络身份标识符(FQDN),从而简化后续客户端连接逻辑。下面给出一份基础模板供参考: ```yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: elasticsearch-cluster spec: serviceName: "elasticsearch-service" replicas: 3 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: containers: - name: elasticsearch-container image: docker.elastic.co/elasticsearch/elasticsearch:7.9.3 ports: - containerPort: 9200 name: http volumeMounts: - mountPath: "/usr/share/elasticsearch/data" name: es-storage --- apiVersion: v1 kind: Service metadata: name: elasticsearch-service spec: type: ClusterIP ports: - port: 9200 targetPort: 9200 selector: app: elasticsearch ``` 注意调整副本数量(replicas field value above), 并确保实际使用的磁盘空间大小符合业务规模预期. ##### c. 设置ConfigMap加载自定义配置参数 无论是Logstash还是其他子模块都可能依赖外部传参控制行为表现形式, 此处演示如何借助 ConfigMaps 功能完成此目的. 假设已编写好名为 `logstash-to-elastic.conf` 的pipeline脚本存放在主机路径 `/tmp/logstash-conf`, 则可通过下述方式引入: ```yaml apiVersion: v1 kind: ConfigMap metadata: name: logstash-configmap data: logstash.conf: | input { beats { port => 5044 } } output { elasticsearch { hosts => ["http://elasticsearch-service:9200"] } } ``` 随后关联进对应的Deployment描述文档里即可生效. ##### d. 编排DaemonSet分发Filebeat代理进程 最后一步便是安排 DaemonSet 类型的工作负载单元自动覆盖整个Cluster范围内的Worker Nodes集合成员个体之上安装指定版本号标记出来的filebeat镜像制品项例子如下所示 : ```yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: filebeat-daemonset spec: selector: matchLabels: app: filebeat template: metadata: labels: app: filebeat spec: serviceAccountName: default terminationGracePeriodSeconds: 30 hostNetwork: true dnsPolicy: ClusterFirstWithHostNet containers: - name: filebeat image: docker.elastic.co/beats/filebeat:7.9.3 args: [ "-c", "/etc/filebeat.yml", "-e", ] env: - name: ELASTICSEARCH_HOSTS value: "http://elasticsearch-service:9200" securityContext: runAsUser: 0 resources: limits: memory: 200Mi requests: cpu: 100m memory: 100Mi volumeMounts: - name: config mountPath: /etc/filebeat.yml subPath: filebeat.yml - name: data mountPath: /usr/share/filebeat/data - name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true volumes: - name: config configMap: defaultMode: 0600 name: filebeat-config - name: varlibdockercontainers hostPath: path: /var/lib/docker/containers - name: data emptyDir: {} ``` #### 总结说明 综上所述即完成了基于K8S平台构建起一套完整的ELK生态体系流程阐述工作 , 整体思路清晰明了易于理解操作性强 .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值