1-定义一个Deployment
1.1-tomcat-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
labels:
app: app-demo
spec:
replicas: 1
selector:
matchLabels:
tier: frontend
matchExpressions:
- {key: tier, operator: In, values: [frontend]}
template:
metadata:
labels:
app: app-demo
tier: frontend
spec:
containers:
- name: tomcat-demo
image: kubeguide/tomcat-app:v1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
1.2-相关解释
apiVersion: apps/v1 #API版本,可以通过kubectl api-versions查看
kind: Deployment #资源类型,可通过kubectl api-resources查看
metadata #资源元数据
metadata.name #该资源的名称
metadata.labels #定义资源的标签,此处定义了一个app=app-demo的标签
spec #资源规格
spec.replicas #Pod副本数量
spec.selector #标签选择器,此处表示自己控制tier=frontend的Pod
spec.template #Pod模板
spec.template.metadata #Pod的元数据
spec.template.metadata.labels #Pod的标签应该包含Deployment控制的标签
spec.template.spec #Pod规格
spec.template.spec.containers #容器配置
1.3-查看资源
kubectl get deployment
1.4-字段说明
# NAME:列出namespace中Deployment的名称(不指定namespace则默认为Default)
# READY:显示可用副本数。显示的模式是“就绪个数/期望个数”
# UP-TO-DATE:为了达到期望状态已经更新的副本数
# AVAILABLE:应用可供用户使用的副本数
# AGE:显示deploy运行的总时间
2-定义一个Pod
2.1-tomcat.yaml
apiVersion: v1
kind: Pod
metadata:
name: tomcat
labels:
name: tomcat
namespace: cka
spec:
containers:
- name: tomcat
image: kubeguide/tomcat-app:v1
imagePullPolicy: IfNotPresent
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 8080
env:
- name: MYSQL_SERVICE_HOST
value: 'mysql'
2.2-相关解释
apiVersion: v1 #核心API
kind #指明资源类型,此处为Pod
metadata #元数据,用于描述当前资源类型。
metadata.name #Pod的名称为tomcat
metadata.labels.name #定义该Pod有一个名为name=tomcat的标签
metadata.namespace #指定该Pod属于哪个命名空间
spec #定义Pod里面的容器组
spec.containers #定义容器组
containers.name #容器的名字为tomcat
containers.image #容器使用的镜像为kubeguide/tomcat-app:v1
containers.imagePullPolicy #IfNotPresent表示如果本地存在就不去镜像仓库拉取,不存在则拉取
containers.resources #定义容器的资源配额
resources.requests #定义请求的资源,现只支持CPU和内存,此处申请0.25个CPU和64MiB内存,
# 该值必须小于或者等于limits设置的值
resources.limits #资源最多申请0.5个CPU和128MiB内存
containers.ports #定义端口
ports.containerPort #容器应用监听的端口为8080
containers.env #往容器注入环境变量,以KV键值对的形式。此处注入了MYSQL_SERVICE_HOST='mysql'的环境变量
2.3-创建Pod
kubectl apply -f tomcat.yaml
2.4-验证
kubectl get pod --show-labels
kubectl describe pod tomcat
-容器名为tomcat,使用的镜像为kubeguide/tomcat-app:v1,监听的端口为8080
kubectl get pod -o wide
-在集群任意主机通过curl 10.244.1.9:8080可以访问
3-静态Pod
3.1-概念
不能通过API Server进行管理,无法与RC、Deployment或者
DaemonSet进行关联,并且kubelet无法对它们进行健康检查
静态Pod的默认配置目录为/etc/kubernetes/manifests/,
kubelet会定期扫描静态Pod的配置目录,根据目录下的yaml启动或者删除Pod
静态Pod的配置目录可以通过/var/lib/kubelet/config.yaml设置,修改staticPodPath的值,然后重启Kubelet即可
3.2-创建一个静态Pod
在/etc/kubernetes/manifests/创建如下yaml文件
apiVersion: v1
kind: Pod
metadata:
name: static-pod
labels:
name: static-pod
spec:
containers:
- name: static-pod
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
静态Pod名字后面会带上当前节点的名字
用kubectl删除该Pod,kubectl delete pod static-pod-k8smaster,发现并不能删除,那该怎么删除呢?
直接删除静态Pod的yaml文件即可
评论区