栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

12,资源属性清单和pod.spec.containers(拉取策略,启动命令,进出容器,环境变量,端口设置,资源配额)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

12,资源属性清单和pod.spec.containers(拉取策略,启动命令,进出容器,环境变量,端口设置,资源配额)

查看资源属性清单

kubectl explain pod
kubectl explain pod.spec

在kubernetes中基本所有资源的一级属性都是一样的,主要包含5部分:

  • apiVersion 版本,由kubernetes内部定义,版本号必须可以用 kubectl api-versions 查询到
  • kind 类型,由kubernetes内部定义,版本号必须可以用 kubectl api-resources 查询到
  • metadata 元数据,主要是资源标识和说明,常用的有name、namespace、labels等
  • spec 描述,这是配置中最重要的一部分,里面是对各种资源配置的详细描述
  • status 状态信息,里面的内容不需要定义,由kubernetes自动生成

在上面的属性中,spec是接下来研究的重点,继续看下它的常见子属性:

  • containers <[]Object> 容器列表,用于定义容器的详细信息
  • nodeName 根据nodeName的值将pod调度到指定的Node节点上
  • nodeSelector 根据NodeSelector中定义的信息选择将该Pod调度到包含这些label的Node 上
  • hostNetwork 是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络
  • volumes <[]Object> 存储卷,用于定义Pod上面挂在的存储信息
  • restartPolicy 重启策略,表示Pod在遇到故障的时候的处理策略
拉取策略imagePullPolicy,设置镜像的拉取策略,kubernetes支持配置三种拉取策略:
  • Always:总是从远程仓库拉取镜像(一直远程下载)
  • ifNotPresent:本地有则使用本地镜像,本地没有则从远程仓库拉取镜像(本地有就本地 本地没远程下载)
  • Never:只使用本地镜像,从不去远程仓库拉取,本地没有就报错 (一直使用本地)

默认值说明:

  • 如果镜像tag为具体版本号, 默认策略是:IfNotPresent
  • 如果镜像tag为:latest(最终版本) ,默认策略是always
启动命令command 环境变量env,用于在pod中的容器设置环境变量。

busybox并不是一个程序,而是类似于一个工具类的集合,kubernetes集群启动管理后,它会自动关闭。解决方法就是让其一直在运行,这就用到了command配置。这里的命令是创建文件,并每个3s写入时间。

cat >pod-base.yaml<> /tmp/hello.txt; sleep 3; done;"]
    env:			#不推荐使用env
    - name: 'user'
      value: '啊'	
EOF

kubectl apply -f pod-base.yaml

kubectl get pod -n dev
'''
NAME       READY   STATUS    RESTARTS   AGE
pod-base   2/2     Running   0          2m1s
'''

'''
kubectl exec pod名 -n 命名空间 -it -c 容器名 在容器内部执行的命令
-it:交互模式
'''
kubectl exec pod-base -n dev -it -c busybox /bin/sh

#打印环境变量$user=啊
echo $user

查看创建的文件
tail -f /tmp/hello.txt 

#退出容器:ctrl+p+q  or  输入exit回车
端口设置ports

本小节来介绍容器的端口设置,也就是containers的ports选项。
首先看下ports支持的子选项:

kubectl explain pod.spec.containers.ports
KIND:     Pod
VERSION:  v1
RESOURCE: ports <[]Object>
FIELDS:
   name           # 端口名称,如果指定,必须保证name在pod中是唯一的		
   containerPort # 容器要监听的端口(0 # 容器要在主机上公开的端口,如果设置,主机上只能运行容器的一个副本(一般省略) 
   hostIP         # 要将外部端口绑定到的主机IP(一般省略)
   protocol       # 端口协议。必须是UDP、TCP或SCTP。默认为“TCP”。
资源配额

在这对cpu和memory的单位做一个说明:

  • cpu:core数,可以为整数或小数
  • memory: 内存大小,可以使用Gi、Mi、G、M等形式
apiVersion: v1
kind: Pod
metadata:
  name: pod-resources
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
    resources: # 资源配额
      limits:  # 限制资源(上限)
        cpu: "2" # CPU限制,单位是core数
        memory: "10Gi" # 内存限制
      requests: # 请求资源(下限)
        cpu: "1"  # CPU限制,单位是core数
        memory: "10Mi"  # 内存限制
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/320660.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号