在k8s中,有各类各样的概念和术语。这些概念是必需要学习和掌握的。咱们先罗列下全部概念,而后再一个个看具体实例。html
大概说一下这些概念:node
若是不理解没啥关系,看一遍有印象下,下面咱们一个个琢磨琢磨。mysql
k8s的master节点上有三个进程,它们都是以docker的形式存在的。咱们在k8s的master节点看docker ps
就能够看到这几个进程:sql
8824aad1ee95 e851a7aeb6e8 "kube-apiserver --ad…" 3 days ago Up 3 days k8s_kube-apiserver_kube-apiserver-docker-for-desktop_kube-system_f23c0965aad6df9f61b1c9c4bb953cf5_0 a9ce81ec9454 978cfa2028bf "kube-controller-man…" 3 days ago Up 3 days k8s_kube-controller-manager_kube-controller-manager-docker-for-desktop_kube-system_1dc44822f21a9cbd68cc62b1a4684801_0 85da3f6e700f d2c751d562c6 "kube-scheduler --ad…" 3 days ago Up 3 days k8s_kube-scheduler_kube-scheduler-docker-for-desktop_kube-system_b6155a27330304c86badfef38a6b483b_0
其中的 apiserver 是提供 k8s 的 rest api 服务的进程。固然它也包括了 restapi 的权限认证机制。 k8s 的 apiserver 提供了三种权限认证机制:docker
咱们也能够经过使用kubectl proxy
在 master 上来建立一个代理,从而外部能够访问这个 k8s 集群。api
kube-controller-manager 是用来管理全部的 controller 的。以前咱们说的 Replication Controller 就是一种管控 Pod 副本的Controller, 其余相关的 Controller 还有:网络
kube-scheduler 负责 Pod 调度,接收 Controller Manager 建立的新的Pod,为其选择一个合适的Node,而且在Node上建立Pod。学习
一个k8s集群只有一个master节点,因此 master 节点的高可用性是一个问题,一旦 master 节点挂了,整个集群也就挂了。这点真有点神奇。因此网上关于搭建高可用的k8s Master 节点的方案有不少:spa
https://jishu.io/kubernetes/kubernetes-master-ha/
https://blog.51cto.com/ylw6006/2164981
https://jimmysong.io/kubernetes-handbook/practice/master-ha.html命令行
Node 是 k8s 的工做节点,Node 通常是一个虚拟机或者物理机,每一个 node 上都运行三个服务:
docker 就是 docker server,它提供
kubelet 是一个管理系统,它管理本个node上的容器的生命周期。它主要功能就是定时从某个地方获取节点上pod/container的指望状态,并调用对应的容器平台接口,来达成这个状态。它能够设置 http 监控,命令行监控等方式。
kube-proxy 是管理 service 的访问入口,包括集群内 pod 到 service 的访问,以及集群外访问service。
其实k8s自身的可用性是比较弱的,若是master挂了,那么master上的三个服务也就挂了。node挂了,若是node上的pod是被 controller控制住的话,controller会在其余node上启动对应的pod。