【Devops】 Kubernetes 入门与基础

前言:

公司项目中部署是使用K8s集群进行部署的,所以特做笔记和感悟如下:

Kubernetes 是什么,为什么要用它?

Kubernetes(简称K8s)源自Google,是一种基于Docker容器的容器集群管理系统。

Kubernetes为容器化的应用提供了资源调度、部署运行、服务发现、运行时扩容缩容等整一套解决方案,利用Kubernetes提供的功能,我们可以非常方便的管理不同主机上部署在容器的应用。

--------------------------------------------------------------------------------------------------------

背景:

企业的发布从之前的单机器部署,按计划(一个月,2周)发布上线已经逐步演变成:  云上部署,微服务, 按需部署(要求随时上线)

那么容器技术就应运而生,通过容器配置好发布需要测环境变量和参数,设置好网络安全访问规则。需要做到 "writer once , run anywhere" 

Docker作为一种容器技术已经成为了业界事实上的标准,真正实现了"writer once , run anywhere"  开发者只需要一个镜像就能发布到集群的任意一个节点。

Google 公司在Docker尚未提出自己的容器编排技术的时候直接开源了K8s,可以说占尽先机; (参考谷歌开源的大数据框架,基本等于一次业内变革)

容器编排调度引擎 —— k8s 的优势

  • 自动化容器的部署和复制
  • 随时扩展或收缩容器规模
  • 将容器组织成组,并且提供容器间的负载均衡
  • 很容易地升级应用程序容器的新版本
  • 提供容器弹性,如果容器失效就替换它,等等...

严格上来说,使用Kubernetes只需一个部署文件,使用一条命令就可以部署多层容器(前端,后台等)的完整集群:

kubectl create -f deploy.yaml  

K8s 的集群

 如图所示,K8s集群分为一个mater节点,N个node子节点;

1. master节点里面包括 API server, Replication-controller 等组件 (可以在此节点操作整个k8s集群)

  1.1 Service会完成如下两件重要的事情:

    • 会为Service创建一个本地集群的DNS入口,因此前端Pod只需要DNS查找主机名为 ‘backend-service’,就能够解析出前端应用程序可用的IP地址。
    • 现在前端已经得到了后台服务的IP地址,但是它应该访问2个后台Pod的哪一个呢?Service在这2个后台Pod之间提供透明的负载均衡,会将请求分发给其中的任意一个(如下面的动画所示)。通过每个Node上运行的代理(kube-proxy)完成。

  1.2 Replication Controller确保任意时间都有指定数量的Pod“副本”在运行。如果为某个Pod创建了Replication Controller并且指定3个副本,它会创建3个Pod,并且持续监控它们。

        如果某个Pod不响应,那么Replication Controller会替换它,保持总数为3.

2. node子节点里面包含了多个pod, pod里面可以有多个container (注意node是实体化的,有具体的主机和IP地址,Pod 是一个虚拟单元,可以随时创建和删除)

   通常称为Minion。每个节点都运行如下Kubernetes关键组件:

    • Kubelet:是主节点代理。
    • Kube-proxy:Service使用其将链接路由到Pod,如上文所述。
    • Docker或Rocket:Kubernetes使用的容器技术来创建容器。

 

K8s 集群简图:

猜你喜欢

转载自www.cnblogs.com/Ronaldo-HD/p/12982043.html