1.k8s介绍

1.历史和现状

Laas 基础设施平台服务 --代表厂商 阿里云

Paas 平台及服务 --新浪 (k8s) docker 是paas 的标准

Saas 软件及服务

1、发展经历

以前:mesos apache 分布式资源管理框架 2019-5 twitter > kubernetes

Docker swarm 2019-07 阿里云宣布 docker swarm 剔除

Kubernetes google 10年容器话基础框架 borg go语言对borg进行重新编写

特点:

轻量级(消耗的资源比较少)

开源

弹性伸缩

负载均衡:IPVS(IP虚拟服务器)

适合人群:软件工程师,测试工程师 ,运维工程师 ,软件架构师 ,项目经理

云原生的定义:

实际上,云原生是一条最佳路径或者最佳实践。更详细的说,云原生为用户指定了一条低心智负担的、敏捷的、能够以可扩展、可复制的方式最大化地利用云的能力、发挥云的价值的最佳路径。

因此,云原生其实是一套指导进行软件架构设计的思想。按照这样的思想而设计出来的软件:首先,天然就“生在云上,长在云上”;其次,能够最大化地发挥云的能力,使得我们开发的软件和“云”能够天然地集成在一起,发挥出“云”的最大价值。

所以,云原生的最大价值和愿景,就是认为未来的软件,会从诞生起就生长在云上,并且遵循一种新的软件开发、发布和运维模式,从而使得软件能够最大化地发挥云的能力。说到了这里,大家可以思考一下为什么容器技术具有革命性?

其实,容器技术和集装箱技术的革命性非常类似,即:容器技术使得应用具有了一种“自包含”的定义方式。所以,这样的应用才能以敏捷的、以可扩展可复制的方式发布在云上,发挥出云的能力。这也就是容器技术对云发挥出的革命性影响所在,所以说,容器技术正是云原生技术的核心底盘。

2. 知识图谱

介绍说明:前世今生 kubernetes 框架 kubernetes关键字含义

基础概念:什么是pod 控制器类型 k8s网络通讯模式

kubernetes:构建k8s集群

资源清单:资源掌握资源清单的语法编写pod掌握pod 的生命周期***

pod控制器:掌握各种控制器的特点以及使用定义方式

服务发现(servece):掌握svc(交换虚拟链路) 原理及其构建方式

存储:掌握多种存储类型的特点 ,并且能够在不同环境中选择合适的存储方案(自己的见解)

调度器:掌握调度器原理 , 能够根据要求把pod定义到想要的节点运行

集群安全机制:集群的认证 鉴权 访问控制 , 原理及其流程

helm:类型linux里面的yum包管理工具掌握HELM原理 , HELM模板自定义,HELM部署一些常用的插件

运维 : 修改kubeadm达到证书可用期限为10年 能够构建高可用状态

服务器分类

  • 有状态服务:DBMS

  • 无状态服务:lvs apache

高可用集群副本数据最好是 》=3奇数个

查看 k8s api支持版本的文档 https://kubernetes.io/docs/reference/

通过api 查看各个控制器的支持版本

kubectl api-versions

api-resources

可以通过查看api-resources来查看受支持的资源。

这里的资源包括Kubernetes自带的,和用户自建的CRD
kubectl api-resources 

第三列和第五列就可以看到title为APIVERSIONKIND,其实到此就已经可以明确如何对应使用资源了。

kubectl explain

通过kubectl explain {kind_name}可以参考到某个kind资源拥有的字段以及对应的apiVersion

查看资源支持所有字段

kubectl explain { kind_name } --recursive

如:kubectl explain { kind_name } --recursive

因为太长这里就不列出来了。

查看具体字段里的子字段

kubectl explain { kind_name }.字段名1.字段名2

其中从左往右是父子关系,如:deployment.spec.selector

当在自己写yaml文件时,没有参考示例,可以使用这些命令来摸索

3.组件说明

etcd:官方将它定位成一个可信赖的分布式键值存储服务 ,它能够为整个分布式集群存储一些关键数据 , 协助分布式集群的正常运转

推荐在kubernetes 集群中使用etcdv3 ,v2 版本已在kubernetsv1.11中弃用

server端安装:

apiserver:所有服务访问的统一入口

crontrollermanager:维持副本期望数目

scheduler:负责介绍任务 ,选择合适的节点进行分配任务

etcd:键值对数据库, 存储k8s集群所有重要信息(持久化)

kubelet:直接跟容器引擎交互实现容器的生命周期管理

kube-proxy:负责写入规则至iptables ,IPvs实现服务映射访问的

coreDNS:可以为集群中的svc创建一个域名IP的对于关系解析

DASHBOARD:给k8s集群提供一个B/s结构访问体系

INGRESS CONTROLLER:官方只能实现四层代理 , ingress 可以实现七层代理

fedetation:提供一个可以跨几圈中心多个k8s统一管理

Prometheus :提供k8s集群的监控能力

elk:提供k8s 集群日志统一分析接入平台

4.云原生

4.1发展史

首先从第一个要的问题,那就是“什么是云原生?”云原生、CNCF 都是目前非常热门的关键词,但是这些技术并不是非常新鲜的内容。

  • 2004 年— 2007 年,Google 已在内部大规模地使用像 Cgroups 这样的容器技术;
  • 2008 年,Google 将 Cgroups 合并进入了 Linux 内核主干;
  • 2013 年,Docker 项目正式发布。
  • 2014 年,Kubernetes 项目也正式发布。这样的原因也非常容易理解,因为有了容器和 Docker 之后,就需要有一种方式去帮助大家方便、快速、优雅地管理这些容器,这就是 Kubernetes 项目的初衷。在 Google 和 Redhat 发布了 Kubernetes 之后,这个项目的发展速度非常之快。
  • 2015 年,由Google、Redhat 以及微软等大型云计算厂商以及一些开源公司共同牵头成立了 CNCF 云原生基金会。CNCF 成立之初,就有 22 个创始会员,而且 Kubernetes 也成为了 CNCF 托管的第一个开源项目。在这之后,CNCF 的发展速度非常迅猛;
  • 2017 年,CNCF 达到 170 个成员和 14 个基金项目;
  • 2018 年,CNCF 成立三周年有了 195 个成员,19 个基金会项目和 11 个孵化项目,如此之快的发展速度在整个云计算领域都是非常罕见的。

4.2 云原生的现状

  1. 云原生基金会 —— CNCF;
  2. 云原生技术社区,比如像 CNCF 目前正式托管的 20 多个项目共同构成了现代云计算生态的基石,其中像 Kubernetes 这样的项目已经成为了世界第四活跃的开源项目;
  3. 除了前面两点之外,现在全球各大公有云厂商都已经支持了 Kubernetes。此外,还有 100 多家技术创业公司也在持续地进行投入。现在阿里巴巴也在谈全面上云,而且上云就要上云原生,这也是各大技术公司拥抱云原生的一个例子。

五、各个版本支持情况说明

  • alpha
    名称中带有alpha的API版本是进入Kubernetes的新功能的早期候选版本。这些可能包含错误,并且不保证将来可以使用。

  • beta
    API版本名称中的beta表示测试已经超过了alpha级别,并且该功能最终将包含在Kubernetes中。 虽然它的工作方式可能会改变,并且对象的定义方式可能会完全改变,但该特征本身很可能以某种形式将其变为Kubernetes。

  • stable
    稳定的apiVersion这些名称中不包含alpha或beta。 它们可以安全使用。

  • v1
    这是Kubernetes API的第一个稳定版本。 它包含许多核心对象。

  • apps/v1
    apps是Kubernetes中最常见的API组,其中包含许多核心对象和v1。 它包括与在Kubernetes上运行应用程序相关的功能,如Deployments,RollingUpdates和ReplicaSets。

  • autoscaling/v1
    此API版本允许根据不同的资源使用指标自动调整容器。此稳定版本仅支持CPU扩展,但未来的alpha和beta版本将允许您根据内存使用情况和自定义指标进行扩展。

  • batch/v1
    batchAPI组包含与批处理和类似作业的任务相关的对象(而不是像应用程序一样的任务,如无限期地运行Web服务器)。 这个apiVersion是这些API对象的第一个稳定版本。

  • batch/v1beta1
    Kubernetes中批处理对象的新功能测试版,特别是包括允许您在特定时间或周期运行作业的CronJobs。

  • certificates.k8s.io/v1beta1
    此API版本添加了验证网络证书的功能,以便在群集中进行安全通信。 您可以在官方文档上阅读更多内容。

  • extensions/v1beta1
    此版本的API包含许多新的常用Kubernetes功能。 部署,DaemonSets,ReplicaSet和Ingresses都在此版本中收到了重大更改。

  • policy/v1beta1
    此apiVersion增加了设置pod中断预算和pod安全性新规则的功能

  • rbac.authorization.k8s.io/v1
    此apiVersion包含Kubernetes基于角色的访问控制的额外功能。这有助于您保护群集

posted @ 2021-07-25 14:47  白色的番茄  阅读(393)  评论(0编辑  收藏  举报