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定义文件完整内容
日进有功