一:kubernetes的资源清单。
(1)API server是以Restful风格格式;
通过Get,dut,delete,post,请求方法反应到kubectl ,run,get,edit
(2)资源相当于就是对象
1,workload:pod,replicaset,deployment,satefulset,Daemonset,job,cronjob...统称为负载性资源
2,服务发现及负载均衡:service,ingress
3,配置与存储:volume,csi(容器存储接口)
(1)configmap(用作于配置中心),secret
(2)DownwardAPI
4,集群级资源
namespace,mode,role,clusterrole,rolebinding,clusterrolebinding
5,元数据型资源
(1)HPA,podtemplate,limitrange
二:kubernetes资源创建。
(1)Apiserver仅接受json格式的资源定义;yaml格式提供配置清单,apiserver可自动将其转换为json格式,而后提交。
(2)大部分资源的配置清单。
apiserver:group/version
kind:资源类别
metadata:元数据
name,namespace,labels,annotations
spec:客户期望的状态
status:当前状态
实列:以配置清单ymal格式来配置一个资源。
[root@k8s-master ~]# mkdir manifests/
[root@k8s-master manifests]# vim pod-demo.yaml
[root@k8s-master manifests]# kubectl api-versions 查看相关APIversion
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
apiVersion: v1 这表示创建的资源属于那个apiversion群组。
kind: Pod 这表示我们创建的对象是那个
metadata:
name: pod-demo 创建的pod名称
namespace: default 所属的名称空间
labels: pod的卷标,以便根据卷标进行调度。2
app: myapp
spec:
containers:
- name: myapp 运行容器的名称
image: busybox 运行容器所需镜像
command: ['sh', '-c', 'echo hello kubernetes! && sleep 36'] 这表示容器中默认运行的命令。
~
[root@k8s-master manifests]# kubectl create -f pod-demo.yaml
pod/pod-demo created
[root@k8s-master manifests]# kubectl exec pod-demo -c myapp -- /bin/ls 使用exec进入到容器中,运行相关命令
bin
dev
etc
home
proc
root
sys
tmp
usr
var
[root@k8s-master manifests]#
[root@k8s-master manifests]# kubectl get pods -w -w参数表示实时监控pod的运行状态。
NAME READY STATUS RESTARTS AGE
myapp-5d587c4d45-5fltt 1/1 Running 1 4d1h
myapp-5d587c4d45-gbb6r 1/1 Running 2 10d
myapp-5d587c4d45-zb86g 1/1 Running 1 4d1h
pod-demo 0/1 CrashLoopBackOff 5 8m27s
[root@k8s-master manifests]# kubectl delete -f pod-demo.yaml 使用delete表示删除pod
pod "pod-demo" deleted
[root@k8s-master manifests]#
三:使用yaml格式文件创建pod
[root@k8s-master ~]# cd manifests/
[root@k8s-master manifests]# vim pod-demo.yaml #编辑一个yaml文件
apiVersion: v1 这里表示我们创建的资源属于哪个资源群组。通过 kubectl api-version查看。
kind: Pod 这表示创建的资源名称。
metadata: 说明创建的元数据。
name: pod-demo 指明创建pod的名称2
namespace: default pod的所属的名称空间
labels: 卷标,表示我们创建的pod的所标记的卷标名称。
app: myapp
spec: 空间,pod中的容器
containers:
- name: myapp 容器名称
image: ikubernetes/myapp:v1 容器使用的镜像
- name: busybox
image: nginx:1.14-alpine
ports: 容器监听的端口
- name: web
containerPort: 80
protocol: TCP
[root@k8s-master manifests]# kubectl create -f pod-demo.yaml 根据文件创建pod
pod/pod-demo created
[root@k8s-master manifests]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
myapp-5d587c4d45-nms7x 1/1 Running 0 22h 10.244.1.9 k8s-node1 <none> <none>
myapp-5d587c4d45-r4rcc 1/1 Running 0 22h 10.244.2.12 k8s-node2 <none> <none>
myapp-5d587c4d45-tt6lv 1/1 Running 0 22h 10.244.2.11 k8s-node2 <none> <none>
nginx-deployment-bd4bfb877-xs62q 1/1 Running 0 7d23h 10.244.1.2 k8s-node1 <none> <none>
pod-demo 2/2 Running 0 3s 10.244.1.13 k8s-node1 <none> <none>
[root@k8s-master manifests]#
[root@k8s-master manifests]# kubectl exec -it pod-demo -c myapp -- /bin/sh -c:表示我们进入pod中运行什么命令
/ #
/ #
/ # ls
bin dev etc home lib media mnt proc root run sbin srv sys tmp usr var
[root@k8s-master manifests]# kubectl delete pods pod-demo 这表示删除pod。
pod "pod-demo" deleted
上述总结的为pod最基本的配置清单文件,注意:pod是有生命周期的。