初探kubernetes(K8S)

2022/4/8 k8sDevops

# k8s基础入门

第一章 初探kubernetes(K8S)

# 前言

官网地址 (opens new window) kubernetes是2014年谷歌开源的,容器化集群管理系统,简称:k8s。 谷歌、京东、 360、等大厂都全面拥抱 k8s 容器化是大势所趋 linux docker

  • 使用k8s进行容器化应用部署
  • 使用k8s利于应用扩展
  • 使用k8s的目标是让容器化应用更加简洁和高效

# 一、优势和特性:

# 1.自动装箱

基于容器对应用运行环境的资源配置要求自动部署应用容器。

# 2.自我修复

当容器失败时,会对容器进行重启。 当所部署的Node节点有问题时,会对容器进行重新部署和重新调度。 当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务。

# 3.水平扩展

通过简单的命令,用户UI界面或基于CPU等资源使用情况。对容器进行规模扩大或规模剪裁。

# 4.服务发现

用户不需要使用额外的服务发现机制,就能够基于Kubernetes自身能力实现服务发现和负载均衡。

# 5.滚动更新

可以根据应用的变化,对应用容器运行的应用,进行一次性或批量更新。

# 6.版本回退

可以根据应用部署的情况,对应用容器运行的应用,进行历史版本即时回退。

# 7.密钥和配置管理

在不需要重新构建新镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。

# 8.存储编排

自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要。 存储系统可以来自于本地目录,网络存储(NFSGlusteCeph)等、公共云存储服务。

# 9.批处理

提供一次性任务,定时任务,满足批量数据处理和 分析的场景

# 二、K8s的集群架构组成:

# 1.架构图:

# 2.Master Node(主控节点)

  • api-server :集群统一入口,以restful风格来请求,然后交给etcd存储
  • scheduler :节点调度,选择node节点应用部署
  • controller-manager :处理集群中常规后台任务,资源控制,一个资源对应一个控制器
  • etcd:是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。用于报存集群相关的数据

# 3.Work Node(工作节点)

  • **kubelet **:master 节点派到 node节点的代表,管理本机容器的各种操作(创建、生命周期、)
  • kube-proxy: 提供网络代理、负载均衡等操作
  • Docker
    • Podpod中就是容器应用的副本

# 三、K8s三大基本核心概念

# 1.Pod:容器副本

  • 最小部署单元
  • 一组容器的集合
  • 共享网络
  • 生命周期是短暂的

# 2.Controller:通过它来创建部署pod

  • 确保预期的pod副本数量
  • 无状态应用部署
  • 无状态其实就是这个pod副本可以直接用,不需要什么特定的约定
  • 有状态应用部署
  • 就是这个pod副本不能可以直接用(可能它依赖数据存储、网络ip唯一)
  • 确保所有的node运行同一个pod
  • 一次性任务和定时任务

# 3.Service:通过service来作为统一入口进行访问

  • 定义一组pod的访问规则

总结:通过service来作为统一入口进行访问,然后由controller去创建进行部署pod

# 四、如何从零搭建k8s集群

# 1.搭建k8s环境平台规划

  • 单master集群

  • 多master集群(node和master的中间多了负载均衡)

# 2.服务器硬件配置要求

  • 测试环境(master 2核4G 20G ;Node 4核8G 40G)---最低
  • 生产环境(master 8核16G 100G ;Node 16核64G 500G)---最低

# 3.搭建k8s集群部署方式

  • 基于客户端工具 kubeadm (opens new window)
    • kubeadm init : 创建一个master节点
    • kubeadm join <master节点的IP和端口>:将node节点加入到当前集群中
  • 基于二进制包方式 (这个相对麻烦一些)

# 五、k8s的核心概览

  • Pod:最小单元
  • Controller:控制层
  • Server、Ingress:对外暴露端口
  • RBAS:安全控制模型
  • Helm:包管理工具

# 集群和分布式的区别

集群主要描述了一个集合,一些相似的东西,提供相似的功能,这个就叫做集群。而分布式,主要是将一个东西,分发给一堆相似的内容或东西。集群描述了受众的状态,也就是处理机不是单一体,是一个相似的个体组成的群体。分布式描述了源头的处理方式,是将单一源分发给多个处理机,而非单一处理机进行处理。 当我们讲一个集群,我们着重描述这个处理机的静态状态,强调个体和群体之间的联系。 当我们讲分布式系统,我们着重讲这个处理机的动态状态,强调请求和处理直接的分发状况。

Last Updated: 2022/8/12 下午10:21:19