1.基本概念理解
什么叫资源?
k8s中所有的内容都抽象为资源,资源实例化之后,叫做对象。
什么是资源清单?
在k8s中,一般使用yaml格式的文件来创建符合我们预期期望的pod,这样的yaml文件我们一般称为资源清单
创建资源的方法:
apiserver 仅接受JSON格式的资源定义;
yaml格式提供配置清单,apiserver 可自动将其转为JSON格式,而后再提交;
2.资源清单的格式
apiVersion: group/apiversion # 如果没有给定group名称,那么默认为croe,可以使用kubectl api-versions 获取当前k8s版本上所有的apiVersion版本信息(每个版本可能不同)
kind: #资源类别
metadata: #资源元数据
name #名称
namespace #k8s自身的namespace
lables #标签
annotations #资源注解,主要目的是方便用户阅读查找
spec:期望的状态(disired state),,期望资源应该用于什么特性
status:当前状态(current state),本字段有kubernetes自身维护,用户不能去定义
配置清单主要有五个一级字段,其中status用户不能定义,由k8s自身维护
3.属性
必须属性:
主要属性:
4.获取资源的apiVersion版本及资源配置的帮助
1)获取apiVersion版本信息
2)获取资源的apiVersion版本信息
可以看的出来,不同的资源可能属于不同的apiVersion版本
由于资源清单采用yaml格式,每次缩进是两个空格,所以我们来配置yaml格式的文件自动缩进:
在容器中创建多个pod
结果:
这里的状态:是由于我们启用的两个镜像使用的是同一个端口,所以会有一个启用失败
查看日志:
查看具体的描述
此时换一个镜像:
这里由于busybox有交互式,但是运行时,一直没有连接
为了解决上述的问题:
测试:
停止容器,容器会自动重启,这是由于RS副本的影响
设置镜像拉取策略(三种)
本地有镜像,则不去仓库上去拉取(ifnotpresent)
测试:
指定容器所在的主机监听的端口
测试:
使用宿主机的网络,不使用docker网桥
补充:
(1)可以指定输出为yaml文件
(2)可以使用-it 来指定交互
限制资源(内存和cpu):
查看资源
测试:
指定运行该pod的节点
标签:
$ kubectl get pod --show-labels //查看标签
NAME READY STATUS RESTARTS AGE LABELS
demo 2/2 Running 0 8s app=demo
$ kubectl get pod -l app //过滤包含app的标签
NAME READY STATUS RESTARTS AGE
demo 2/2 Running 0 34s
$ kubectl get pod -L app
NAME READY STATUS RESTARTS AGE APP
demo 2/2 Running 0 39s demo
$ kubectl label pod demo version=v1 //打标签
pod/demo labeled
$ kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
demo 2/2 Running 0 4m1s app=demo,version=v1
$ kubectl label pod demo app=nginx --overwrite //更改标签
pod/demo labeled
$ kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
demo 2/2 Running 0 5m40s app=nginx,version=v1