Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 0、前言整体架构目录:ASP.NET Core分布式项目实战-目录k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录一、服务器设置 1、把每一个服务器的selinux 设置为 disabled设置方式:vi  /etc/selinux/config将 SELINUX=disabled,然后保存,然后 执行命令: setenforce 0,使之生效。

0、前言

整体架构目录:ASP.NET Core分布式项目实战-目录

k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

一、服务器设置


 

1、把每一个服务器的selinux 设置为 disabled

设置方式:

vi  /etc/selinux/config

将 SELINUX=disabled,然后保存,然后 执行命令: setenforce 0,使之生效。

 

2、同步每一台服务器的时间(此步骤很重要,会影响后面的软件环境运行)

3、每一台服务器 关闭防火墙 firewall

 

二、安装docker


 

 1、CentOS7 安装docker请参考之前文章:Docker系列之CentOS7安装Docker(一)

 

 

三、自签TLS证书


 

操作服务器:master1-151 服务器 

 

1、安装证书生成工具cfssl:

执行命令:

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64

 

注:如果上述命令无法再Centos7中执行,请用浏览器打开下载后上传到服务器上,然后在执行下面的命令

 

给cfssl加入可执行权限:

chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64

 

然后把文件移动到此位置:

mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo

 

2、生成证书

k8s组件中证书使用情况

 

在服务器中创建一个文件夹,楼主我是在  mkdir /home/ssl  创建ssl文件,然后执行 证书 生成命令文件(此文件需要入QQ群找群主获取,QQ群号在下面)

 

注:在执行 文件中的  server-csr.json 时 需要把里面的IP地址修改完自己服务器的地址,如下图所示:

 

 命令全部执行完后会生成如下的证书文件,后缀为 pem的证书文件。(此处仅看后缀为pem的文件,其他文件后面会将到)

 

 到此步,证书生成OK了。

 

四、部署Etcd集群


 

操作服务器:master1-151 服务器 

1、在此处我把 master1、node1、node2这个三个服务器做成etcd 集群部署。

2、首先先获取etcd 二进制 安装包:可以在 此链接处 下载  https://github.com/coreos/etcd/releases/tag/v3.2.12

3、把文件上传到 master 服务器上,群主创建了一个文件夹专门存放文件   如: mkdir /home/file

然后解压 包

tar xzvf  报名

解压后会得到 文件夹 

4、在各个服务器上我统一创建了目录,用来存在 证书、可执行命令文件、配置文件,如下:

命令:mkdir /opt/kubernetes/{bin,cfg,ssl}

ssl:用来存放证书

bin:放执行文件

cfg:配置文件

 

5、把第三步解压出来的文件夹中的 etcd、etcdctl 复制到 /opt/kubernetes/bin  中。

6、在 cfg  文件夹中创建etcd的配置文件

命令:  vi /ops/kubernetes/cfg/etcd  ,然后把下面的内容复制进去,此处画红色圈的要特别注意,因为现在是在master1上面操作,因此 etcd_name 需要些 etcd01 与下面的cluster中的配对,IP地址要写master1的地址。如果是node节点则name需要修改对应的。

 

 7、创建一个文件用来启动 etcd

vi /usr/lib/systemd/system/etcd.service

然后添加以下内容

 

8、把之前生成的证书复制到 /ops/kubernetes/ssl 中

cp server*pem ca*pem /opt/kubernetes/ssl

 

9、启动 etcd

systemctl start etcd

systemctl enable etcd

 

查看etcd 的状态:ps -ef |grep etcd
查看日志的命令:journalctl -u etcd

查看这个linux 信息(tail:命令-只查看文件末端内容) :tail /var/log/messages -f

 

10、然后node节点中也按上面配置。

全部配置完成后,我在master 服务器中把/ops/kubernetes/bin 添加到环境变量中的,因为后期需要经常使用此bin文件中的执行文件。

步骤一:在master上编辑 文件
vi /etc/profile

然后在文件中添加变量,然后保存
PATH=$PATH:/opt/kubernetes/bin

步骤二:source /etc/profile ,这样即可。

 

11、切换到 cd /home/ssl 文件中,执行以下命令,来检查etcd是否部署成功

命令:

/opt/kubernetes/bin/etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://192.168.161.151:2379,https://192.168.161.152:2379,https://192.168.161.153:2379" cluster-health

发现都启动成功。如果出现错误,请自行查看etcd 日志。如果在启动 etcd 时 发现 命令一直卡在那边,不用担心,etcd 已经启动,直接 按 ctrl+c  即可。查看etcd 的状态:ps -ef |grep etcd

 

 12、此处已经把tls证书和etcd部署成功,下篇就将部署flanneld 网络

为什么需要部署flanneld呢?需要进行服务器互相通信,防止IP重复,导致冲突等。请听下回分解。


 

 

 

asp.net Core 交流群:787464275 欢迎加群交流
如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【推荐】按钮精神支持,因为这种支持是我继续写作,分享的最大动力!

作者:LouieGuo
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!

微信公众号:欢迎关注                                                 QQ技术交流群: 欢迎加群

                

LouieGuo
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
2月前
|
Kubernetes 监控 安全
Kubernetes实战:集群管理与自动化技术详解
【6月更文挑战第27天】Kubernetes实战聚焦集群自动化管理,涵盖核心概念如主从架构、API Server及工作节点,强调自动扩缩容、RBAC安全控制与日志监控。通过IaC工具如Helm实现配置自动化,结合Prometheus等进行持续监控,强调安全策略与资源优化,展现K8s在现代应用管理中的威力。
|
5天前
|
运维 Kubernetes Go
"解锁K8s二开新姿势!client-go:你不可不知的Go语言神器,让Kubernetes集群管理如虎添翼,秒变运维大神!"
【8月更文挑战第14天】随着云原生技术的发展,Kubernetes (K8s) 成为容器编排的首选。client-go作为K8s的官方Go语言客户端库,通过封装RESTful API,使开发者能便捷地管理集群资源,如Pods和服务。本文介绍client-go基本概念、使用方法及自定义操作。涵盖ClientSet、DynamicClient等客户端实现,以及lister、informer等组件,通过示例展示如何列出集群中的所有Pods。client-go的强大功能助力高效开发和运维。
24 1
|
26天前
|
存储 Kubernetes 监控
Kubernetes集群管理的最佳实践
【7月更文挑战第25天】遵循上述最佳实践可以显著提升Kubernetes集群的管理效率、安全性和性能。然而,每个集群的环境和需求都是独特的,因此在实际操作中还需根据具体情况进行调整和优化。希望本文能为你管理Kubernetes集群提供一些有益的参考。
|
6天前
|
Kubernetes jenkins 持续交付
Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)
Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)
10 0
|
8天前
|
存储 Kubernetes API
K8S集群管理:用名字空间分隔系统资源
【8月更文挑战第12天】Kubernetes的名字空间是一种逻辑概念,用于将集群分割成多个独立区域,实现资源隔离,避免不同应用间的干扰。
|
1月前
|
Kubernetes 持续交付 Python
Kubernetes(通常简称为K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。
Kubernetes(通常简称为K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。
|
1月前
|
运维 Kubernetes 负载均衡
docker、docker compose、k8s有什么区别?
Docker 这个东西所扮演的角色,容易理解,它是一个容器引擎,也就是说实际上我们的容器最终是由Docker创建,运行在Docker中,其他相关的容器技术都是以Docker为基础,它是我们使用其他容器技术的核心。
91 1
|
21天前
|
运维 Kubernetes 安全
K8s多集群管理:选对方法,为K8s集群赋能
阿里云容器服务团队在2019年推出注册集群,随着几年的发展,注册集群已经在多个行业和众多客户中应用,为K8s集群全面赋能,提供一站式的控制台体验,运维能力和云上弹性扩展能力,帮助您高效管理不同供应商和不同位置的K8s集群。
|
2月前
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行
|
2月前
|
Kubernetes 安全 测试技术
超大规模商用 K8s 场景下,阿里巴巴如何动态解决容器资源的按需分配问题?
超大规模商用 K8s 场景下,阿里巴巴如何动态解决容器资源的按需分配问题?

相关产品

  • 容器服务Kubernetes版