k8s教程(pod篇)-定义与基本用法
属于同一个的多个容器应用之间相互访问时仅需通过就可以通信,使得这一组容器被“绑定”在一个环境中。运行命令创建该 :查看已经创建的:可以看到信息为2/2,表示中的两个容器都成功运行了。...
01 pod定义
pod
定义的完整内容如下:
pod
各属性的说明:
02 pod基本用法
Pod
可以由 1 个或多个容器组合而成,如下名为 frontend
的 Pod
只由一个容器组成:
这个 frontend Pod
在成功启动之后,将启动 1 个 Docker
容器。
另一种场景是,当 frontend
和 redis
两个容器应用为紧耦合的关系,并组合成一个整体对外提供服务时,应将这两个容器打包为一个 Pod
,如图 所示:
配置文件 frontend-localredis-pod.yaml
的内容如下:
属于同一个 Pod
的多个容器应用之间相互访问时仅需通过localhost
就可以通信,使得这一组容器被“绑定”在一个环境中。
运行 kubectl create
命令创建该 Pod
:
查看已经创建的pod
:
可以看到READY
信息为2/2,表示Pod
中的两个容器都成功运行了。查看这个 Pod
的详细信息,可以看到两个容器的定义及创建的过程(Event
事件信息):
03 静态pod
静态 Pod
是由 kubelet
进行管理的仅存在于特定 Node
上的 Pod
。它们不能通过API Server
进行管理,无法与 ReplicationController
、Deployment
或者 DaemonSet
进行关联,并且 kubelet
无法对它们进行健康检查。静态 Pod
总是由kubelet
创建的,并且总在kubelet
所在的 Node
上运行。
创建静态 Pod
有两种方式:配置文件方式和 HTTP
方式。
3.1 配置文件方式
首先,需要设置 kubelet
的启动参数“-pod-manifest--path
”(或者在 kubelet
配置文件中设置 staticPodPath
,这也是新版本推荐的设置方式,-pod-manifest- path
参数将被逐渐弃用),指定 kubelet
需要监控的配置文件所在的目录,kubelet
会定期扫描该目录,并根据该目录下的.yaml
或 json
文件进行创建操作。
假设配置目录为/etc/kubelet.d/
,配置启动参数为-pod-manifest-path=/etc/kubelet.d/
,然后重启kubelet
服务。
在/etc/kubelet.d
目录下放入static-web.yaml
文件,内容如下:
等待一会儿,查看本机中已经启动的容器:
可以看到一个 Nginx
容器已经被 kubelet
成功创建了出来。到 Master
上查看 Pod
列表,可以看到这个 static pod
:
由于静态 Pod
无法通过 API Server
直接管理,所以在 Master
上尝试删除这个 Pod
时,会使其变成 Pending
状态,且不会被删除。
删除该 Pod
的操作只能是到其所在 Node
上将其定义文件 static-web.yaml
从/etc/kubelet.d
目录下删除。
#rm /etc/kubelet.d/static-web.yaml
# docker ps
//无容器运行
3.2 HTTP 方式
通过设置 kubelet
的启动参数“-manifest--url
”,kubelet
将会定期从该 URL
地址下载 Pod
的定义文件,并以yaml
或 json
文件的格式进行解析,然后创建 Pod
,其实现方式与配置文件方式是一致的。
更多推荐
所有评论(0)