Kubernetes
前言
搭建集群前提:
熟悉 Linux 操作系统
熟悉 Docker 的基本使用。
Namespace 做隔离,Cgroups 做限制,rootfs 做文件系统
容器的本质是进程
Kubernetes 就是操作系统
Pod 是一组共享了某些资源的容器(关乎容器设计模式)
一、K8s是什么?
它是一个为 容器化 应用提供集群部署和管理的开源工具,由 Google 开发, Go 语言编写。
主要特性:
- 高可用,不宕机,自动灾难恢复
- 灰度更新,不影响业务正常运转
- 一键回滚到历史版本
- 方便的伸缩扩展(应用伸缩,机器加减)、提供负载均衡
- 有一个完善的生态
Kubernetes 可以为你提供集中式的管理集群机器和应用,加机器、版本升级、版本回滚,那都是一个命令就搞定的事,不停机的灰度更新,确保高可用、高性能、高扩展。
二、应用部署的三种方案
传统部署方式: 应用直接在物理机上部署,机器资源分配不好控制,出现Bug时,可能机器的大部分资源被某个应用占用,导致其他应用无法正常运行,无法做到应用隔离。
虚拟机部署: 在单个物理机上运行多个虚拟机,每个虚拟机都是完整独立的系统,性能损耗大。
容器部署: 所有容器共享主机的系统,轻量级的虚拟机,性能损耗小,资源隔离,CPU和内存可按需分配。
三、K8s的集群架构
master:主节点,控制平台,不需要很高性能,不跑任务,通常一个就行了,也可以开多个主节点来提高集群可用度。
Master 节点,由三个紧密协作的独立组件组合而成,它们分别是负责 API 服务的 kube-apiserver、负责调度的 kube-scheduler,以及负责容器编排的 kube-controller-manager。
整个集群的持久化数据,则由 kube-apiserver 处理后保存在 Etcd 中.
Node:计算节点,计算节点上最核心的部分,则是一个叫作 kubelet 的组件。
kubelet 主要负责同容器运行时(比如 Docker 项目)打交道。
kubelet 还通过 gRPC 协议同一个叫作 Device Plugin 的插件进行交互。
kubelet 的另一个重要功能,则是调用网络插件和存储插件为容器配置网络和持久化存储。
重要概念Pod:豆荚,K8S 调度、管理的最小单位,一个 Pod 可以包含一个或多个容器,每个 Pod 有自己的虚拟IP。一个工作节点可以有多个 pod,