1,镜像拉取策略(imagePullPolicy):
IfNotPresent:默认值,镜像在宿主机上不存在时才拉取
Always:每次创建 Pod 都会重新拉取一次镜像
Never: Pod 永远不会主动拉取这个镜像
2,dockerhub仓库:
公开的项目:可以任意下载,但是不可任意上传
私有的:必须先登陆,才可以下载
如果是 http 的 Harbor,那么 docker 在拉取的时候,就需要在每个 node 机器,设置可信任。
docker 私有镜像仓库的拉取(如果是 https 的仓库,拷贝证书到指定机器就可以,拉取镜像的时候拷贝了证书不需要 docker pull https:xxx.com 拉取,直接 docker pull 域名:端口)
docker 拉取和k8s 拉取镜像的凭局不是同一套。
3,Pod和Container的资源请求和限制:
spec.containers[].resources.limits.cpu
spec.containers[].resources.limits.memory
spec.containers[].resources.requests.cpu
spec.containers[].resources.requests.memory
资源限制:
Requests: 就是需求限制,也叫软限制
Limits:最大限制,也叫硬限制
通常来说:Limits >= Requests
并且requests 和 limits 通常要一起配置,若只配置了requests,而不配置limits,则很可能导致Pod会吃掉所有资源。
4,重启策略(restartPolicy):
Always:当容器终止退出后,总是重启容器,默认策略。
OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。
Never:当容器终止退出,从不重启容器。
5,健康检查(Probe):
Probe有以下两种类型:
? livenessProbe(存活检查)
如果检查失败,将杀死容器,根据Pod的restartPolicy来操作。
? readinessProbe(就绪检查)
如果检查失败,Kubernetes会把Pod从service endpoints中剔除。
Probe支持以下三种检查方法:
? httpGet
发送HTTP请求,返回200-400范围状态码为成功。
? exec
执行Shell命令返回状态码是0为成功。
? tcpSocket
发起TCP Socket建立成功。
6,调度约束:
nodeName用于将Pod调度到指定的Node名称上
nodeSelector用于将Pod调度到匹配Label的Node上
[root@centos7 demo]#
[root@centos7 demo]# cat c.yml
apiVersion: v1
kind: Pod
metadata:
name: pod-example
labels:
app: nginx
spec:
nodeSelector:
team: a
containers:
- name: nginx
image: nginx:1.15
[root@centos7 demo]#
[root@centos7 ~]#
[root@centos7 ~]# kubectl label nodes k8s-node1 team=a
node/k8s-node1 labeled
[root@centos7 ~]#
[root@centos7 ~]# kubectl label nodes k8s-node2 team=b
node/k8s-node2 labeled
[root@centos7 ~]#
[root@centos7 ~]# kubectl get nodes --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-master1 Ready <none> 5d3h v1.16.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master1,kubernetes.io/os=linux
k8s-node1 Ready <none> 5d3h v1.16.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node1,kubernetes.io/os=linux,team=a
k8s-node2 Ready <none> 5d3h v1.16.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node2,kubernetes.io/os=linux,team=b
[root@centos7 ~]#
原文:https://www.cnblogs.com/k8s-pod/p/13196891.html