kubeadm部署Kubernetes(k8s) 1.23.0高可用集群

Kubernetes介绍

kubernetes(k8s)是2015年由Google公司基于Go语言编写的一款开源的容器集群编排系统,用于自动化容器的部署、扩缩容和管理;

kubernetes(k8s)是基于Google内部的Borg系统的特征开发的一个版本,集成了Borg系统大部分优势;

官方地址:https://Kubernetes.io

代码托管平台:https://github.com/Kubernetes

除了k8s还有哪些容器编排系统?如:docker swarm、Openshift、Rancher、Mesos等。

LVS 、HAProxy 被规划为基础层,主要提供了一个高可用的7层负载均衡器
LVS keepalived 提供一个高可用的VIP(虚拟IP)

可以使用Nginx代替HAProxy吗?
是可以的,这边使用HAproxy是因为k8s文档中出现了HAproxy,且后续可能会有4层反代的要求,从而使用了HAProxy。

可以直接从LVS转发到Master吗?
理论上可行,我没有试验。

如果不缺两台机器推荐还是架设一层具有7层代理能力的服务。
k8s apiserver、harbor、etcd都是以HTTP的方式提供的api,如果有7层代理能力的服务后续会更容易维护和扩展。

LVS—300W/秒

Pod叫容器组

kubernetes具备的功能
  • 自我修复:k8s可以监控容器的运行状况,并在发现容器出现异常时自动重启故障实例;
  • 弹性伸缩:k8s可以根据资源的使用情况自动地调整容器的副本数。例如,在高峰时段,k8s可以自动增加容器的副本数以应对更多的流量;而在低峰时段,k8s可以减少应用的副本数,节省资源;
  • 资源限额:k8s允许指定每个容器所需的CPU和内存资源,能够更好的管理容器的资源使用量;
  • 滚动升级:k8s可以在不中断服务的情况下滚动升级应用版本,确保在整个过程中仍有足够的实例在提供服务;
  • 负载均衡:k8s可以根据应用的负载情况自动分配流量,确保各个实例之间的负载均衡,避免某些实例过载导致的性能下降;
  • 服务发现:k8s可以自动发现应用的实例,并为它们分配一个统一的访问地址。这样,用户只需要知道这个统一的地址,就可以访问到应用的任意实例,而无需关心具体的实例信息;
  • 存储管理:k8s可以自动管理应用的存储资源,为应用提供持久化的数据存储。这样,在应用实例发生变化时,用户数据仍能保持一致,确保数据的持久性;
  • 密钥与配置管理:Kubernetes 允许你存储和管理敏感信息,例如:密码、令牌、证书、ssh密钥等信息进行统一管理,并共享给多个容器复用;
kubernetes集群角色

k8s集群需要建⽴在多个节点上,将多个节点组建成一个集群,然后进⾏统⼀管理,但是在k8s集群内部,这些节点⼜被划分成了两类⻆⾊:

  • 一类⻆⾊为主节点,叫Master,负责集群的所有管理工作,和协调集群中运行的容器应用;
  • ⼀类⻆⾊为⼯作节点,叫Node,负责运行集群中所有用户的容器应用, 执行实际的工作负载 ;
Master管理节点组件:
  • API Server:作为集群的控制中心,处理外部和内部通信,接收用户请求并处理集群内部组件之间的通信;
  • Scheduler:负责将待部署的 Pods 分配到合适的 Node 节点上,根据资源需求、策略和约束等因素进行调度;
  • Controller Manager:管理集群中的各种控制器,例如 Deployment、ReplicaSet、Node 控制器等,管理集群中的各种资源;
  • etcd:作为集群的数据存储,保存集群的配置信息和状态信息;
Node工作节点组件:
  • Kubelet:负责与 Master 节点通信,并根据 Master 节点的调度决策来创建、更新和删除 Pod,同时维护 Node 节点上的容器状态;
  • 容器运行时(如 Docker、containerd 等):负责运行和管理容器,提供容器生命周期管理功能。例如:创建、更新、删除容器等;
  • Kube-proxy:负责为集群内的服务实现网络代理和负载均衡,确保服务的访问性;

非必须的集群插件:

  • DNS服务:严格意义上的必须插件,在k8s中,很多功能都需要用到DNS服务,例如:服务发现、负载均衡、有状态应用的访问等;
  • Dashboard: 是k8s集群的Web管理界面;
  • 资源监控:例如metrics-server监视器,用于监控集群中资源利用率;
kubernetes集群类型
  • 一主多从集群:由一台Master管理节点和多台Node工作节点组成,生产环境下Master节点存在单点故障的风险,适合学习和测试环境使用;
  • 多主多从集群:由多台Master管理节点和多Node工作节点组成,安全性高,适合生产环境使用
kubernetes集群规划
主机IP 主机名 主机配置 角色
192.168.30.10 master01 2C/4G 管理节点
192.168.30.11 master02 2C/4G 管理节点
192.168.30.12 master03 2C/4G 管理节点
192.168.30.13 node01 2C/4G 工作节点
192.168.30.14 node02 2C/4G 工作节点
192.168.30.70 k8s-ha1 1C/2G LB
192.168.30.71 k8s-ha2 1C/2G LB
一、k8s环境搭建
1、集群前期环境准备-----------------------
#修改主机名hostname
hostnamectl set-hostname master01

#Xshell 命令exit退出登录后快捷键登录
ctrl+shift+R

#安装
yum install lrzsz

#初始化脚本:执行脚本命令:bash
bash sysconfigure.sh


#解压
tar -xf ansible.tar.gz

#安装当前目录下所有.rpm文件
yum install ./*.rpm -y


#清空内容
:%d
dd一直按

ansible:批量管理工具

#修改ansible组域名
/etc/ansible/hosts
[k8s]
192.168.30.10
192.168.30.11
192.168.30.12
192.168.30.13
192.168.30.14

#列出组内主机
ansible k8s --list-host

#免密
ssh-keygen

#循环靠谱id 给$ip
for ip in 192.168.30.{
   10..14}
> do
> ssh-copy-id $ip
>

相关推荐

  1. kubeadm部署Kubernetes(k8s) 1.23.0可用

    2024-03-17 18:34:03       21 阅读
  2. kubeadm部署k8s

    2024-03-17 18:34:03       30 阅读
  3. 使用kubeadm搭建可用的K8s

    2024-03-17 18:34:03       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-17 18:34:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-17 18:34:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-17 18:34:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-17 18:34:03       18 阅读

热门阅读

  1. 简单理解promise。。。

    2024-03-17 18:34:03       21 阅读
  2. python爬取B站CC字幕(隐藏式字幕)

    2024-03-17 18:34:03       17 阅读
  3. 微服务的无状态、版本控制向后兼容、流量整型

    2024-03-17 18:34:03       16 阅读
  4. IBatis与MyBatis区别

    2024-03-17 18:34:03       18 阅读