【k8s-9】--深入pod对象

2018-12-27  本文已影响0人  一个热爱生活的好少年

虚拟机级别的相关属性都是pod级别的:描述机器整体。

pod几个重要字段的含义和用法:

#NodeSelector:是一个供用户将pod与Node进行绑定的字段
apiVersion: v1
kind: Pod
...
spec:
 nodeSelector:
   disktype: ssd
#这样的配置意味pod永远自能运行在携带ssd标签的节点上。

NodeName:一旦Pod的这个字段被赋值,k8s会以为Pod已经经过调度了用于测试。

HostAliases:定义Pod的host文件。/etc/hosts里面的内容。

apiVersion: v1
kind: Pod
...
spec:
  hostAliases:
  - ip: "10.1.2.3"
    hostnames:
    - "foo.remote"
    - "bar.remote"
...
#最后的效果
cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1 localhost
...
10.244.135.10 hostaliases-pod
10.1.2.3 foo.remote
10.1.2.3 bar.remote

例子: shareProcessNamespace: true

# 在这个文件中,定义了两个容器:一个是nginx,一个开启了tty和stdin的的容器。其实等同于docker run中的 -it(-i:stdin -t:tty)

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  shareProcessNamespace: true
  containers:
  - name: nginx
    image: nginx
  - name: shell
    image: busybox
    stdin: true
    tty: true

#创建
$ kubectl create -f nginx.yaml
#链接shell容器的tty
$ kubectl attach -it nginx -c shell
#查看进程。也就是在哟个pod上可以看到里面所有容器的进程。因为他们呢共享一个PID Namespace。
$ kubectl attach -it nginx -c shell
/ # ps ax
PID   USER     TIME  COMMAND
    1 root      0:00 /pause
    8 root      0:00 nginx: master process nginx -g daemon off;
   14 101       0:00 nginx: worker process
   15 root      0:00 sh
   21 root      0:00 ps ax

k8s项目对container的定义:image镜像,Command(启动命令),workingDir(容器的工作目录),Port(容器开发端口),volumeMounts(容器挂载的Volume)。

1.ImagePullPolicy字段:Always 镜像拉去策略。默认是每创建就拉去一次。
2.Lifecycle字段:容器状态发生变化时触发一系列”钩子“

apiVersion: v1
kind: Pod
metadata:
  name: lifecycle-demo
spec:
  containers:
  - name: lifecycle-demo-container
    image: nginx
    lifecycle:
      #容器启动后立即执行
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
      #容器被杀死前
      preStop:
        exec:
          command: ["/usr/sbin/nginx","-s","quit"]

总结:关于pod的状态以及含义

上一篇下一篇

猜你喜欢

热点阅读