3.通过yaml配置文件创建pod

pod资源

pod:至少由两个容器组成,pod基础容器和业务容器组成

例如创建一个nginx的pod,会发现它起了两个容器
一个pod中封装了两个容器,一个是pod的基础容器,用来实现k8s的相关功能,一个是nginx的业务容器

在这里插入图片描述


例如以下配置文件,一次跑两个业务容器
执行pod创建操作后,kubectl create -f test.yaml
在节点上会创建出三个容器,一个pod基础容器,两个业务容器
两个业务容器共用一个pod基础容器

vim test.yaml

apiVersion: v1
kind: Pod
matadata:
  name: test
  labels: 
    app: web
spec:
  containers:
    - name: nginx
      image: nginx:1.7.9
      port: 
        - containerPort: 80
    - name: alpine
      image: alpine:latest
      command :["sleep","1000"]

使用yaml文件创建pod后,就会将数据写到了etcd数据库中去,然后apiserver就会找scheduler去调度,
让它找到合适的节点,然后将结果告诉apiserver,然后apiserver就知道该在哪个节点上进行创建pod,
在该节点上找到kubelet,将yaml配置清单给到kubelet,然后按照清单将容器启动起来,启动容器时,
会先起一个pod基础容器,再将业务容器按照配置启动起来。
(这里yaml文件的主要目的就是为了更好的让kubelet知道该如何启动我们想要的容器)


通过yaml配置文件创建pod

k8s中一切皆资源
pod是最小的资源单位
任何的k8s资源都可以通过yaml清单文件来定义

k8s yaml文件的主要组成部分(需要顶格写)

apiVersion:v1  api版本
kind : pod 资源类型,可以是pod、deployment、statefulset
metadata: 属性,pod相关的元数据,用于描述pod的数据
spec:详细,期望pod按照这里面的描述进行创建

这里以nginx为例
因为之前创建过nginx的deploy,所以这里先将相关的deploy和service删除掉

kubectl delete deploy nginx
kubectl delete svc nginx

在这里插入图片描述


编写yaml配置文件

一定要注意格式

vim nginx_pod.yaml

apiVersion: v1           #k8s api的版本
kind: Pod                #资源对象的类型,可以是pod deploy svc等
metadata:                #pod相关的元数据,用于描述pod的数据
  name: nginx-demo       #pod的名称
  labels:                #定义pod的标签
    type: app            #自定义label标签,名字为type,值为app
    version: 1.0.0       #自定义标签,描述pod版本号
  namespace: 'default'   #命名空间配置
spec:                    #详细定义对象,期望pod按照这里的描述进行创建
  containers:            #对pod中容器的描述
  - name: nginx          #容器的名称
    image: nginx:latest                 #指定容器的镜像,指定具体版本
    imagePullPolicy: IfNotPresent       #镜像的拉取策略,如果本地有镜像就用本地的,没有就远程拉取镜像
    command:                            #指定容器启动时执行的指令“nginx -g daemon off”
    - nginx
    - -g
    - 'daemon off;'
    workingDir: /usr/share/nginx/html   #指定容器启动后的工作目录
    ports:                              #指定容器的端口列表
    - name: http                        #指定端口名称
      containerPort: 80                 #指定容器内暴露的端口
      protocol: TCP                     #指定该端口基于哪种协议
    env:                                #容器环境变量设置
    - name: JVM_OPTS                    #环境变量名
      value: '-Xms128m -Xmx128m'        #环境变量的值
    resources:                          #指定资源限制
      requests:                         #最少需要多少资源
        cpu: 100m                       #限制cpu最少使用0.1个核心
        memory: 128Mi                   #限制内存最少使用128M
      limits:                           #最多可以用多少资源
        cpu: 200m                       #限制cpu最多使用0.2个核心
        memory: 256Mi                   #限制内存最多使用256M
  restartPolicy: OnFailure              #定义pod的重启策略

根据配置文件创建pod

kubectl create -f nginx_pod.yaml
在这里插入图片描述
pod创建成功
在这里插入图片描述

展示更多信息
kubectl get pod -o wide
可以看到pod所在节点,以及IP地址
在这里插入图片描述

在主节点测试可以正常访问
在这里插入图片描述


配置文件参数参考

在这里插入图片描述

在这里插入图片描述


常用资源类型与别名
资源类型别名
podpo
deploymentdeploy
servicesvc
namespacens
nodeno
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值