ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1.k8s介绍

2021-07-25 15:04:02  阅读:263  来源: 互联网

标签:原生 CNCF Kubernetes 介绍 集群 版本 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基于角色的访问控制的额外功能。这有助于您保护群集

标签:原生,CNCF,Kubernetes,介绍,集群,版本,k8s
来源: https://www.cnblogs.com/syuee/p/15057822.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有