- 资源清单格式
- 常见参数
- 自主式Pod资源清单
- 策略使用案例
- ImagePullPloicy镜像拉取策略
- 容器端口映射
- 资源限制
- 强制调度
- 主机网络模式
- restartPolicy重启策略
格式如下:
apiVersion: group/version //指明api资源属于哪个群组和版本,同一个组可以有多个版本
$ kubectl api-versions //查询命令
kind: //标记创建的资源类型,k8s主要支持以下资源类别
Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob
metadata: //元数据
name: //对像名称
namespace: //对象属于哪个命名空间
labels: //指定资源标签,标签是一种键值数据
spec: //定义目标资源的期望状态
常见参数
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这一层。
查看应用端口发现没有
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



