Pod:运行于Kubernetes中的容器

为pod创建一个简单的yaml描述文件

在本地保存kubia-manual.yaml文件

#cat kubia-manual.yaml
apiVersion: v1
kind: Pod                   #指明资源类型是pod
metadata:
  name: kubia-manual        #pod的名字
spec:
  containers:               #包含的容器,可以是多个啊
  - image: luksa/kubia      #容器使用的镜像
    name: kubia             #容器名字
    ports:
    - containerPort: 8080   #容器监听端口
      protocol: TCP

这个配置文件在基础篇出现过,这里可以了解下他们的含义了。

我们不需要过多的记住yaml描述包含的每个元素,只需要了解基本组成就可以了,因为在实际使用中大家会经常copy/paste,所以不需要刻意记忆。

创建pod与了解它

告诉kubernetes,让它按照yaml的描述为我们部署上述资源

为便于做练习,适当清理之前的资源是个好习惯,常用指令

  • kubens 查看当前所在的命名空间,防止误操作别人的资源

  • kubectl get all 查看已有部署

  • kubectl delete pods --all 删除全部的pod

kubectl create帮助我们创建了pod,查看下

了解pod的细节

-o yaml:常用的选项,可以打印出非常详细的描述,比我们的yaml要详细很多,因为它输出了很多默认的参数,很多参数是我们不需要care的

查看pod和container的日志

MaxClloud也提供了较为全面的Pod管理方式,类似终端访问、日志查看等操作也可以借助MaxCloud来完成。

本地访问容器服务

我们在基础篇使用了LoadBalancer来访问服务,但这个是要花钱的,同时我们绝大多数服务是内网环境。所以我们试下更安全的方式,这次不用LB(LoadBalancer简称)了。

首先打开一个本地代理,它能将你的请求转发给容器,kubectl全部帮你做这些事情

提示转发通道打开,然后从另外一个控制台访问吧

大家注意了没有,pod的名字就是它的hostname,像主机的hostname没有差别

使用命名空间对资源进行分组

命名空间,我们其实已经在用了,大家就在各自的命名空间中做实验。

创建一个命名空间很简单,可以使用指令

或使用yaml描述

大家可以做一些练习,清理不用命名空间也简单,但是它会删除空间内所有资源

我们使用命名空间是用来隔离资源的,如pod,我们可以让上述服务部署到指定的命名空间。

给pod打上标签

namespace中的pod会越来越多,为了筛选,我们都会使用标签

创建它

运行如下指令体会下标签功效

如果对标签不满意,可以增删改

修改标签

增加标签

上述修改指令中标签名字不存在会自动添加标签

删除标签

修改标签时,将value置空就代表了删除标签

使用标签做选择

前面已经有指令练习过了,常用的是含有指定标签的资源,也可以列出不含标签的资源,如

标签过滤是重要功能,等大家在实际工作中要多搜索一下使用方式,过多细节这里不展开了

将pod部署到指定节点

首先我们先看看节点上的标签

还是比较多的,我们结合内部需要,定制了我们关心标签

现在让我们部署到 node.spotmax/team=dsp 节点上

创建并查看

停止和删除pod

很多种方法,可以根据自己需要删除

OK!大家到这里就完成了关于pod的所有实验,是很重要的一个内容,打交道最多的概念。

加油!我们进入更有趣的环节!

思考题

  • 标签是用来做什么的?

  • 命名空间和标签在筛选资源方面有什么不同?

最后更新于

这有帮助吗?