本小节主要来研究pod.sepc.containers属性,这也是pod配置中最为关键的一项配置。
1、 使用命令查看解释:;
kubectl explain pod.spec.containers
1、 基本配置:;
创建一个配置pod-base.yaml文件
rsion: v1
kind: Pod
metadata:
name: pod-base
namespace: dev
spec:
containers:
- name: nginx
image: nginx:1.17.1
imagePullPolicy: IfNotPresent
command: ["/bin/sh","-c","touch /tmp/hello.txt;while true;do /bin/echo $(data +&T) >> /tmp/hello.txt; sleep 3; done;"]
- name: busybox
image: busybox:1.30
env:
- name: "username"
value: "admin"
- name: "password"
value: "123456"
ports:
- name: nginx-port
上面定义了一个比较简单的pod配置,里面有两个容器:
nginx: 用1.17.1版本的nginx镜像创建,nginx是一个轻量级的web容器
busybox: 用1.30版本经镜像创建,busybox是一个小巧的linux命令集合
# 创建pod:
kubectl apply -f pod-base.yaml
# 查看pod状况
kubectl get pod -n dev
# 查看容器启动详情
kubectl describe pods pod-base -n dev
配置介绍:
name<String>: 容器名称, 注意是不允许使用大写的
image<String>: 容器镜像地址
imagePullPolicy<String>: 镜像拉取策略
always: 总是用远程仓库拉取
IfNotPresent: 本地有,用本地, 没有用远程的
Never: 从不拉取
默认值说明:如果镜像tag为具体版本号,则默认策略为 IfNotPresent
如果镜像tag为latest, 默认策略是 always
command<[]String>: 容器的启动命令列表,如不指定,使用打包使用的命令启动。
在上面的命令中,容器busybox容器一直没有启动成功,因为它是一个工具类的集合,
kubernetes集群启动管理后,它会自动关闭,解决方法就是让其一直在运行,这里用到
conmmand配置,"/bin/sh","-c" 使用sh命令;"touch /tmp/hello.txt" 创建一个
文件;while true;do /bin/echo $(data +&T)" >> /tmp/hello.txt;
sleep 3; done;每三秒往文件写入当前时间。
重建创建pod,会发现该busybox容器正常运行
特殊说明:通过上面发现command已经可以完成启动命令和传递参数的功能,为什么这里还需要提供一个args选项,用于传递参数吗?这其实跟docker有点关系,kubernetes中的command,args两项其实是实现覆盖dockerfile中entrypoint的功能。
1)如果command和args均没有写,那么用dockerfile的配置
2)如果command写了,但args没有写,那么用dokerfile默认的配置会被忽略,执行输入的command
3)如果command没写,但args写了,那么dockerfile中配置的entrypoint的命令会执行,使用当前args的参数
4)如果command和args都写了,那么dockerfile的配置被忽略,执行command并追加上args参数
env<[]Object>: 容器环境变量配置,一个环境变量是一个键值对,可以向容器中设置环境变量。
这种方式不是很推荐,推荐将这种配置单独存储在配置文件中,这种方式将在后面介绍。
5)port<[]Object>: name<String> #端口名称,如果指定,必须保证name在pod中是惟一的
containerPort<Integer>: #容器要监听的端口(0<x<65535)
hostPort<Integer>: # 容器在主机上公开的端口,如果设置,主机上只能运行容器的一个副本(一般省略)
hostIp<Stirng>: # 要将外部端口绑定到的主机IP(一般省略)
protocol<String>: # 端口协议,必须是UDP、TCP或SATCP,默认为TCP
# 进入容器
# kubectl exec pod名称 -n 命名空间 -it -c 容器名称 /bin/sh
kubectl exec pod-command -n dev -it -c busybox /bin/sh
# 进入容器后执行
tail -f 1000 /tmp/hello.txt
# 进入容器,查询容器中环境变量
echo $userName
echo $password
# 退出容器
exit
》》》博主长期更新学习心得,推荐点赞关注!!!
》》》若有错误之处,请在评论区留言,谢谢!!!
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: