1、Pod是什么?
1)k8s中最小的部署单元。
2)是1个容器或者多个容器的集合。
3)一个pod中的容器共享网络命名空间和存储,即IP地址也相同。
4)Pod是短暂的,不是持久存在的。

2、Pod存在的意义?
POd为亲密性应用而存在。
亲密性应用场景:
1)两个应用之间发生文件交互。
2)两个应用需要通过127.0.0.1或者socket通信。
3)两个应用需要发生高频的调用。

3、Pod共享的实现:
共享网络?基于同一个Network namespace,通过基础容器infra docker来关联实现。
共享存储?基于volume,确保有效数据存储,支持动态挂载。

4、容器分类:
1)基础容器(infra docker):docker ps查看,每创建1个pod,都会创建一个基础容器pause标记,每一个pod都是绑定这个基础容器IP。
2)初始化容器(init docker):先于业务容器开始执行,做初始化工作,需要在yaml配置中自定义。
3)业务容器:运行业务的容器,pod里面的容器都是并行启动的。

5、镜像拉取策略:imagePullPolicy
ifNotPresent: 镜像再宿主机上不存在时才去外拉取【默认值】。
Always:每次创建Pod都会重新拉取一次镜像。
Never:Pod永远不会主动拉取这个镜像。
root@master01 demo]# kubectl get deploy/nginx-deployment -o yaml |grep imagePull   #查看策略
[root@master01 demo]# kubectl describe pod nginx-harbor-dbfb75fb9-cszb6   #查看Pod的详细配置

6、资源限制
Pod与Container的资源请求和限制:
spec.containers[].resources.limits.cpu  #资源总限制。
spec.containers[].resources.limits.memory
spec.containers[].resources.requests.cpu  
#最低分配的资源,宿主机只有满足requsts才能创建资源。
spec.containers[].resources.requests.memory


apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-harbor-limit
  labels:
        app: nginx-harbor-limit
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-harbor-limit
  template:
    metadata:
      labels:
        app: nginx-harbor-limit
    spec:
      imagePullSecrets:
      - name: registry-pull-152.148-harbor
      containers:
        - name: nginx-harbor-limit
          image: 42.159.152.148/mydate/nginx:latest
          ports:
            - containerPort: 80
          resources:
            requests:
              memory: "64Mi"
              cpu: "250m"
            limits:
              memory: "128Mi"
              cpu: "500m"

[root@master01 demo]# kubectl describe node node02
Non-terminated Pods:         (8 in total)
  Namespace                  Name                                           CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE
  ---------                  ----                                           ------------  ----------  ---------------  -------------  ---
  default                    nginx-deployment-9b644dcd5-dbdbr               0 (0%)        0 (0%)      0 (0%)           0 (0%)         11h
  default                    nginx-deployment-9b644dcd5-rcp88               0 (0%)        0 (0%)      0 (0%)           0 (0%)         11h
  default                    nginx-harbor-59cc5c8d8c-6qjgj                  0 (0%)        0 (0%)      0 (0%)           0 (0%)         9h
  default                    nginx-harbor-limit-7cc8bb749d-8ctfn            250m (25%)    500m (50%)  64Mi (7%)        128Mi (14%)    2m12s
  default                    nginx-harbor-limit-7cc8bb749d-rhjrz            250m (25%)    500m (50%)  64Mi (7%)        128Mi (14%)    2m12s
  kube-system                kube-flannel-ds-amd64-7q54b                    100m (10%)    100m (10%)  50Mi (5%)        50Mi (5%)      52d
  kube-system                kube-proxy-7ddkf                               0 (0%)        0 (0%)      0 (0%)           0 (0%)         52d
  kubernetes-dashboard       kubernetes-metrics-scraper-86456cdd8f-7js7v    0 (0%)        0 (0%)      0 (0%)           0 (0%)         52d

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐