kubernetes 是什么语言开发的

Python017

kubernetes 是什么语言开发的,第1张

kubernetes是go语言写的,他里面有一些restful api接口,是开源容器应用自动化部署技术,也就是大家经常说的k8s。

kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。

使用Kubernetes可以:

自动化容器的部署和复制

随时扩展或收缩容器规模

将容器组织成组,并且提供容器间的负载均衡

很容易地升级应用程序容器的新版本

提供容器弹性,如果容器失效就替换它,等等...

K8s学习有一个前提条件,需要先掌握docker,如果你没有docker基础的话,那还不能学习 K8s k8s它底层的部署容器的那么容器本来就是docker。

可以看看这个视频教程,还是非常认真仔细的!

使用 k8s.io/client-go/tools/cache

使用 k8s.io/client-go/informers ,可以watch CRD资源但需要使用code-generator生成clientset和informer(指CRD资源)。

使用 runtimeCache "sigs.k8s.io/controller-runtime/pkg/cache" , 可以watch CRD资源,无需特殊处理。下例 v1alpha1.Component 是CRD资源。

k8s是google公司使用go语言开发,借鉴borg系统开发出来的。

k8s集群服务器主要分为两类角色,分别为master和node。

api server: k8s网关,所有指令请求都必须经过apiserver。

scheduler: 调度器 根据调度算法,将请求资源调度到某一个node节点。

controller: 控制器,维护k8s资源对象。

etcd: 分布式存储组件,用于存储资源对象。

docker: 运行容器的基础环境,容器引擎。

kubelet: 每个node节点都存在一份,在node节点上的资源操作指令均由kubelet执行,从etcd扫描相关请求,在节点上执行请求。

kube-proxy: 代理服务,负载均衡

fluentd: 日志收集服务

pod: 是k8s管理的基本单位(最小单元),pod 内部是容器

k8s是用来管理容器的,但是不直接操作容器,最小操作单元为pod

特点:

pod是一个虚拟化的分组(有自己的ip地址、主机名),pod相当于独立主机,可以封装一个或多个容器。通常情况下,一个pod中要么部署一个服务,要么部署多个相关的服务

1、pod底层网络和数据存储:

pod底层网络和存储主要依赖pause容器,该容器作用如下:

2、pod内部容器使用localhost相互访问

3、pod内部容器创建之前必须先创建pause