kubernetes简介

kubernetes简介Kubernetes简介初识KubernetesKubernetes(K8s)是一个用于自动化部署、扩展和管理容器化应用程序的开源系统2014年6月7日Google推出了Borg的开源版本2

大家好,又见面了,我是你们的朋友全栈君。

Kubernetes 简介

初识Kubernetes

Kubernetes(K8s)是一个用于自动化部署、扩展和管理容器化应用程序的开源系统

2014年6月7日Google推出了Borg的开源版本

2015年7月21日Google与Linux基金会组建了CNCF基金会

2015年7月21日Kubernetes v1.0 发布,并捐献给CNCf基金会

2017年Docker宣布将原生支持 Kubernetes,包括Docker EE、Docker CE 以及 Docker for Mac/Windows 等全平台的支持

2017年Mesosphere也开始支持Kubernetes

每三个月发布一个新版本,目前最新的版本是1.17

 

image.png

 

 

项目地址:


https://github.com/kubernetes/kubernetes

image.png

官方文档

https://kubernetes.io/zh/docs/home

 

image.png

https://mp.weixin.qq.com/s/Hh2KWt7F0ExUSJzVcTy8rQ

Kubernetes 1.13:Kubeadm简化群集管理、容器存储接口(CSI)和CoreDNS作为默认DNS现已普遍可用

https://mp.weixin.qq.com/s/eg26el8eUOmKcUDTuvl_KQ

【深度】Kubernetes v1.16 最值得工程师关注的改动

https://mp.weixin.qq.com/s/i4MfuvozyoIEhxeGL4Hxcw

回顾 Kubernetes 最近 6 个版本重点更新

https://mp.weixin.qq.com/s/fSqfHmG8Yrw_l9Yqir2Dxg

美国时间 12 月 9 日,Kubernetes 迎来了 2019 年的最后一个新版本 1.17

https://mp.weixin.qq.com/s/XPWjRa3V9asWSwDcNYyWYg

k8s v1.17 新特性预告: 拓扑感知服务路由

https://mp.weixin.qq.com/s/SxVUNKfOn8BvMQ8tFbcdZw

 

 

最新版本

 

image.png

 

 

 

云原生与CNCF

https://www.cncf.io/

Cloud Native Computing Foundation

云原生计算基金会(以下简称CNCF)是一个开源软件基金会,它致力于云原生(Cloud Native)技术的普及和可持续发展

https://www.kubernetes.org.cn/5482.html

 

CNCF项目

image.png

 

云原生应用之路
https://jimmysong.io/blog/from-kubernetes-to-cloud-native/

 

 

<span role="heading" aria-level="2">kubernetes简介

 

云原生应用的三大特征:容器化封装、动态管理、面向微服务

https://www.jianshu.com/p/13251fd149a6

 

 

KubeCon 中国上海-2018

 

image.png

 

KubeCon 中国上海-2019

image.png

 

image.png

 

image.png

 

KubeCon 中国上海-2020 受疫情影响已取消

 

Docker容器

容器十年 ——一部软件交付编年史

https://mp.weixin.qq.com/s/O7pZGz5oQOdS1Yj1YiRm5w

 

复习Docker

早期架构

image.png

 

 

 

image.png

 

 

 

新架构

Docker简介

https://www.yuque.com/liweiming/gfe9m0/yp0tna

 

 

<span role="heading" aria-level="2">kubernetes简介

 

https://www.docker.com/products/container-runtime

 

image.png

 

 

containerd

美国时间2019年2月28日,CNCF正式宣布containerd毕业https://blog.csdn.net/RancherLabs/article/details/88102538

 

https://www.cnblogs.com/xuxinkun/p/8036832.html

<span role="heading" aria-level="2">kubernetes简介

 

CRI + shimv2: 一种 Kubernetes 集成容器运行时的新思路

https://mp.weixin.qq.com/s/rCyp_EbP46A5p9_XufNCQQ

Kubernetes 容器运行时演进

https://mp.weixin.qq.com/s/cf2jQ7pEHwZ2CGOjDhguSQ

 

<span role="heading" aria-level="2">kubernetes简介

 

 

接触到时间

Docker 2017年7月

Kubernetes 2018年5月

image.png

 

image.png

 

image.png

 

image.png

 

image.png

 

image.png

 

 

 

Kubenetes架构

https://kubernetes.io/zh/docs/concepts/

 

image.png

 

 

image.png

 

 

<span role="heading" aria-level="2">kubernetes简介

Kubenetes组件

https://mp.weixin.qq.com/s/xjaVVOMyH1JiVjQUdwMdGQ

kube-apiserver 用于暴露Kubernetes API。任何的资源请求/调用操作都是通过kube-apiserver提供的接口进行

ETCD Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划

kube-controller-manager 管理控制器,是集群中处理常规任务的后台线程;这些控制器包括:

节点 (Node)控制器

副本(Replication)控制器:负责维护系统中每个副本中的pod

端点(Endpoints)控制器:填充Endpoints对象(即连接ServicesPods

Service AccountToken控制器:为新的Namespaces创建默认帐户访问API Token

kube-scheduler 监视新创建没有分配到NodePod,为Pod选择一个Node

kube-proxy 通过在主机上维护网络规则,并执行连接转发来实现serviceIptables/ipvs

Kubelet 负责维护容器的生命周期

Addons:

coredns负责为整个集群提供DNS服务

Ingress对外提供七层服务的访问

metries-server提供资源监控

Dashboard提供GUI


<span role="heading" aria-level="2">kubernetes简介 <span role="heading" aria-level="2">kubernetes简介

 

image.pngimage.png

Kubectl

image.png

Kubernetes接口

CRI(Container Runtime Interface):容器引擎接口,提供计算资源

CNI(Container Network Interface):容器网络接口,提供网络资源

CSI(Container Storage Interface):容器存储接口,提供存储资源

image.png

 

 

kubectl 创建pod 流程

 

image.png

 

image.png

 

image.png

 

image.png

 

image.png

 

 

 

Kubenetes资源对象

 

 


image.png

 

 

 

Pod

image.png

 

pod健康检查与生命周期

kubectl 创建 Pod 背后到底发生了什么?

https://mp.weixin.qq.com/s/ctdvbasKE-vpLRxDJjwVMw

高清版

https://hugo-picture.oss-cn-beijing.aliyuncs.com/what-happens-when-k8s.svg

image.png

 

image.png

 

 

 

深入剖析Kubernetes

kubernetes的调度机制工作原理

Informer Path:

监听Etcd中Pod、Node、Service

PriorityQueue  scheduler cache

Scheduling Path:Predicates Bind

 

image.png

 

 

 

image.png

 

 

Service

 

 

iptable

image.png

 

 

ipvs

 

image.png

 

Kubenetes网络

https://mp.weixin.qq.com/s/X43vIG3hE635DiPozvhsGA

 

网络方案介绍之Overlay网络-Flannelvxlan

image.png


Flannel 是由CoreOS维护的一个容器跨主机网络方案,由golang语言编写,后端支持多种网络模式。

VxLAN模式:Linux内核3.7+以上版本支持vxlan,使用linux内核中的VxLAN模块封装报文。也是默认模式。

Host-gw模式:即Host Gateway,它是通过在节点上,创建到达目标容器地址的路由直接完成报文转发。但是这种模式要求所有节点必须在同一个二层网络,不太适用于集群跨需要跨子网环境。

UDP模式:使用普通的UDP协议完成对于报文的封装,实现overlay网络的转发。转发性能最差。

 

 

Flannel默认网络模式。

每个节点部署一个flanneld作为agent,用于生成vtep设备和从etcd获取和上传subnet信息;

从一个大网段划分子网每个主机对应一个子网;

通过veth-pair网卡连接宿主机和POD;

同子网直接通过CNI0进行数据包转发,不同子网,封装vxlan通过flannel.1这个vtep设备建立的vxlan隧道进行传输。

访问集群外部网络经过iptables做Snat。

image.png

优势

基于VxLAN的Overlay网络虚拟化技术简化网络结构,对底层网络侵入性和依赖性小。

保证整个集群中所有容器能够获得同属一个内网且不重复的IP地址。

学习成本低,应用范围广,用户只需要一些基础知识就可以设置适合大多数用例的环境

 

缺点

由于利用linux内核的VxLAN模块使用CPU进行数据包的解封装操作,会带来一定的性能损耗。

本身没有网络隔离组件,没有办法进行安全策略控制。使用flanel变种canal可实现隔离,flannel+calico Network policy

 

网络方案介绍之undelay网络——Calico(BGP)

image.png


Calico是一种开源网络和网络安全解决方案,适用于容器,虚拟机和基于主机的本机工作负载。Calico支持广泛的平台,包括Kubernetes,docker,OpenStack和裸机服务。Calico后端支持两种网络模式。

BGP模式:将节点做为虚拟路由器通过BGP路由协议来实现集群内容器之间的网络访问。

IPIP模式:在原有IP报文中封装一个新的IP报文,新的IP报文中将源地址IP和目的地址IP都修改为对端宿主机IP。

 

每个节点部署一个calico-node作为agent,从etcd获取和上传subnet信息;

从一个大网段划分子网每个主机对应一个子网;

通过veth-pair网卡连接宿主机和POD;

生成明细路由,同子网直接通过明细路由进行数据包转发

将宿主机做为一个虚拟路由器,整个集群节点默认在一个自治域内,通过BGP路由协议将宿主机上路由条目互相宣告学习,这样整个集群主机都有到对应POD路由信息,不同集群通过生成的BGP路由转发。

访问集群外部网络经过iptables做Snat。

网络策略使用calico-networkpolicy组件生成对应的iptables规则。

image.png

 

网络方案介绍之undelay网络——Calico(BGP)路由反射

为了防止BGP路由环路,BGP协议规定在一个AS(自治系统)内部,IBGP路由器之间只能传一跳路由信息,所以在一个AS内部,IBGP路由器之间为了学习路由信息需要建立全互联的对等体关系,但是当一个AS规模很大的时候,这种全互联的对等体关系维护会大量消耗网络和CPU资源,所以这种情况下就需要建立路由反射器以减少IBGP路由器之间的对等体关系数量。

 

image.png

 

Calico(BGP)网络模型优势:

数据包采用纯三层网络协议转发,没有封装和解封装数据包的过程,传输性能几乎接近于物理网络本身的传输性能。

集群中运行的容器是以独立的IP协议栈进行数据转发,可以通过calico提供的基于iptables的安全管理功能对于集群内的容器进行网络安全防护。

Calico(BGP)网络模型劣势:

需要集群内所有节点在同一个二层网络中,或对应的三层路由转发设备支持并打开BGP路由来学习对应路由条目,对底层网络侵入性较大。

学习成本较高,用户需要具备一定的BGP知识才能完成对一些用例的支持。

若需要硬件设备学习BGP路由,则需要考虑硬件路由器本身性能和最大路由条目数。

 

 

 

Canal是一种将CalicoFlannel网络部署在一起的统一的联合网络解决方案,在Canal网络体系中,由Flannel提供网络解决方案,由Calico提供网络策略支持(例如:对POD之间进行网络流量隔离等),因为Canal底层是flannel,所以Canal一样支持flannel的多种网络模式。

image.png

复习Docker 网络图片来自极客时间:深入剖析Kubernetes 

image.png

 

image.png

 

image.png

 

image.png

 

image.png

 

 

image.png

 

 

image.png

 

Kubernetes集群部署

*****二进制部署

Saltstack部署

https://github.com/unixhot/salt-kubebin

Ansible部署

https://github.com/lizhenliang/ansible-install-k8s

kubeasz

https://github.com/easzlab/kubeasz

二进制安装k8s集群

https://mp.weixin.qq.com/s/tU7DJXHL4bIyJETmtl0cYA

跟我一步步二进制部署高可用kubernetes集群

https://mp.weixin.qq.com/s/MOo9wTlQRdzEWwr0nA204g

kubernetes一键高可用安装

https://github.com/fanux/sealos

image.png

https://www.funtl.com/zh/service-mesh-kubernetes/%E9%AB%98%E5%8F%AF%E7%94%A8%E9%9B%86%E7%BE%A4.html

image.png

 

离线部署

Breeze

https://github.com/wise2c-devops/breeze

image.png

 

容器化部署

 

RKE部署Kubernetes集群高可用架构

https://www.yuque.com/liweiming/xzgi37/tth7l6

kubeadm

https://www.yuque.com/liweiming/k8s/bdl9um

kubernetes管理平面

rancher

https://www.rancher.cn/

wayne

https://360yun.org

https://github.com/Qihoo360/wayne

kubesphere

https://kubesphere.io/

https://kubesphere.com.cn/docs/zh-CN/installation/all-in-one/

Kubernetes日志

 

 

kubernetes监控

……

<span role="heading" aria-level="2">kubernetes简介

 

进阶知识

 

 

image.png

 

 

image.png

 

 

image.png

 

 

Redhat openshift

 

 

容器云未来:Kubernetes、Istio 和 Knative

https://mp.weixin.qq.com/s/r1o64hqrc2IOdWmrswj-ww

 

image.png

 

微服务

 

国内首发 | Istio服务网格,再次引领云原生领域风向标

https://mp.weixin.qq.com/s/DtxB83pDO6pTju1mvMpCTw

 

Istio架构转变

 

旧:

image.png

 

新:

image.png

 

Serverless 编排框架

 

Knative系列—IBM_OpenTech
https://www.bilibili.com/video/av68335390/?redirectFrom=h5

 

?Knative 云原生应用开发指南.pdf

 

 

 

Serverless函数计算介绍以及典型场景实践

https://mp.weixin.qq.com/s/ynCAAdmq0jkJUinmCbD7IQ

了解Serverless,以腾讯地图、微信小程序为例

https://mp.weixin.qq.com/s/drgofr5dlVEtzfh95KzNrw

image.png

 

 

image.png

 

image.png

 

image.png

 

image.png

 

image.png

 

image.png

 

Serverless 知识库

https://mp.weixin.qq.com/s/U5Nk-DM19R8ugUrgg5A7TQ

 

 

 

image.png

 

 

image.png

 

 

边缘计算

rancher/k3s

https://github.com/rancher/k3s

k3s进阶之路

https://space.bilibili.com/430496045/channel/detail?cid=103026

 

image.png

 

 

image.png

 

image.png

 

 

image.png

 

 

 

 

 

 

 

推荐书籍

image.png

 

 

 

image.png

 

image.png

 

 

 

推荐资料

*****深入剖析Kubernetes 张磊

https://time.geekbang.org/column/intro/116

*****Kubernetes Handbook——Kubernetes中文指南/云原生应用架构实践手册

https://jimmysong.io/kubernetes-handbook/

*****Kubernetes Handbook (Kubernetes指南) https://kubernetes.feisky.xyz

https://github.com/feiskyer/kubernetes-handbook

*****从Docker到Kubernetes进阶

https://www.qikqiak.com/k8s-book/docs/18.YAML%20%E6%96%87%E4%BB%B6.html

*****才云开源内部 Kubernetes 学习路径

https://github.com/caicloud/kube-ladder#%E7%9B%AE%E6%A0%87-5

https://mp.weixin.qq.com/s/s423Fx6tcqcjMy1mL8rGmQ

*****走进k8s

https://idig8.com/

k8s源码学习

https://blog.tianfeiyu.com/source-code-reading-notes/

华为云社区 Cloud Native Lives

https://bbs.huaweicloud.com/forum/thread-9573-1-1.html

*****华为云kubernetes管理员实训课

https://bbs.huaweicloud.com/forum/thread-11064-1-1.html

如何入门 Kubernetes

https://mp.weixin.qq.com/s/lo51iq5Dh-jXqvREdaDzYQ

10分钟看懂Docker和K8S

https://mp.weixin.qq.com/s/gCKHzKRL-19U8Vu7EHlIMg

漫画 | Kubernetes带你一帆风顺去远航

https://mp.weixin.qq.com/s/T_CGLmi_gk0-7wJaX5nxaA

这里有最全的Kubernetes初学者指南!!!

https://mp.weixin.qq.com/s/3A38DoZ-tvvE12QI0XNnnA

*****CNCF x Alibaba 云原生技术公开课 – 云原生教程 – 阿里云大学

https://edu.aliyun.com/roadmap/cloudnative

Kubernetes 系列微讲堂(IBM)

https://v.youku.com/v_show/id_XMzA5NzkxNzA1Ng==

*****【(千锋教育)服务网格化 Service Mesh】Kubernetes

https://www.funtl.com/zh/guide/%E6%9C%8D%E5%8A%A1%E7%BD%91%E6%A0%BC%E5%8C%96.html

https://www.bilibili.com/video/av52359802/?p=2

Spring Cloud & Kubernetes 

https://mp.weixin.qq.com/s/KbHi3JxqUmIEQoTjWZOJbA

使用Rook+Ceph在Kubernetes上作持久存储

https://mp.weixin.qq.com/s/NTnWQOlhoCFsMZUvjFe5ag

Traefik 2.0 正式发布

https://mp.weixin.qq.com/s/nMMN7hAJK6SFn1V1YyxvHA

Learn Kubernetes using Interactive Browser-Based Scenarios

https://www.katacoda.com/courses/kubernetes

 

博客园

https://www.cnblogs.com/dukuan/category/1320955.html

https://www.cnblogs.com/tylerzhou/p/10969041.html

https://www.cnblogs.com/zisefeizhu/category/1513596.html

https://www.cnblogs.com/linuxk/category/1248289.html

https://www.cnblogs.com/weiyiming007/category/1379897.html

https://www.cnblogs.com/linuxk/category/1248289.html

https://www.cnblogs.com/breezey/tag/kubernetes/default.html?page=1

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/155641.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • expdp时遇到ORA-31693&amp;ORA-02354&amp;ORA-01466

    expdp时遇到ORA-31693&amp;ORA-02354&amp;ORA-01466

  • 疫情数据可视化_全国疫情数据可视化项目

    疫情数据可视化_全国疫情数据可视化项目###1.作业描述这个作业属于哪个课程课程结对学号221701225,221701208这个作业要求在哪里作业要求这个作业的目标完成需求分析,原型设计等开发前期任务作业正文本文其他参考文献echarts官方文档、Axure中使用echarts图表、Axure使用教程2.客户需求用户需求在主界面—全国地图中在全国地图上使用不同的…

  • realsense深度图像保存方法[通俗易懂]

    realsense深度图像保存方法[通俗易懂]一般使用realsense时会保存视频序列,当保存深度图像时,需要注意保存的图像矩阵的格式,不然可能造成深度值的丢失。在众多图像库中,一般会使用opencv中的imwrite()函数进行深度图像的保存。一般深度图像中深度值的单位是mm,因此一般使用np.uint16作为最终数据格式保存。例子:importnumpyasnpimportcv2deffun1(…

  • mysql服务器失败1396_Mysql ERROR 1396 (HY000) 错误的解决办法

    mysql服务器失败1396_Mysql ERROR 1396 (HY000) 错误的解决办法建立用户的时候报告这个错误:ERROR1396(HY000):OperationCREATEUSERfailedfor‘abc’@’localhost’原因是mysql中已经有了这个用户,从mysql.user中直接删除delete,然后刷新权限FLUSHPRIVILEGES,再建用户就不会有这个问题了。如果是dropuser的话,mysql内部会自动刷新一下,那么再建也不会…

  • java线程与cpu线程_坑惨了什么意思

    java线程与cpu线程_坑惨了什么意思在java中,线程间的通信可以使用wait、notify、notifyAll来进行控制。从名字就可以看出来这3个方法都是跟多线程相关的,但是可能让你感到吃惊的是:这3个方法并不是Thread类或者是Runnable接口的方法,而是Object类的3个本地方法。下图是我总结的Java资料,想要资料的话请点795983544暗号CSDN。其实要理解这一点也并不难,调用一个Object的wait与notify/notifyAll的时候,必须保证调用代码对该Object是同步的,也就是说必须在作用等.

  • C语言运算符优先级列表(超详细)[通俗易懂]

    C语言运算符优先级列表(超详细)[通俗易懂]每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家。初级运算符()、[]、-&gt;、. 高于 单目运算符  高于 算数运算符(先乘除后加减) 高于 关系运算符  高于  逻辑运算符(不包括!)  高于  条件运算符  高于  赋值运算符 高于  逗号运算符。位运算符的优先级比较分散。除了赋值运算符、条件运算…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号