Kubernetes 系列(一):Kubernetes 介绍、架构、安装
前言
Kubernetes介绍
当容器就从一个开发者手里的小工具,一跃成为了云计算领域的绝对主角;而能够定义容器组织和管理规范的“容器编排”技术,则当仁不让地坐上了容器技术领域的“头把交椅”。
而这里以 Google 与 RedHat 公司共同主导的 Kubernetes 项目最为出名,更是被称为下一代分布式系统中的操作系统。
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效。
Kubernetes作为容器调度管理系统,对于负载均衡、 服务发现、高可用、滚动升级、自动伸缩、监控、备份、容灾恢复等容器云平台的功能要求有原生支持。
Kubernetes的成功
1.容器化的快速发展。
2.基于Google borg的经验。
3.Kubernetes自身定位:涉及容器调度、编排,并擅长管理容器之间关系。
Kubernetes 项目最主要的设计思想是,从更宏观的角度,以统一的方式来定义任务之间的各种关系,并且为将来支持更多种类的关系留有余地。
原文以下部分转载:https://www.cnblogs.com/lyq863987322/p/8516958.html#_label2_0
K8s架构图,介绍
Master(管理节点)
- API Server:供Kubernetes API接口,主要处理 Rest操作以及更新Etcd中的对象。 所有资源增删改查的唯一入口。
- Scheduler:绑定Pod到Node上,资源调度。
- Controller Manager: 所有其他群集级别的功能,目前由控制器Manager执行。资源对象的 自动化控制中心。
- Etcd:所有持久化的状态信息存储在Etcd中。
Node(计算节点)
- Kubelet:管理Pods以及容器、镜像、Volume等,实现对集群 对节点的管理
- Kube-proxy:提供网络代理以及负载均衡,实现与Service通讯。
- Docker Engine:负责节点的容器的管理工作。
API SERVER(授权)
- 只有API Server与存储通信,其他模块通过 API Server访问集群状态。
- 一个工作节点的问题不影响集群体。
- 在K8s集群中,所有的配置管理操作都声明 式而非命令式的。
- 各个模块在内存中缓存自己的相关状态以 提高系统性能。
Scheduler(资源调度)
- 负责集群的资源调度,根据特定的调度算法将pod调度到指定的minion上。
- 这部分工作分出来变成一个组件,意味着可以很方便地替换成其他的调度器。
- Scheduler调度器输入是待调度pod和可用的工作节点列表,输出则是应用调度 算法从列表中选择一个最优的用于绑定待调度的pod节点。
Controller Manager(控制管理中心)
- Controller Manager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点、命名空间、服务账号、资源定额等的管理并执行自动化修复流程,确保集群处于预期的工作状态
- 在Kubernetes集群中,每个Controller就是一个操作系统,它通过API Server监控系统的共享状态,并尝试着将系统状态从“现有状态”修正到“期望状态”
POD(资源池)
- Pod是K8s集群中所有业务类型的基础
- Pod是在K8s集群中运行部署应用或服务的最小单元,它是可以支持多容器的。
- Pod的设计理念是支持多个容器在一个Pod中共享网络地址和文件系统。
- POD控制器Deployment、Job、DaemonSet和 PetSet
LABEL(标签)
- Label是一个 key=value的键值对,由用户指定,可以附加到 K8S资源之上。
- 给某个资源定义一个标签,随后可以通过label进行查询和筛选 ,类似SQL的where语句。
- Label可以给对象创建多组标签
Replication Controller,RC
- RC是K8s集群中最早的保证Pod高可用的API对象。通过监控运行中的Pod来保证集群中运行指定数目的Pod副本。
- 指定的数目可以是多个也可以是1个;少于指定数目,RC就会启动运行新的Pod副本;多于指定数目,RC就会杀死多余的Pod副本。
- 即使在指定数目为1的情况下,通过RC运行Pod也比直接运行Pod更明智,因为RC也可以发挥它高可用的能力,保证永远有1个Pod在运行。
PC总结
- RC里包括完整的POD定义模板
- RC通过Label Selector(标签选择器)机制实现对POD副本的自动控制。
- 通过改变RC里的POD副本以实现POD的扩容和缩容
- 通过改变RC里POD模块中的镜像版本,可以实现POD的滚动升级。
K8s组件
K8s安装配置
K8s安装方法
yum安装 1.5.2
二进制安装
kubeadm安装(官方) 需要梯子,全部容器化
minkube安装
编译安装
自动化安装
K8s资源
官网 kubernetes.io
中文社区 https://www.kubernetes.org.cn/
Github https://github.com/kubernetes/kubernetes
命令行参考 https://kubernetes.io/docs/reference/generated/kub ectl/kubectl-commands#
K8s的安装环境要求
1、linux 内核3.10以上
2、64位系统
3、内存4G
4、安装epel
5、安装docker
6、开启yum cache保存安装RPM包
K8s中有三种类型的ip
物理ip(宿主机ip)
集群ip(cluster ip):10.254.0.0/16
pod(容器的ip):172.16.0.0/16
相关文章
- linux(centos8):安装kubernetes worker节点并加入到kubernetes集群(kubernetes 1.18.3)
- linux(centos8):kubeadm单机安装kubernetes(kubernetes 1.18.3)
- ABAP和Go语言的初始化操作, Kubernetes的Init Container
- SAP云平台,Netweaver,Kubernetes和C4C的用户和角色关系
- 【K3s】第24篇 K3s上部署和配置Kubernetes 仪表盘(亲测实践)
- 【云原生 | Kubernetes 系列】1个POD2个container实现Wordpress K8s部署
- k49.第十九章 K8s运维篇-集群升级 -- kubernetes v1.20 二进制包安装方式升级(二)
- y65.第三章 Kubernetes从入门到精通 -- RBAC多账户实现案例(三八)
- 《Kubernetes网络权威指南》读书笔记 | iptables
- kubernetes API 访问控制之:认证
- k8s之安装 Kubernetes 多集群管理工具 - Kuboard v3版本
- 【云原生 • Kubernetes】kubernetes 核心技术 - Ingress
- 【云原生 • Kubernetes】kubernetes 核心技术 - Service
- Kubernetes(k8s)Ingress原理
- Kubernetes pod控制器 DaemonSet 与 StatefulSet讲解
- Kubernetes Kubelet 状态更新机制 node-status-update-frequency
- Kubernetes Loki安装部署并收集日志
- 【云原生 | Kubernetes 系列】---Prometheus Blackbox_exporter监控
- a31.ansible 生产实战案例 -- 基于二进制包安装kubernetes v1.21 -- 集群升级(二)
- Kubernetes部署_使用kubernetes部署Mysql主从结构(Kubernetes工作实践类)