Kubernetes生产实践系列之五:基于虚拟机部署安全加密的etcd集群

kubernetes学习(二)之规划及部署etcd和master kubernetes规划及部署1、生产环境k8s平台规划-多集群HA2、测试环境平台规划3、官方提供三种部署方式4、部署单master集群4.1 集群规划4.2 初始化服务器 1、生产环境k8s平台规划-多集群HA master节点建议3台 etcd节点建议(3,5,7) worker节点越多越好,根据业务情况具体部署 2、测试环境平台规划 由于测试环境资源有限,为最大利用虚拟机资源,按照以下规... 阅读详情

一、前言

etcd集群对于Kubernetes集群及其重要,Kubernetes的API Server本身是无状态的,所有的状态都进入etcd进行存储,所以etcd的性能和安全关乎整个Kubernetes集群的性能和安全:

本文介绍使用在虚拟机上构建证书安全的etcd集群。

转载自https://blog.youkuaiyun.com/cloudvtech

二、准备工作

2.1 操作系统准备工作

#关闭防火墙
systemctl disable firewalld
systemctl stop firewalld

#配置域名
[root@k8s-master-02 etcd]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.101 k8s-master-01
192.168.56.102 k8s-master-02
192.168.56.103 k8s-master-03
192.168.56.111 k8s-node-01
192.168.56.112 k8s-node-02
192.168.56.113 k8s-node-03

#创建需要的目录
mkdir /opt/etcd/
mkdir /opt/etcd/data
mkdir /opt/etcd/logs

 

2.2 生成证书和key文件

工具准备

curl -s -L -o /usr/bin/cfssl https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
curl -s -L -o /usr/bin/cfssljson https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
chmod +x /usr/bin/{cfssl,cfssljson}

ca-config.json 

{
  "signing": {
    "default": {
      "expiry": "100000h"
    },
    "profiles": {
      "server": {
        "usages": ["signing", "key encipherment", "server auth", "client auth"],
        "expiry": "100000h"
      },
      "client": {
        "usages": ["signing", "key encipherment", "server auth", "client auth"],
        "expiry": "8760h"
      }
    }
  }
}

ca-csr.json

{
  "CN": "Etcd",
  "key": {
    "algo": "rsa",
    "size": 4096
  },
  "names": [
    {
      "C": "CN",
      "L": "Shanghai",
      "O": "ETCD",
      "OU": "my.ai",
      "ST": "Shanghai"
    }
  ]
}

server-csr.json 

{
  "CN": "etcd-server",
  "hosts": [
    "localhost",
    "0.0.0.0",
    "127.0.0.1",
    "k8s-master-01",
    "k8s-master-02",
    "k8s-master-03",
    "k8s-master-04",
    "k8s-master-05",
    "k8s-master-06",
    "k8s-node-01",
    "k8s-node-02",
    "k8s-node-03",
    "k8s-node-04",
    "k8s-node-05",
    "k8s-node-06",
    "k8s-node-07",
    "k8s-tool",
    "192.168.56.101",
    "192.168.56.102",
    "192.168.56.103",
    "192.168.56.104",
    "192.168.56.105",
    "192.168.56.106",
    "192.168.56.111",
    "192.168.56.112",
    "192.168.56.113",
    "192.168.56.114",
    "192.168.56.115",
    "192.168.56.116",
    "192.168.56.117"
  ],
  "key": {
    "algo": "rsa",
    "size": 4096
  },
  "names": [
    {
      "C": "CN",
      "L": "Shanghai",
      "O": "ETCD",
      "OU": "etcd.ai",
      "ST": "Shanghai"
    }
  ]
}

ca-csr.json 

{
  "CN": "Etcd",
  "key": {
    "algo": "rsa",
    "size": 4096
  },
  "names": [
    {
      "C": "CN",
      "L": "Shanghai",
      "O": "ETCD",
      "OU": "etcd.ai",
      "ST": "Shanghai"
    }
  ]
}

client-csr.json 

{
  "CN": "etcd-client",
  "hosts": [
    ""
  ],
  "key": {
    "algo": "rsa",
    "size": 4096
  },
  "names": [
    {
      "C": "CN",
      "L": "Shanghai",
      "ST": "Shanghai",
      "O": "ETCD",
      "OU": "etcd.ai"
    }
  ]
}

执行如下命令:

cfssl gencert -initca ca-csr.json | cfssljson -bare ca
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=server server-csr.json | cfssljson -bare server
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client client-csr.json | cfssljson -bare client

转载自https://blog.youkuaiyun.com/cloudvtech

三、安装etcd服务

3.1 下载发布版本

wget https://github.com/etcd-io/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz

tar -zxvf etcd-v3.3.10-linux-amd64.tar.gz 
cd etcd-v3.3.10-linux-amd64
cp etcd* /usr/bin/

3.2 准备启动脚本

/usr/lib/systemd/system/etcd.service
[Unit]
Description=etcd
[Service]
ExecStart=/usr/bin/etcd \
   --name=k8s-master-0{1|2|3} \
   --listen-client-urls=https://0.0.0.0:2379 \
   --advertise-client-urls=https://192.168.56.101:2379 \
   --listen-peer-urls=https://0.0.0.0:2380 \
   --initial-advertise-peer-urls=https://k8s-master-01{1|2|3}:2380 \
   --initial-cluster=k8s-master-01=https://k8s-master-01:2380,k8s-master-02=https://k8s-master-02:2380,k8s-master-03=https://k8s-master-03:2380 \
   --initial-cluster-token=my-etcd-cluster-token \
   --initial-cluster-state=new \
   --cert-file=/opt/etcd/ca/server.pem \
   --key-file=/opt/etcd/ca/server-key.pem \
   --peer-cert-file=/opt/etcd/ca/server.pem \
   --peer-key-file=/opt/etcd/ca/server-key.pem \
   --trusted-ca-file=/opt/etcd/ca/ca.pem \
   --peer-trusted-ca-file=/opt/etcd/ca/ca.pem \
   --data-dir=/opt/etcd/data \
   --peer-client-cert-auth=true \
   --client-cert-auth=true
[Install]
WantedBy=multi-user.target

启动etcd服务

systemctl enable etcd
systemctl start etcd

转载自https://blog.youkuaiyun.com/cloudvtech

四、查看集群状态

集群health

etcdctl --cert-file=/opt/etcd/ca/client.pem  --key-file=/opt/etcd/ca/client-key.pem --ca-file=/opt/etcd/ca/ca.pem --endpoints=https://k8s-master-01:2379 cluster-health
member 666e3882c4f82f71 is healthy: got healthy result from https://0.0.0.0:2379
member 679ae639419c436f is healthy: got healthy result from https://0.0.0.0:2379
member f21bce98b30c6f30 is healthy: got healthy result from https://0.0.0.0:2379
cluster is healthy

member list

etcdctl --cert-file=/opt/etcd/ca/client.pem  --key-file=/opt/etcd/ca/client-key.pem --ca-file=/opt/etcd/ca/ca.pem --endpoints=https://k8s-master-01:2379 member list
666e3882c4f82f71: name=k8s-master-03 peerURLs=https://k8s-master-03:2380 clientURLs=https://0.0.0.0:2379 isLeader=false
679ae639419c436f: name=k8s-master-02 peerURLs=https://k8s-master-02:2380 clientURLs=https://0.0.0.0:2379 isLeader=false
f21bce98b30c6f30: name=k8s-master-01 peerURLs=https://k8s-master-01:2380 clientURLs=https://0.0.0.0:2379 isLeader=true

不用证书去访问etcd会失败

etcdctl  --endpoints=https://k8s-master-01:2379 member list
client: etcd cluster is unavailable or misconfigured; error #0: x509: certificate signed by unknown authority

使用证书和key从其它主机访问etcd集群

etcdctl --cert-file=./client.pem  --key-file=./client-key.pem --ca-file=./ca.pem --endpoints=https://k8s-master-01:2379,https://k8s-master-02:2379,https://k8s-master-03:2379  cluster-health

member 666e3882c4f82f71 is healthy: got healthy result from https://192.168.56.103:2379
member 679ae639419c436f is healthy: got healthy result from https://192.168.56.102:2379
member f21bce98b30c6f30 is healthy: got healthy result from https://192.168.56.101:2379
cluster is healthy

转载自https://blog.youkuaiyun.com/cloudvtech

kubernetes(k8s):部署高可用集群 文章目录背景:两种高可用集群架构1.实验环境1.1 Loadbalancer部署:三台主机分别配置haproxy,keepalived1.2 分别部署k8s,docker1.3 将三台主机均设置为master1.4 安装flannel网络组件1.5 再开启一台server5做worker1.6 测试 背景:两种高可用集群架构 2.采用分布式存储etcd,分别用三台主机节点作为etcd 1.实验环境 重新准备server2、server3、server4,三台虚拟机,分别安装haproxy和keep 阅读详情

相关推荐

Kubernetes单节点集群部署----etcd数据库

Kubernetes单节点集群部署----etcd数据库 一:介绍etcd ​ etcd是一个采用HTTP协议的健/值对存储系统,它是一个分布式和功能层次配置系统,可用于构建服务发现系统、用于共享配置和服务发现。提供了可靠的数据持久化特性,是安全的并且文档也十分齐全。由GO语言实现。 1、etcd主要提供的能力 提供存储以及获取数据的接口,它通过协议保证 Etcd 集群中的多个节点数...

XuMin6的博客 637

为什么需要 Kubernetes,它能做什么?

由于 Kubernetes 是在容器级别运行,而非在硬件级别,它提供了 PaaS 产品共有的一些普遍适用的功能, 例如部署、扩展、负载均衡,允许用户集成他们的日志记录、监控和警报方案。一种解决方案是将每个应用程序都运行在不同的物理服务器上, 但是当某个应用程序资源利用率不高时,剩余资源无法被分配给其他应用程序, 而且维护许多物理服务器的成本很高。● 不限制支持的应用程序类型。● 批处理执行 除了服务外,Kubernetes 还可以管理你的批处理和 CI(持续集成)工作负载,如有需要,可以替换失败的容器。

qq_44534541的博客 1407

kubeadm搭建K8S高可用集群(一)

kubeadm搭建K8S高可用集群(一) 一、集群规划 ①、服务器主备 准备了4台虚拟机,三台做K8S高可用集群+ETCD集群,keepalived+nginx实现K8S apiserver 高可用。 k8s-01 192.168.0.108 master+etcd+keepalived+nginx k8s-02 192.168.0.109 master+etcd+keepalived+nginx k8s-03 192.168.0.111 master+etcd+keepalived+nginx k8s-0

那个那个 2104

centos7,etcd集群部署,基于二进制包,集群通信采用http协议

理论知识参考一下: https://blog.youkuaiyun.com/MssGuo/article/details/134495748。官网集群部署文档: https://etcd.io/docs/v3.5/op-guide/clustering/官网文档参考:https://etcd.io/docs/v3.5/op-guide/configuration/安装包路径:https://github.com/etcd-io/etcd/releases/etcd官网地址: https://etcd.io/

qq_50247813的博客 1491

Kubespray+Ansible优雅部署生产级K8s集群实战指南

Kubernetes集群部署是云原生基础设施建设的核心环节,其本质是将多节点Linux系统通过声明式配置、证书管理、网络插件集成与高可用组件编排,转化为符合CNCF标准的生产就绪环境。Kubespray作为基于Ansible的成熟部署引擎,以模块化Role设计、变量驱动配置和社区验证最佳实践为技术支点,显著提升部署的可复现性、可审计性与可进化性。相比脚本化或黑盒工具,它天然支持国产镜像加速、cgroup兼容适配、etcd静态加密及RBAC最小权限加固等关键工程需求,广泛应用于金融、电商、政企等对稳定性与合规

weixin_32520095的博客 268

Kubernetes - 记一次所有机器重启导致的集群问题

最近给客户部署的集群由于机器重启集群不能启动,首先执行kubectl get node,发现没有可用的node,于是去看centos的系统日志/var/log/message,日志中有x509,证书无效或已过期,心想,为啥重启集群会导致证书错误?且先记录下: x509,证书错误,无效或已过期 于是从集群的基础从底层往上查,k8s将集群的信息会记录在etcd中,而各个节点由flannel分配...

研究与专注 3785

创建加密的ETCD docker集群 实战记录

https://pcocc.readthedocs.io/en/latest/deps/etcd-production.html 部署安全的etcd集群。 本指南说明了如何设置高可用性etcd服务器集群以及如何确保与TLS的通信安全。 本指南改编自官方的etcd文档,您可以在其中找到更多详细信息。 证书生成要启用TLS,您需要生成自签名证书颁发机构和服务器证书。 在此示例中,我们将考虑使用以下节点...

happyfreeangel的博客 1323

Kubernetes介绍篇:是什么? 为什么要用它?

是时候该学习Kubernetes了,不然都不敢说自己了解容器、了解Docker。 1、Kubernetes的前世 Kubernetes,它是一个全新的基于容器技术的分布式架构方案,近些年在容器领域使用非常广泛,作为容器化部署实施的典型方案。 看似很新(相对于刚出现时来说),但它却是谷歌十几年以来大规模应用容器技术的经验积累和升华的重要成果。确切地说,Kubernetes是谷歌严格保密十几年的秘密武器——Borg的一个开源版本。Borg是谷歌的一个久负盛名的内部使用的大规模集群管理系统,它基于容器技术,..

xcbeyond|疯狂源自梦想,技术成就辉煌 5102

Kubernetes 集群加固:etcd 加密全解析

领域推荐措施静态数据加密使用 KMS(如 Azure Key Vault)替代静态密钥,支持自动轮换。传输加密强制双向 TLS(mTLS),禁用非加密端口(如 2379 以外的监听)。访问控制结合 Kubernetes RBAC 和 etcd 自身的证书认证,最小化权限。网络隔离通过 NSG/VPC 限制 etcd 访问,仅允许控制平面节点通信。密钥轮换保留两个版本密钥,轮换后立即更新所有 Secrets。监控与审计。

like21a的博客 809

Kubernetes高可用集群搭建

Kubernetes(简称K8s)是一个开源的容器集群管理系统,它提供了完整的容器化应用生命周期管理功能,能够轻松地部署和管理容器化应用,并提供稳定且可靠的运行环境。K8s提供了方便快捷的管理工具、自动化机制和API接口,也降低了用户的学习成本和上手难度。由于K8s采用Master-Slave架构设计,因此需要一个高可用的K8s集群才能保证服务的持续性和可用性。

AI天才研究院 2542

基于Docker的Etcd分布式部署的方法步骤

主要介绍了基于Docker的Etcd分布式部署的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

kubernetes 集群部署之ETCD数据库部署、flannel网络组件安装

文章目录一、单 master 集群部署介绍二、环境准备三、部署ETCD集群3.1、安装制作证书的工具cfssl3.2、制作CA证书3.3、使用证书、etcd脚本搭建ETCD集群3.4、部署 node节点加入ETCD集群3.5、检查集群状态四、部署flannel网络组件 一、单 master 集群部署介绍 注意:本人使用二进制包来搭建k8s集群,比较耗费CPU内存,笔记本电脑的运行内存至少是32G...

qq_28361541的博客 2494

虚拟机ubuntu22.04.3中安装vitis2024.1注意事项

虚拟机ubuntu安装vitis2024.1

qq_52033578的博客 2493

Kubernetes 18 (k8s高可用集群部署)

目录一、k8s高可用集群介绍1. 实验环境二、K8s高可用+负载均衡集群部署1. haproxy负载均衡部署2. Docker部署3. k8s集群部署4. k8s添加worker节点5. 集群高可用性能测试 一、k8s高可用集群介绍 在前面k8s学习中,围绕一个k8s的master节点操作,当此节点down掉后k8s将无法进行后续的部署管理工作。我们将通过haproxy配置三台 master主机实现负载均衡,通过k8s三台master主机实现k8s集群高可用。 1、Kubernetes的存储层使用的是Et

qq_38664479的博客 3751

Halcon实战:5分钟搞定金属表面划痕检测(附完整代码解析)

本文提供了一份基于Halcon的金属表面划痕检测实战指南。通过核心的动态阈值算法,快速从图像中提取局部对比度异常区域,并结合形态学后处理与特征筛选,精准识别划痕。文章详解了从代码搭建、参数优化到工业场景适配的全流程,帮助工程师在五分钟内构建稳定高效的机器视觉检测方案。

weixin_29084231的博客 495

SRRC型号核准的模块豁免规则解析——如何利用完整型模块简化设备认证流程

本文详细解析了SRRC型号核准中模块豁免规则的应用,重点介绍了完整型模块的技术定义、豁免条件及实际应用场景。通过合理利用完整型模块,企业可显著简化设备认证流程,缩短上市周期并降低成本。文章还提供了模块选型指南和常见问题解决方案,帮助工程师高效应对SRRC认证挑战。

weixin_29306011的博客 932

Kubernetes生产集群部署指南

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。在此部署中,我们将关闭捆绑的 etcd 服务,而只使用外部群集。

残星说梦话 1240

CEH Practical 实战考试真题与答案

CEH Practical 是 EC-Council 推出的Certified Ethical Hacker(CEH)认证项目中的一项高级动手实践考试。它不同于传统的理论考试,侧重于在真实环境中检验考生的实操能力。

sgafdgdagd的博客 967

Kubernetes Secret安全实践:etcd静态加密与External Secrets Operator集成

在云原生架构中,数据安全是核心关切点,尤其是敏感配置信息的管理。Kubernetes Secret作为存储密码、令牌和密钥等敏感数据的标准资源,其默认的Base64编码并非加密,存在安全风险。为确保数据在存储状态下的机密性,需实施静态加密,这通常通过配置Kubernetes API Server的EncryptionConfiguration来实现,对写入etcd的数据进行加密。从更广泛的技术价值看,这构成了纵深防御体系的关键一环,防止底层设施风险或备份泄露导致的数据暴露。结合动态密钥管理,利用如Exter

weixin_34178244的博客 451

现代密码学5.3--Hash and MAC

现代密码学5.3--Hash and MAC 博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。 第二章定义了完美安全及其对应的密码方案“一次一密”, 第三章介绍了多种安全定义 3.1-3.3 计算安全,PRG和基于PRG构造的满足计算安全的密码方案; 3.4-3.5 CPA安全,PRF和基于PRF构

qq_41545715的博客 684

[ROS] rviz 可视化工具

[ROS] rviz 可视化工具 摄像头没讲 文章目录[ROS] rviz 可视化工具1. todo2. todo*. 参考*. 问题解决*. rough 1. todo 2. todo *. 参考 *. 问题解决 *. rough roscore + rviz

weixin_37834269的博客 2049

CentOS集群部署kubernetes+etcd+flanneld

根据下载的二进制文件部署kubernets集群,同时开启集群的TLS安全认证。 操作环境 三台CentOS系统的虚拟机上部署具有三个节点的kubernetes1.7.16集群。 Master:172.16.138.171    所有生成证书、执行kubectl命令的操作都在这台节点上执行。Node:172.16.138.171,172.16.138.172,172.16.138.173 ...

lin252552的博客 3388

[Dify] 多步对话流程的实现技巧:构建连贯自然的多轮交互系统

摘要:本文探讨了AI系统中实现多轮对话的核心技术与应用方法。文章首先分析了多步对话的典型场景(如机票预订、财务报告生成)及其价值,提出了Dify平台实现该功能的三大机制:变量系统、条件控制和状态管理。随后详细介绍了顺序型、条件型和确认型三种基本对话模式,并通过"会议预约助手"案例展示了实际应用流程。文章还提供了提示词设计、变量引用等实用建议,并强调多轮对话成功的关键在于清晰的结构设计而非单纯依赖模型能力,最终实现自然流畅的人机交互体验。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 1343

Linux企业运维——K8s高可用集群架构搭建详解

K8s高可用集群 一、K8s高可用集群架构原理 Kubernetes的存储层使用的是Etcd。Etcd是CoreOS开源的一个高可用强一致性的分布式存储服务,Kubernetes使用Etcd作为数据存储后端,把需要记录的pod、rc、service等资源信息存储在Etcd中。 Kubernetes的管理层服务包括kube-scheduler和kube-controller-manager。kube-scheduer和kube-controller-manager使用一主多从的高可用方案,在同一时刻只允许一个

weixin_44310047的博客 4350

AUTOSAR从入门到精通-【自动驾驶】特斯拉全自动驾驶(FSD)

特斯拉全自动驾驶系统(Full-Self Driving,简称FSD)是特斯拉公司开发的高级驾驶辅助系统,旨在通过神经网络技术实现环境感知与车辆控制,在驾驶员监督下完成导航、转向、变道、泊车等操作。‌ 该系统自2021年发布Beta测试版以来持续迭代,最新版本为2025年10月推出的v14版本。‌FSD v14版本基于端到端神经网络架构,取代了传统代码逻辑,通过数百万视频片段训练模型,以模仿人类驾驶决策。‌ 其功能覆盖住宅区街道、城市道路及高速公路,支持交通信号识别、自动变道和环岛通行等场景。

getusushu的博客 570

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

云攻防-K8S安全

在 K8S 中,利用污点(Taint)进行横向移动渗透是指攻击者通过操纵或绕过集群中的污点和容忍(Toleration)机制,将恶意负载(Pod)调度到原本受保护的节点上,从而突破隔离并进一步渗透集群。一种是在本身就存在着不需要登录的 http 接口,但接口本身并不会暴露出来,如接口被暴露在外,就会导致 dashboard 未授权。: 实战中在安装 k8s 默认的配置 2379 只会监听本地,如果访问没设置 0.0.0.0 暴露,那么也就意味着最多就是本地访问,不能公网访问,只能配合 ssrf 或其他。

2401_87971103的博客 1067

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 企业级负载均衡解决方案之十:微软Azure公有云负载均衡系统Ananta
下一篇: Kubernetes生产实践系列之六:使用etcd-operator在Kubernetes部署 HA etcd集群
cloudvtech
博客等级 码龄9年 533粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值