Kubernetes初略
背景
近期在看《kubernetes权威指南》这本书,所以需要对文中的一些知识做简要的笔记,本文源自于此。全文内容围绕着第二章Kubernetes架构和部署
和第三章Kubernetes快速入门
展开
内容
Kubernetes以Etcd作为存储中心件,它的很多重要数据都是存储在Etcd中的。Kubernetes本身是主从分布式的架构,分为主节点Master
和从节点Node
,Master
和Node
都可以同时配置为多个,以确保服务整体的稳定。
Master
在系统中扮演着整体管理的角色,负责调度管理整个系统。构成Master的组件包括:Kubernetes API Server、Kubernetes Scheduler、Kubernetes Controller Manager
,它们各自的职能如下(摘录自《kubernetes权威指南》):
- Kubernetes API Server:作为Kubernetes系统的入口,其封装了核心对象的增删改查操作,以REST API接口方式提供给外部客户和内部组件调用。它维护的REST对象将持久化到Etcd中。
- Kubernetes Scheduler:负责集群的资源调度,为新建的Pod分配机器。这部分工作分出来变成一个组件,意味着可以很方便地替换成其他的调度器。
- Kubernetes Controller Manager:负责执行各种控制器,这个可以百度
当K8S搭建好了以后,可以用以下命令检测各组件运行是否正常。
1 | kubectl -s https://[节点IP]:[端口] get componentstatus |
上面的节点IP可以通过以下方式获取:
1 | kubectl cluster-info |
获得的内容如下:
1 | 看Kubernetes后面跟着的is running |
Node
是运行节点,用于运行管理业务的容器。构成Node的组件包括:Kubelet、Kubernetes Proxy
,它们各自的职能如下(摘录自《kubernetes权威指南》):
- Kubelet:负责管控容器,Kubelet会从Kubernetes API Server接收Pod的创建请求,启动和停止容器,监控容器运行状态并汇报给Kubernetes API Server。
- Kubernetes Proxy:负责为Pod创建代理服务,Kubernetes Proxy会从Kubernetes API Server获取所有的Service,并根据Service信息创建代理服务,实现Service到Pod的请求路由和转发,从而实现Kubernetes层级的虚拟转发网络。
- Docker:Kubernetes Node是容器运行节点,需要运行Docker服务,
同样,从节点搭建好以后,可以通过以下命令查看运行的健康状态
1 | kubectl -s https://[节点IP]:[端口] get node |
文章未结宣告
打算暂时先放弃k8s的学习,主要原因如下:
缺少Linux下运维经验,以及相关网络知识,所以打算积累相关知识
经过两天的尝试,此前一直疑惑的部署方案,现下大概了解,K8S有三种部署方式:
minikube:官方提供的单机k8s实验环境,linux环境下,可以直接通过
apt install minikube
安装二进制部署方式:适用于生产环境部署,很麻烦,但便于新手了解k8s内部结构,方便日后报错时的问题定位和处理
kubeadm部署:便捷部署,将相关的服务通过容器的方式运行在本地,适合老手搭建(之前的搭建方式就是这个)