新手菜菜之2020Kubernetes详细介绍大全

前文 Kubernetes笔记(一):十分钟布置一套K8s环境 介绍了怎么快速建立一个k8s体系。为了持续运用k8s来布置咱们的应用,需要先对k8s中的一些根本组件与概念有个了解。

Kubernetes是什么

Kubernetes是Google于2014年根据其内部Brog体系开源的一个容器编列办理体系,可运用声明式的装备(以yaml文件的方法)主动地履行容器化应用程序的办理,包含布置、弹性、负载均衡、回滚等。

kubernetes供给的功能:

  • 主动发布与弹性:能够经过声明式的装备文件界说想要布置的容器,Kubernetes将主动进行容器的布置,达到希望的结果;经过指定容器副本数,或许设置根据资源负载情况(如CPU、内存运用率),主动对容器组进行快速的弹性——增大或缩小容器数量
  • 滚动晋级与灰度发布:采用逐步替换的策略完成滚动晋级,运用Kubernetes也能够很轻易地办理体系的灰度发布
  • 服务发现与负载均衡:Kubernetes经过DNS称号或IP地址暴露容器的拜访方法,而且可在同一容器组内完成负载分发与均衡
  • 存储编列:Kubernetes能够主动挂载指定的存储体系,如local storage/nfs/云存储等
  • 毛病恢复:Kubernetes主动重启现已停机的容器QQ空间破解,替换不满足健康检查的容器
  • 密钥与装备办理:Kubernetes能够存储与办理灵敏信息,如Docker Registry的登录凭证,密码,ssh密钥等

Kubernetes架构

咱们先来看一张Kubernetes的架构图

k8s-arch

Kubernetes是一套分布式体系, 与大多数分布式体系类似,包含操控节点(master node)与作业节点(worker node)。

master node

操控节点便是指挥官,担任发号施令的,其上运转一些办理服务来对整个体系进行办理与操控,包含

  • apiserver:作为整个体系的对外接口,供给一套Restful API供客户端调用,任何的资源恳求/调用操作都是经过kube-apiserver供给的接口进行,如kubectl、kubernetes dashboard等办理工具便是经过apiserver来完成对集群的办理
  • kube-scheduler:资源调度器,担任将容器组分配到哪些节点上
  • kube-controller-manager:办理操控器,集群中处理惯例使命的后台线程,破解QQ空间访问权限包含节点操控器(担任监听节点停机的事件并作出对应响应)、endpoint-controller(改写服务与容器组的关联信息)、replication-controller(保护容器组的副本数为指定的数值)、Service Account & Token操控器(担任为新的命名空间创立默许的 Service Account 以及 API Access Token)
  • etcd:数据存储,存储集群一切的装备信息
  • coredns:完成集群内部经过服务称号进行容器组拜访的功能

worker node

作业节点便是详细干活的小兵,其上也运转一些服务来履行指挥官分派的使命,包含

  • kubelet:是作业节点上履行操作的署理程序,担任容器的生命周期办理,定期履行容器健康检查,并上报容器的运转状况
  • kube-proxy:是一个具有负载均衡才能的简单的网络拜访署理,担任将拜访某个服务的恳求分配到作业节点的详细某个容器上(kube-proxy也运转于master node上)
  • Docker Daemon:这个不难理解,一切服务或容器组都要以Docker容器的方法来运转(但Kubernetes其实不局限于Docker,它支撑任何完成了Kubernetes容器引擎接口的容器引擎,如containerd、rktlet)

别的还有既在master node上也在worker node上运转的网络通讯组件 kube-flannel。这些服务组件一般运转在kube-system的命名空间中,如图

kube-system

Kubernetes根本概念

咱们再来看第二张图

k8s

功能组件在上面现已做了介绍。Kubernetes的操作目标主要包含容器组(Pod),服务(Service),副本操控器(replication-controller),及环绕这些的其它辅助目标

Pod

Pod是Kubernetes创立或布置的最小根本单元。一个Pod封装一个或多个应用容器、存储资源、一个独立的网络IP以及办理操控容器运转方法的策略选项。Pod中的每个容器同享网络命名空间(包含IP与端口),Pod内的容器能够运用localhost相互通讯。Pod能够指定一组同享存储卷Volumes,Pod中一切容器都能够拜访同享的Volumes,Volumes用于数据耐久化,防止容器重启丢掉数据。

Volume

Kubernetes运用Volume来处理Pod中容器重启数据丢掉的问题,以及Pod中多个容器间数据同享的问题。Kubernetes支撑的Volume类型包含:

  • emptyDir:当Pod分配到Node上时,将会创立emptyDir,只要Node上的Pod一直运转,Volume就会一直存在。当Pod(不论任何原因)从Node上被删去时,emptyDir也同时会删去,存储的数据也将永久删去,但删去容器不影响emptyDir
  • hostPath:hostPath答应挂载Node上的文件体系到Pod里边去。如果Pod需要运用Node上的文件,能够运用hostPath
  • nfs: 运用nfs网络文件体系供给的同享目录

ReplicationController

ReplicationController保证在任何时候都有按装备的Pod副本数在运转。现在推荐运用装备ReplicaSet(下一代ReplicationController)的Deployment来建立副本办理机制。

ReplicaSet

ReplicaSet是下一代ReplicationController,两者的唯一区别是ReplicaSet支撑新的根据调集的选择器,而ReplicationController仅支撑根据相等选择器的需求。

Deployment

Deployment为Pod与ReplicaSet供给了声明式的界说,描述你想要的目标状况是什么,Deployment controller就会帮你将Pod与ReplicaSet的实践状况改变到你想要的目标状况。

Service

一个Service能够看做一组供给相同服务的Pod的对外拜访接口。Kubernetes供给两种类型的Service:

  • NodePort: 集群外部能够经过Node IP与Node Port来拜访详细某个Pod
  • ClusterIP:指经过集群的内部IP暴露服务,服务只能够在集群内部能够拜访,这也是默许的 ServiceType

Label

Label便是一对key/value,能够附加到各种资源目标上,如Node、Pod、Service等,一个资源目标能够界说任意数量的Label。能够经过Label选择器来选择具备某个(些)Label的资源。

PV & PVC

PersistentVolume(PV) 为用户供给了一个存储笼统,由办理员设置,它是集群的一部分。就像节点是集群中的资源一样,PV也是集群中的资源。 PV是Volume之类的卷插件,但具有独立于Pod的生命周期。

PersistentVolumeClaim(PVC)是用户存储的恳求。它与Pod类似。2020QQ空间相册密码破解Pod耗费节点资源,PVC耗费PV资源。Pod能够恳求特定级别的资源(CPU和内存)。PVC能够恳求特定大小和拜访形式的存储资源(例如,能够以读/写或只读形式挂载)。

Secret

Secret处理了密码、token、密钥等灵敏数据的存储问题,Secret的三种类型:

  • Service Account :用来拜访Kubernetes API,由Kubernetes主动创立,而且会主动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中
  • Opaque :Base64编码格式的Secret,用来存储密码、密钥等
  • kubernetes.io/dockerconfigjson :用来存储docker registry的认证信息

ConfigMap

ConfigMap用来保存key/value对的装备数据,这个数据能够在Pods里运用,或许被用来为像controller一样的体系组件存储装备数据。ConfigMap能够方便的处理不含灵敏信息的字符串(灵敏信息可运用Secret)。

Namespace

Namespace类似于Kubernetes中的虚拟集群,便于不同的分组在同享运用整个集群的资源的同时还能被别离办理。比方咱们如果开发测验共用一个Kubernetes集群,则能够将开发环境的服务布置到dev的namespace,测验环境的布置到test的namespace。

Ingress

为集群服务供给外部拜访,包含根据Nginx与Traefik两个版别,为服务供给域名绑定拜访与途径路由功能。也能够根据Ingress完成服务的灰度发布。

总结

本文对Kubernetes中触及的根本组件与概念进行了收拾,对其根本构成有了一个大致的理解与印象。下一篇将从一个实践出发,完成一个根据Gitlab+Jenkins+K8s的CI/CD流程,以对触及的各个组件进行深化了解与学习。

本文转载于:https://www.jmwww.net/a/13201.html 尊重作者,转载必须保留连接

posted @ 2020-05-08 12:08  ITPS  阅读(258)  评论(0编辑  收藏  举报