「Kubernetes」k8s 的基本使用指令
结构模型
k8s 是经典的一对多模型,有一个主要的管理节点master和许多的工作节点slaver。当然,k8s 也可以配置多个管理节点,拥有两个以上的管理节点被称为 高可用。k8s 包括了许多的组件,每个组件都是单运行在一个docker容器中,然后通过自己规划的虚拟网络相互访问。你可以通过kubectl get pod -n kube-system查看所有节点上的组件容器。
在管理节点中会比工作节点运行更多的 k8s 组件,我们就是靠着这些多出来的组件来对工作节点发号施令。他们都叫什么这里就不详细提了。反正对于”基本使用“来说,这些名字并不重要。
理念
要想理解一个东西就要先明白它的内在理念。通俗点就是,k8s 做了什么?为了提供更加可靠的服务,就要增加服务器的数量,减少每个服务器的体量来平摊负载,而越来越多的虚拟机就会带来越来越高的运维成本。如何让少量的运维人员就可以管理数量众多的服务器及其上的服务呢?这就是 k8s 做的工作。
k8s 把数量众多的服务器重新抽象为一个统一的资源池,对于运维人员来说,他们面前没有服务器1、服务器2的概念,而是一个统一的资源池,增加新的服务器对运维人员来说,只是增加自资源池的可用量。不仅如此,k8s 把所有能用的东西都抽象成了资源的概念,从而提供了一套更统一,更简洁的管理方式。
接下来,我会把每个基本命令来逐一进行介绍,并辅以介绍一些基本概念。本文介绍的命令涵盖了增删改查四方面,可参加下面表格,因为篇幅较长,我们将create及之后的不那么常用的命令放在下一篇文章里讲:

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下。
执行了kubectl get pod -n kube-system命令后,你就可以看到如下内容:

其中每一行就是一个资源,这里我们看到的资源是 pod 。你看到的 pod 数量可能和我的不一致,因为这个列表里包含了 k8s 在所有节点上运行的 pod ,你加入的节点越多,那么显示的 pod 也就越多。我们来一列一列的看:
NAME:第一列是 pod 的名字,k8s 可以为 pod 随机分配一个五位数的后缀。
READY:第二列是 pod 中已经就绪的 docker 容器的数量,上文中我们提到了,pod 封装了一个或多个 docker 容器。在这里,1/1的含义为就绪1个容器/共计1个容器。
STATUS:第三列是 pod 的当前状态,下面是一些常见的状态:

RESTART:k8s 可以自动重启 pod,这一行就是标记了 pod 一共重启了多少次。
AGE:pod 一共存在了多长时间。
kubectl get可以列出 k8s 中所有资源这里只介绍了如何用kubectl获取 pod 的列表。但是不要把get和pod绑定在一起,pod 只是 k8s 中的一种服务,你不仅可以get pod,还可以get svc(查看服务)、get rs(查看副本控制器)、get deploy(查看部署)等等等等,虽然说kubectl get pod是最常用的一个,但是如果想查看某个资源而又不知道命令是什么,kbuectl get <资源名>就对了。
如果你想看更多的信息,就可以指定-o wide参数,如下:
kubectl get pod -n kube-system -o wide加上这个参数之后就可以看到资源的所在ip和所在节点node了。
记得加上 -n
-n可以说是kubectl get命令使用最频繁的参数了,在正式使用中,我们永远不会把资源发布在默认命名空间。所以,永远不要忘记在get命令后面加上-n。
小结
kubectl get命令可以列出 k8s 中的资源,而kubectl get pod是非常常用的查看 pod 的命令。而-n参数则可以指定 pod 所在的命名空间。
kubectl describe 查看详情!kubectl describe命令可以用来查看某一资源的具体信息,他同样可以查看所有资源的详情,不过最常用的还是查看 pod 的详情。他也同样可以使用-n参数指定资源所在的命名空间。
举个例子,我们可以用下面命令来查看刚才 pod 列表中的某个 pod,注意不要忘记把 pod 名称修改成自己的:
kubectl describe pod kube-flannel-ds-amd64-2d6tb -n kube-system然后你就可以看到很多的信息,咱们分开说,首先是基本属性,你可以在详细信息的开头找到它: