创建资源清单的方式:
apiserver仅接受JSON格式的资源定义
yaml格式提供资源配置清单,apiserver可自动将其转为json格式,而后再提交
通用资源配置清单所用的字段:
apiVersion:指明api资源属于哪个群组和版本,同一个组可以有多个版本 group/version
# kubectl api-versions 命令可以获取
kind: 资源类别,标记创建的资源类型,k8s主要支持以下资源类别
Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、Cronjob
metadata: 用于描述对象的属性信息,主要提供以下字段:
name: 指定当前对象的名称,其所属的名称空间的同一类型中必须唯一
namespace: 指定当前对象隶属的名称空间,默认值为default
labels: 设定用于标识当前对象的标签,键值数据,常被用作挑选条件
annotations: 非标识型键值数据,用来作为挑选条件,用于labels的补充
spec: 用于描述所期望的对象应该具有的状态(disired state),资源对象中最重要的字段。
status: 用于记录对象在系统上的当前状态(current state),本字段由kubernetes自行维护
资源配置清单-创建Pod-举例:
[root@k8s-master ~]# mkdir manfests
[root@k8s-master ~]# cd manfests/
[root@k8s-master manfests]# vim pod-demo.yaml
apiVersion: v1
**kind: Pod
**metadata:
name: pod-demo
namespace: default
labels:
app: myapp
tier: frontend
**spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
- name: busybox
image: busybox:latest
command:
- “/bin/sh”
- “-c”
- “sleep 3600”
[root@k8s-master manfests]# kubectl create -f pod-demo.yaml
pod/pod-demo created
[root@k8s-master manfests]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod-demo 2/2 Running 0 15s
[root@k8s-master manfests]# kubectl describe pods pod-demo #查看pod详细信息
[root@k8s-master manfests]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod-demo 2/2 Running 0 102s 10.244.1.17 k8s-node1
[root@k8s-master manfests]# curl 10.244.1.17
Hello MyApp | Version: v1 | Pod Name
[root@k8s-master manfests]# kubectl logs pod-demo myapp #查看pod-demo下myapp的日志
10.244.0.0 - - [03/Sep/2019:02:32:52 +0000] “GET / HTTP/1.1” 200 65 “-“ “curl/7.29.0” “-“
[root@k8s-master manfests]# kubectl exec -it pod-demo -c myapp — /bin/sh #进入myapp容器