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