一、Kubernetes对象的描述
kubernetes中资源可以使用YAML描述(如果您对YAML格式不了解,可以参考YAML语法),也可以使用JSON。其内容可以分为如下四个部分:
- typeMeta:对象类型的元信息,声明对象使用哪个API版本,哪个类型的对象。
- objectMeta:对象的元信息,包括对象名称、使用的标签等。
- spec:对象的期望状态,例如对象使用什么镜像、有多少副本等。
- status:对象的实际状态,只能在对象创建后看到,创建对象时无需指定。
1.1 TypeMeta
1.1 apiVersion:apps/v1
指定正在使用的Kubernetes API的版本,常用:apps/v1
1.2 kind(k8s in docker)
1.2.1 分类
pod:k8s最小调度单元,一个Pod可以包含多个容器。
service:提供固定的ip访问pod内的容器,Pod更新后ip变动,不影响访问。
depeloyment(无状态负载):副本控制器,控制Pod部署。
configMap:配置中心。
ingress: 暴漏公网访问资源。
Stateful:有状态负载。
Job:Job是用来控制批处理型任务的对象。
CronJob: 定时任务。
二、k8s yaml示例
nginx-deployment.yaml的文件,如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
resources:
requests:
cpu: 100m
memory: 200Mi
limits:
cpu: 100m
memory: 200Mi
imagePullSecrets:
- name: default-secret
使用kubectl连接集群后,执行如下命令:
# kubectl create -f nginx-deployment.yaml
deployment.apps/nginx created
命令执行后,Kubernetes集群中会创建3个Pod,使用如下命令可以查询到Deployment和Pod:
# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 3/3 3 3 9s
# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-685898579b-qrt4d 1/1 Running 0 15s
nginx-685898579b-t9zd2 1/1 Running 0 15s
nginx-685898579b-w59jn 1/1 Running 0 15s