K8S

什么是K8S?

K8s是一个容器化应用提供集群部署和管理的开源工具由Google开发。

Kubernetes这个名字源于希腊语 是“舵手”或“飞行员”的意思 并且k和s之间有8个字符 所以叫作k8s 并且Google在2014年开源了Kubernetes

K8s主要特性

  • 高可用,不宕机,自动灾难恢复

  • 灰度更新,不影响业务正常运行

  • 一键回滚历史版本

  • 方便的伸缩扩展(应用伸缩、机器加减)、提供负载均衡

  • 有一个完善的生态

不同的部署方案

传统部署(Traditional Deployment)

应用直接在物理机上部署 机器资源分配不好控制 出现问题时 可能机器的大部分资源被某个应用占用导致其他的应用无法正常运行 无法做到应用的隔离

虚拟机部署(Virtualized Deployment)

在单个物理机上运行多个虚拟机每个虚拟机都是完整独立的系统 性能损耗大

容器部署(Container Deployment)

所有容器共享主机的系统轻量级的虚拟机 性能损耗小 资源隔离 CPU和内存按需分配

什么时候需要K8S呢?

当你的应用只跑在一台机器时候 一个docker+docker-compose就ok

当你的应用跑在3-4个机器上时候 依旧可以独立配置运行环境 + 负载均衡器

但是当你的机器逐渐增加 达到几十个的时候 k8s就可以一展身手了 让你轻松管理成千上万台机器

K8s可以给你提供集中式的管理集群机器和应用,加机器,版本升级,版本回滚,都是一个命令就可以解决的,不停机的灰度更新,确保高可用,高性能,高扩展

K8S架构图

Master(主节点)

控制平台,不需要很高的性能,不跑任务,通常一个就行了,也可以创建多个master提高集群的可用度

Work(工作节点)

可以是虚拟机或者物理计算机任务都在这里面跑 机器的性能需要好 通常有多个 可以不断的扩大集群 每个工作节点都由主节点管理

概念pod

豆荚,K8s调度 管理的最小单位,一个pod可以包含一个或者多个容器每个pod都有自己的虚拟ip,一个工作节点可以有多个pod,主要节点考量负载自动调度pod到哪个节点运行

Kubernetes组件

Kube-apiserver API服务器,公开了Kubernetes API

Etcd 键值数据库 可以作为保存Kubernetes所有集群数据的后台数据库

Kube-scheduler 调度pod到哪个节点运行

Ku-controller 集群控制器

Cloud-controller 与云服商交互

安装Kubernetes集群

  • Minikube

只是一个k8s集群模拟器 只有一个节点的集群 只有测试用 master和worker都在一起

  • 直接用云平台Kubernetes

可视化搭建 只需要简单几步就可以创建好一个集群

优点:安装简单 生态齐全 负载均衡器 存储等都给你配好 简单操作就搞定

  • 裸机安装

至少需要两台机器(主节点、工作节点 各一台)需要自己安装Kubernetes组件配置会稍微麻烦点 可以到各云厂商按时租用服务器 费用低 用完就销毁

缺点:配置麻烦,缺少生态支持 例如负载均衡器、云存储

Minikube安装

>安装简单 支持各种平台 需要提前安装Docker

# 启动集群

Minikube start

# 查看节点 kubectl是一个用来跟k8s集群进行交互的命令工具

Kubectl get node

# 停止集群

Minikube stop

# 清空集群

Minikube delete –all

# 安装集群可视化web UI控制台

Minikube dashboard

Logo

开源、云原生的融合云平台

更多推荐