编辑
2023-07-29
🚀运维部署
00
请注意,本文编写于 691 天前,最后修改于 225 天前,其中某些信息可能已经过时。

目录

1.概述和特征
概述
kubernetes的设计理念
有哪些优势?
2.k8s架构组件
3.k8s核心概念
pod
Controlller
Service
4. 搭建k8s集群
搭建k8s环境平台规划
服务器硬件配置要求
搭建k8s集群部署方式

1.概述和特征

概述

最早在2014年google开源的 主要做的是:容器化操作

传统化部署:脚本式或者安装的方式来实现 新的方式:容器化安装,带环境安装,关键技术:docker,docker一般用于单机编排

k8s:可以管理docker,进行容器化应用部署,使用k8s利于应用扩展,

目标:实施让部署容器化应用更加简洁和高效

kubernetes的设计理念

大多数用户,希望kubernetes项目带来的体验是确定的:

我有应用的容器景象,请在一个给定的集群上把应用运行起来。此外,用户还希望kubernetes提供路由网关、水平扩展、监控、备份、灾难恢复等一系列运维能力。

这其实就是最经典的PasS项目的能力,用户使用docker的Compose+Swarm,完全可以自己开发出这些功能。

而kubernetes项目着重解决的问题是:

有哪些优势?

  1. 自动装箱和回滚更新

    自动装箱即自我部署。Kubernetes采用滚动更新策略更新应用,一次更新一个pod,当更新过程中出现问题,Kubernetes会进行回滚更新,保证升级业务不受影响

  2. 自我修复(自愈能力)

    在节点产生故障时,保证预期的副本数量不会减少,在产生故障的同时,终止健康检查失败的容器并部署新的容器,保证上线服务不会中断

  3. 水平扩展

  4. 服务发现(或者叫负载均衡):对外提供统一接口的功能

    为多个容器提供统一的访问入口(内部IP地址和一个DNS名称),使所有的容器负载均衡,集群内应用可以通过DNS名称完成互相反问。

  5. 密钥和配置管理

    kubernetes允许存储和管理敏感信息,如密码、OAuth令牌和SSh密钥。用户可以部署和更新机密和应用程序配置,而无须重建容器镜像,也不会在堆栈配置中暴露机密。

  6. 存储编排

    Kubernetes挂载外部存储系统,将这些存储作为集群资源的一部分来使用,增强存储使用的灵活性。

  7. 弹性伸缩

    kubernetes可以使用命令或基于CPU使用情况自动快速扩容和缩容应用程序,保证在高峰期的高可用性和业务低档期回收资源,降低运行成本

  8. 提供认证和授权

    控制用户是否有权限使用API进行操作,精细化权限分配

  9. 资源监控

    工作节点纪恒Advisor资源收集工具,可以快速实现对集群资源的监控

2.k8s架构组件

  1. Master组件:主控节点

    • apiserver:集群统一入口,以restful方式,交给etcd存储
    • scheduler:节点的调度,选择node节点应用部署
    • controller-manager:处理集群中常规后台任务,一个资源对应一个控制器
    • etcd:存储,用于保存集群中各种数据,例如状态数据等。
  2. Node组件:工作节点

    • kuberlet;master派到node节点代表,管理本机容器
    • kube-proxy:提供网络代理,负载均衡等操作。
    • docker

3.k8s核心概念

pod

  • pod是k8s中最小的部署单元,一组容器的集合
  • 1个pod中的容器是共享网络的
  • 生命周期是短暂的,重启之后就找不到了。
  • 一组pod叫做命名空间

Controlller

  • 确保预期的pod副本数量
  • 无状态的应用部署:有两个节点,其中1个节点故障,其节点中的容器可以移到另一个节点中直接用。随便用
  • 有状态的应用部署:需要依赖存储,网络ip要唯一。有状态是必须要在特定条件下才能用
  • 确保所有的node运行同一个pod
  • 一次性任务和定时任务

Service

  • 定义一组pod的访问规则

4. 搭建k8s集群

搭建k8s环境平台规划

  1. 单master集群

image.png

  1. 多master集群(也可以叫做:高可用集群) image.png

服务器硬件配置要求

  • 测试环境:

image.png

  • 正式环境:更高要求

搭建k8s集群部署方式

  • kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署kubernetes集群

  • 二进制包 从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。可以学习很多工作原理,有利于后期维护

本文作者:Eric

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!