结构模型
k8s 是经典的一对多模型,有一个主要的管理节点master
和许多的工作节点slaver
。当然,k8s 也可以配置多个管理节点,拥有两个以上的管理节点被称为 高可用。k8s 包括了许多的组件,每个组件都是单运行在一个docker
容器中,然后通过自己规划的虚拟网络相互访问。你可以通过kubectl get pod -n kube-system
查看所有节点上的组件容器。
在管理节点中会比工作节点运行更多的 k8s 组件,我们就是靠着这些多出来的组件来对工作节点发号施令。他们都叫什么这里就不详细提了。反正对于”基本使用“来说,这些名字并不重要。
理念
要想理解一个东西就要先明白它的内在理念。通俗点就是,k8s 做了什么?为了提供更加可靠的服务,就要增加服务器的数量,减少每个服务器的体量来平摊负载,而越来越多的虚拟机就会带来越来越高的运维成本。如何让少量的运维人员就可以管理数量众多的服务器及其上的服务呢?这就是 k8s 做的工作。
k8s 把数量众多的服务器重新抽象为一个统一的资源池,对于运维人员来说,他们面前没有服务器1、服务器2的概念,而是一个统一的资源池,增加新的服务器对运维人员来说,只是增加自资源池的可用量。不仅如此,k8s 把所有能用的东西都抽象成了资源的概念,从而提供了一套更统一,更简洁的管理方式。
接下来,我会把每个基本命令来逐一进行介绍,并辅以介绍一些基本概念。本文介绍的命令涵盖了增删改查四方面,可参加下面表格,因为篇幅较长,我们将create
及之后的不那么常用的命令放在下一篇文章里讲:
命令名 | 类型 | 作用 |
---|---|---|
get |
查 | 列出某个类型的下属资源 |
describe |
查 | 查看某个资源的详细信息 |
logs |
查 | 查看某个 pod 的日志 |
create |
增 | 新建资源 |
explain |
查 | 查看某个资源的配置项 |
delete |
删 | 删除某个资源 |
edit |
改 | 修改某个资源的配置项 |
apply |
改 | 应用某个资源的配置项 |
kubectl get 列出资源!
接下来进入正题,首先来了解一下 k8s 中最最最常用的命令kubectl get
,要记住,k8s 把所有的东西都抽象成了资源,而kubectl get
就是用来查看这些资源的。最常见的资源就是 pod 。
什么是 pod?
pod
(豆荚)。pod 的概念其实和docker
中的容器非常相似。他是 k8s 中的最小工作单位。你可以把 pod 理解成一个一个的小机器人,而 k8s 抽象出来的大资源池就是他们的工厂。
pod
和docker
容器的关系?pod 将一个或多个
docker
容器封装成一个统一的整体进行管理并对外提供服务。
不仅我们自己的服务是要包装成 pod 的,就连 k8s 自己也是运行在一堆 pod 上。接下来就让我们查看一下 k8s 的 pod :
kubectl get pod -n kube-system
-n
参数指定了要查看哪个命名空间下的 pod 。k8s 所有的 pod 都被放置在kube-system
命名空间下。
什么是命名空间?
命名空间
namespace
,是 k8s 中”组“的概念,提供同一服务的 pod 就应该被放置同一命名空间下,而不是混杂在一起。k8s 可以用命名空间来做权限控制。如果不指定的话, pod 将被放置在默认的命名空间default