Skip to main content

[DevOps] kubernetes

kubernetes 简介

常见容器编排部署工具

  • docker 三剑客
  • mesos + marathon
  • kubernetes

kubernetes 用户

  • 2017 年 docker 官方宣布原生支持 kubernetes
  • RedHat 公司 PaaS 平台 OpenShift 核心是 kubernetes
  • Rancher 平台核心是 kubernetes
  • 现国内大多数公司都可使用 kubernetes 进行传统 IT 服务转换,以实现高效管理等。

kubernetes 功能

Kubernetes 是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过 Kubernetes 能够进行应用的自动化部署和扩缩容。在 Kubernetes 中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。Kubernetes 积累了作为 Google 生产环境运行工作负载 15 年的经验,并吸收了来自于社区的最佳想法和实践。

  • 自动装箱

    • 基于容器对应用运行环境的资源配置要求自动部署应用容器
  • 自我修复(自愈能力)

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

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

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

    • 可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
  • 版本回退

    • 可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退
  • 密钥和配置管理

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

    • 自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要

    • 存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph、Cinder 等)、公共云存储服务等


k8s 架构

场景

播仔所在的项目研发部门最近要进行应用运行基础环境迁移,需要由原先的虚拟机环境迁移到 k8s 集群环境中,以便应对开发快速部署和快速测试的需要,因此,需要播仔准备一套可以用于开发需求的 k8s 集群,但是对于仅有容器基础应用的播仔来讲,如何去构建一套 k8s 集群呢?如果你是播仔应该从哪方面入手呢?

如果我是播仔,首先我需要了解 k8s 集群架构,这样有助于对 k8s 平台进行合理部署和应用。

应用部署架构分类

  • 无中心节点架构

    • GlusterFS
  • 有中心节点架构

    • HDFS
    • k8s

k8s 架构

k8s

  • Master Node

    • k8s 集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求;
    • Master Node 由 API Server、Scheduler、ClusterState Store(ETCD 数据库)和 Controller MangerServer 所组成;
  • Worker Node

    • 集群工作节点,运行用户业务应用容器;
    • Worker Node 包含 kubelet、kube proxy 和 Container Runtime;

k8

TODO