# k8s基础入门
第一章 初探kubernetes(K8S)
# 前言
官网地址 (opens new window)
kubernetes是2014年谷歌开源的,容器化集群管理系统,简称:k8s。
谷歌、京东、 360、等大厂都全面拥抱 k8s
容器化是大势所趋 linux
docker
- 使用k8s进行容器化应用部署
- 使用k8s利于应用扩展
- 使用k8s的目标是让容器化应用更加简洁和高效
# 一、优势和特性:
# 1.自动装箱
基于容器对应用运行环境的资源配置要求自动部署应用容器。
# 2.自我修复
当容器失败时,会对容器进行重启。 当所部署的
Node节点
有问题时,会对容器进行重新部署和重新调度。 当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务。
# 3.水平扩展
通过简单的命令,用户
UI界面
或基于CPU
等资源使用情况。对容器进行规模扩大或规模剪裁。
# 4.服务发现
用户不需要使用额外的服务发现机制,就能够基于
Kubernetes
自身能力实现服务发现和负载均衡。
# 5.滚动更新
可以根据应用的变化,对应用容器运行的应用,进行一次性或批量更新。
# 6.版本回退
可以根据应用部署的情况,对应用容器运行的应用,进行历史版本即时回退。
# 7.密钥和配置管理
在不需要重新构建新镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。
# 8.存储编排
自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要。 存储系统可以来自于本地目录,网络存储(
NFS
、Gluste
、Ceph
)等、公共云存储服务。
# 9.批处理
提供一次性任务,定时任务,满足批量数据处理和 分析的场景
# 二、K8s的集群架构组成:
# 1.架构图:
# 2.Master Node(主控节点)
- api-server :集群统一入口,以restful风格来请求,然后交给etcd存储
- scheduler :节点调度,选择node节点应用部署
- controller-manager :处理集群中常规后台任务,资源控制,一个资源对应一个控制器
- etcd:是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。用于报存集群相关的数据
# 3.Work Node(工作节点)
- **kubelet **:
master 节点
派到node节点
的代表,管理本机容器的各种操作(创建、生命周期、) - kube-proxy: 提供网络代理、负载均衡等操作
- Docker:
- Pod:
pod
中就是容器应用的副本
- Pod:
# 三、K8s三大基本核心概念
# 1.Pod:容器副本
- 最小部署单元
- 一组容器的集合
- 共享网络
- 生命周期是短暂的
# 2.Controller:通过它来创建部署pod
- 确保预期的pod副本数量
- 无状态应用部署
- 无状态其实就是这个pod副本可以直接用,不需要什么特定的约定
- 有状态应用部署
- 就是这个pod副本不能可以直接用(可能它依赖数据存储、网络ip唯一)
- 确保所有的node运行同一个pod
- 一次性任务和定时任务
# 3.Service:通过service来作为统一入口进行访问
- 定义一组pod的访问规则
总结:通过service来作为统一入口进行访问,然后由controller去创建进行部署pod
# 四、如何从零搭建k8s集群
# 1.搭建k8s环境平台规划
单master集群
多master集群(node和master的中间多了负载均衡)
# 2.服务器硬件配置要求
- 测试环境(master 2核4G 20G ;Node 4核8G 40G)---最低
- 生产环境(master 8核16G 100G ;Node 16核64G 500G)---最低
# 3.搭建k8s集群部署方式
- 基于客户端工具 kubeadm (opens new window)
- kubeadm init : 创建一个master节点
- kubeadm join <master节点的IP和端口>:将node节点加入到当前集群中
- 基于二进制包方式 (这个相对麻烦一些)
# 五、k8s的核心概览
- Pod:最小单元
- Controller:控制层
- Server、Ingress:对外暴露端口
- RBAS:安全控制模型
- Helm:包管理工具
# 集群和分布式的区别
集群主要描述了一个集合,一些相似的东西,提供相似的功能,这个就叫做集群。而分布式,主要是将一个东西,分发给一堆相似的内容或东西。集群描述了受众的状态,也就是处理机不是单一体,是一个相似的个体组成的群体。分布式描述了源头的处理方式,是将单一源分发给多个处理机,而非单一处理机进行处理。 当我们讲一个集群,我们着重描述这个处理机的静态状态,强调个体和群体之间的联系。 当我们讲分布式系统,我们着重讲这个处理机的动态状态,强调请求和处理直接的分发状况。