k8s概念入门及简单创建pod,运行pod

k8s初入门

​ 开始学习k8s,可能会被其很多概念搞懵,什么Master,Node,Pod,Service,Namespace。然后就是yaml文件,感觉也是很友好。

​ 使用k8s,一定要熟悉其概念,可以看文末的连接。然后在实际操作中,我们用的最多的工具就是kubectl

kubectl get pods
kubectl create ...
kubectl get namespace

​ 其实我们可以将这些概念看成一种资源对象,是k8s提供给我们的抽象资源。那么我们可以将k8s看成一个对象管理系统,比如数据库系统。事实上,k8s使用etcd数据库,我们的修改都记录在这里。

​ 同时资源对象之间可能会存在一定的关系,就类似关系型数据库中对象之间的关系。

k8s搭建一个简单的pod

​ k8s集群搭建好后,各个node的状态变成了ready,就可以创建pod,创建完成后,就会默认的运行其中的container。

  使用一个简单yaml文件描述pod:

apiVersion: v1                    #必选,版本号,例如v1,版本号必须可以用 kubectl api-versions 查询到 .
kind: Pod                      #必选,Pod
metadata:                      #必选,元数据
  name: string                    #必选,Pod名称
  namespace: string               #必选,Pod所属的命名空间,默认为"default"
  labels:                       #自定义标签
    - name: string                 #自定义标签名字
  annotations:                           #自定义注释列表
    - name: string
spec:                            #必选,Pod中容器的详细定义
  containers:                       #必选,Pod中容器列表
  - name: string                        #必选,容器名称,需符合RFC 1035规范
    image: string 

  运行kubectl create -f demo.yaml,就完成了创建pod

  但是使用kubectl get pods,发现其转态不是completed,使用kubectl describe pod demo,报错:

 FailedCreatedPodSandBox  k8s.gcr.io/pause:3.1

  查阅资料,发现k8s中的镜像都依赖于这个基础镜像。现在有两个办法,外网下载镜像或者更改k8s的远程仓库地址,还是手动下载最方便,参考文章k8s.gcr.io镜像无法下载的问题.这其中要求对docker操作比较熟悉,比如docker save,docker load

  这样pod的状态就为complete了。

参考博客:
  yaml格式的pod定义文件完整内容

  Pod和Nodes概念

  pod生命周期

posted @ 2021-02-20 18:05  懂得了才能做一些改变  阅读(762)  评论(0编辑  收藏  举报