avatar

第1章 k8s简介

第1章 k8s简介

Kubernetes 简称k8s. 是一个开源的 Linux
容器自动化运维平台,它消除了容器化应用程序在部署、伸缩时涉及到的许多手动操作。换句话说,你可以将多台主机组合成集群来运行
Linux 容器,而 Kubernetes可以帮助你简单高效地管理那些集群。

Kubernetes 最开始是由 Google 的工程师设计开发的。Google 作为 Linux
容器技术的早期贡献者之一,曾公开演讲介绍 Google 如何将一切都运行于容器之中(这是
Google 的云服务背后的技术)。Google一周内的容器部署超过 20
亿次,全部的工作都由内部平台 Borg支撑。Borg是 Kubernetes 的前身,几年来开发 Borg
的经验教训也成了影响 Kubernetes 中许多技术的主要因素。

第2章 k8s特性

Kubernetes是为生产环境而设计的容器调度管理系统,对于负载均衡、服务发现、高可用、滚动升级、自动伸缩等容器云平台的功能要求有原生支持

一个K8s集群是由分布式存储(etcd)、服务节点(Minion,etcd现在称为Node)和控制节点(Master)构成的。所有的集群状态都保存在etcd中,
Master节点上则运行集群的管理控制模块。
Node节点是真正运行应用容器的主机节点,在每个Minion节点上都会运行一个Kubelet代理,控制该节点上的容器、镜像和存储卷等。

第3章 k8s系统架构

Kubernetes被设计为Master和Node两个节点,Master为控制节点,Node为计算节点或工作节点,在Master节点上有一个API
Server,对外提供标准的RestAPI,这也是Kubernetes集群的入口,意味只要和集群交互就必须连到API
Server

image

image

3.1 Master节点介绍

Master节点主要有4个组件,API Server, Scheduler, Contoller, etcd

1.API Server

提供Kubernetes
API接口,主要处理Rest操作以及更新Etcd中的对象,是所有资源增删改查的唯一入口。

2.Scheduler

绑定Pod到Node上,主要做资源调度

3.Controller Manager

所有其他集群级别的功能,目前由控制器器Manager执行。资源对象的自动化控制中心,Kubernetes集群有很多控制器。

4.Etcd

所有持久化的状态信息存储在Etcd中,这个是Kubernetes集群的数据库

3.2 Node节点介绍

Node节点是Kuerntes集群的工作节点,Node节点上主要运行了Docker,Kubelet,kub-proxy三个服务

image

1.Docker Engine

负责节点容器的管理工作,最终创建出来的是一个Docker容器。

2.kubelet

安装在Node上的代理服务,用来管理Pods以及容器/镜像/Volume等,实现对集群对节点的管理。

3.kube-proxy

安装在Node上的网络代理服务,提供网络代理以及负载均衡,实现与Service通讯。

第4章 kubernetes逻辑架构

4.1 Pod

Pod是Kubernetes的最小管理单元,一个Pod可以包含一组容器和卷。虽然一个Pod里面可以包含一个或者多个容器,但是Pod只有一个IP地址,而且Pod重启后,IP地址会发生变化。

image

4.2 Controller

集群中会有很多Pod,那么就需要使用控制器来管理Pod

k8s中有很多控制器,常见的控制器如下:

  • Replication Controller(新版本已经被ReplicaSet所替代)
  • ReplicaSet(新版本被封装在Deployment中)
  • Deployment:封装了Pod的副本管理、部署更新、回滚、扩容、缩容等功能。
  • DaemonSet:保证所有的Node上有且只有一个Pod在运行。
  • StatefulSet:有状态的应用,为 Pod 提供唯一的标识,它可以保证部署和 scale
  • 的顺序。
  • Job:使用Kubernetes运行单一任务。
  • CronJob:使用Kubernetes运行定时任务。

4.3 Service

由于Pod的生命周期是短暂的,而且每次重启Pod的IP地址都会发生变化,而且一个Pod有多个副本,也就是说一个集群中有了多个节点,就需要考虑负载均衡的问题。Kubernetes使用Service来实现Pod的访问,而且Service有一个Cluster
IP,通常也称之为VIP,是固定不变的。

第5章 kubernetes网络介绍

在Kubernetes集群中存在着三种网络,分别是Node网络、Pod网络和Service网络,这几种网络之间的通信需要依靠网络插件,Kubernetes本身并没有提供,社区提供了像Flannel、Calico、Cannal等网络插件。

5.1 Node网络

Node网络指的是Kubernetes
Node节点本地的网络,在本实验环境中使用的是10.0.0./24这个网段,所有的Node和Master在该网段都可以正常通信。

5.2 Service网络

Service是为Pod提供访问和负载均衡的网络地址段

5.3 Pod网络

后面创建的Pod,每一个Pod都会有一个IP地址,这个IP地址网络段被称之为Pod网络,如下图所示。

文章作者: Wu Fei
文章链接: http://linuxwf.com/2020/04/09/%E7%AC%AC1%E7%AB%A0-k8s%E7%AE%80%E4%BB%8B/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WF's Blog
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论