资源清单格式
格式如下:
apiVersion: group/version //指明api资源属于哪个群组和版本,同一个组可以有多个版本
$ kubectl api-versions //查询命令
kind: //标记创建的资源类型,k8s主要支持以下资源类别
Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob
metadata: //元数据
name: //对像名称
namespace: //对象属于哪个命名空间
labels: //指定资源标签,标签是一种键值数据
spec: //定义目标资源的期望状态
常见参数
自主式Pod资源清单
vim pod.yaml kubectl apply -f pod.yaml /启用
apiVersion: v1
kind: Pod
metadata:
name: pod-example
labels:
app: demo
spec:
containers:
- name: ubuntu
image: ubuntu:trusty
command: ["/bin/sh", "-c", "sleep 3600"]
- name: nginx
image: nginx
策略使用案例
ImagePullPloicy镜像拉取策略
IfNotPresent #默认值,镜像在宿主机上不存在时才拉取 Always #每次创建pod都会重新拉取一次镜像 Never #pod永远不会主动拉取镜像,需要我们手动拉取
[root@server2 pod]# kubectl delete -f pod.yaml /删除 [root@server2 pod]# vim pod.yaml [root@server2 pod]# kubectl apply -f pod.yaml
[root@server2 pod]# kubectl describe pod pod-example 查看详细信息,信息显示本地已有镜像不需要重复拉取
容器端口映射
[root@server2 pod]# kubectl delete -f pod.yaml [root@server2 pod]# vim pod.yaml [root@server2 pod]# kubectl apply -f pod.yaml [root@server2 pod]# kubectl get pod -o wide
containerPort:指定生成的pod中容器副本需要监听的端囗号 hostPort:指定容器所在主机需要监听的端囗号,默认跟上面containerPort相同,设置了hostPort后,同一台主机无法启动该容器的相同副本,因为主机端囗号不能相同,这样会冲突
[root@server4 ~]# iptables -t nat -nL | grep :80
资源限制
[root@server2 pod]# kubectl delete -f pod.yaml [root@server2 pod]# vim pod.yaml [root@server2 pod]# kubectl apply -f pod.yaml
resources.limits.cpu :指定cpu的限制, resources.limits.memory :指定内存限制 resources.requests.cpu 容器启动时初始化可用数量 resources.requests.memory: 容器启动时初始化可用数量 [root@server2 pod]# kubectl describe pod pod-example 查看pod副本详细信息可以看到所设置的资源限制策略
强制调度
[root@server2 pod]# kubectl delete -f pod.yaml [root@server2 pod]# vim pod.yaml [root@server2 pod]# kubectl apply -f pod.yaml
强制调度节点为server3
主机网络模式
查看节点上的映射到主机应用 [root@server2 pod]# vim pod.yaml [root@server2 pod]# kubectl delete -f pod.yaml [root@server2 pod]# kubectl apply -f pod.yaml [root@server2 pod]# kubectl get pod -o wide hostnetwork:true 应用与宿主机共享网络空间,也就是k8s节点的IP,端口占用与宿主机一样。这样应用的IP就是宿主机的IP,与另一个应用的连接也不经过service IP这一层。 查看应用端口发现没有
restartPolicy重启策略
Pod 的 spec 中包含一个 restartPolicy 字段,其可能取值包括 Always、OnFailure 和 Never。默认值是 Always。
如下图,当我们我们没有设置重启策略时,不管pod是如何关闭的,pod都可以可以直接重启
[root@server2 pod]# kubectl delete pod busybox [root@server2 pod]# kubectl run -i -t busybox --image=busybox
设置其重启策略为Never,终止运行后查看Pod的信息可以看到这一新建pod没有被k8s重启
[root@server2 pod]# kubectl delete pod busybox
[root@server2 pod]# kubectl run -i -t busybox --image=busybox --restart=Never
|