k8s(七)初步了解K8s

160 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情

本节主要是提及一些k8s的相关概念,当然也会涉及到k8s的一些相关命令,暂时无需自己去敲这些命令,安装k8s集群,会在下一节中讲解,那时候再去体验这些命令也不迟。

K8s诞生

如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。

就在这个时候,K8S出现了。

K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。

至于他为什么叫K8s,那是因为从k到s之间刚好有8个字母(就是这么随意)。

功能:为容器化的 应用提供了资源调度、部署运行、服务发现、扩容及缩容等一整套功能。

K8s集群

对于应用系统的架构,一般可以分为:

  1. 有中心架构,通常为一个管理节点和多个工作节点(或者数据节点),例如HDFS。
  2. 无中心架构,所有的节点皆为同等的伙伴关系,例如Redis集群。

而一个K8S系统,通常称为一个K8S集群(Cluster) ,他是属于有中心架构模式。

  • 一个Master节点(主节点) :Master节点主要还是负责管理和控制
  • 多个Node节点(工作节点) :Node节点是工作负载节点,里面是具体的容器

使用kubectl get node 来查看节点情况。

[root@master-1 ~]# kubectl get node
NAME        STATUS   ROLES    AGE   VERSION
master-1    Ready    master   72d   v1.17.11
slave-1     Ready    <none>   72d   v1.17.11
slave-2     Ready    <none>   72d   v1.17.11

Master

Kubernetes里的Master指的是集群控制节点,在每个Kubernetes集群 里都需要有一个Master来负责整个集群的管理和控制,基本上 Kubernetes的所有控制命令都发给它,它负责具体的执行过程,我们后 面执行的所有命令基本都是在Master上运行的。

Master通常会占据一个 独立的服务器(高可用部署建议用3台服务器),主要原因是它太重要 了,是整个集群的“首脑”,如果它宕机或者不可用,那么对集群内容器 应用的管理都将失效。

Master节点包括API Server、Scheduler、Controller manager、etcd。

  • API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”,即集群的入口及出口。

    • 包括认证、授权、准入等功能;
    • 还包括对etcl的数据缓存;
    • 建立其他模块与etcl的通信枢纽。
  • Scheduler负责对集群内部的资源进行调度,相当于“调度室”。调度过程:

    • Predict:过滤掉不符合业务需求的节点。
    • Priority:按照满足需求的情况下,选择最佳节点。
    • Bind:将工作节点与pod绑定,完成调度
  • Controller manager负责管理控制器,相当于“大总管”。

  • etcd:etcd的官方将它定位成一个可信赖的分布式键值(key,value)存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转

[root@master ~]# kubectl get pod -A -o wide |grep  master
kube-system   coredns-6d8c4cb4d-2fbpp          1/1     Running   0               2d21h   10.244.0.3    master   
kube-system   coredns-6d8c4cb4d-g8jzg          1/1     Running   0               2d21h   10.244.0.2    master   
kube-system   etcd-master                      1/1     Running   1 (2d21h ago)   2d21h   8.16.0.67     master   
kube-system   kube-apiserver-master            1/1     Running   1 (2d21h ago)   2d21h   8.16.0.67     master   
kube-system   kube-controller-manager-master   1/1     Running   2 (29h ago)     2d21h   8.16.0.67     master   
kube-system   kube-flannel-ds-7gm8n            1/1     Running   0               2d21h   8.16.0.67     master   
kube-system   kube-proxy-tdz44                 1/1     Running   0               2d21h   8.16.0.67     master   
kube-system   kube-scheduler-master            1/1     Running   2 (29h ago)     2d21h   8.16.0.67     master   

Node

Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod

Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。

  • Docker,Docker引擎,负责本机的容器创建 和管理工作。
  • Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。
  • Kube-proxy,主要负责为Pod对象提供代理。
  • Fluentd,主要负责日志收集、存储与查询。

Namespace

Namespace(命名空间)是资源隔离的基本单位,K8s将集群内部的资源分配到不同的Namespace下。

Kubernetes集群在启动后会创建一个名为default的Namespace,通过 kubectl可以查看:kubectl get namespaces

[root@master ~]# kubectl get ns
NAME                 STATUS   AGE
default              Active   39d
kube-node-lease      Active   39d
kube-public          Active   39d
kube-system          Active   39d

在使用kubectl命令查看k8s资源时都需要带上-n参数来指定命名空间,不指定时将是默认的命名空间。