kubernetes Pod深入理解

root
233
文章
0
评论
2020年10月21日03:18:16 评论 1777字阅读5分55秒

kubernetes Pod深入理解

结合这个一起看k8s-pod状态和生命周期管理(liveness and readiness)

Pod存在的意义:

解决共享存储

容器为单进程容器,每个容器之间网络空间都是隔离的,使用一个共享的容器,实现一个pod里不同的容器使用一个网络,pod的独立IP也是这个共享容器

pause就是这个共享容器的镜像

可以在node1上查看到这个镜像启动的容器

 

Pod为亲密性应用而存在

亲密性应用场景:

  • 两个应用之间发生文件交互
  • 两个应用 需要通过127.0.0.1或者socket通信(典型组合:nginx+php)
  • 两个应用需要发生频繁的调用

 

共享存储

比如一个pod里有两个container,使用一个共享存储container存储另外两个容器

数据卷写法

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: write
    image: centos
    command: ["bash","-c","for i in {1..100};do echo $i >> /data/hello;sleep 1;done"]
    volumeMounts:
      - name: data
        mountPath: /data
  - name: read
    image: centos
    command: ["bash","-c","tail -f /data/hello"]
    volumeMounts:
      - name: data
        mountPath: /data
  volumes:
  - name: data
    emptyDir: {} #宿主机某个空目录映射到容器里的/data

 

查看这个数据卷 存储在宿主机的位置

资源限制

资源限制的好处:

避免某个容器利用率异常突发影响,不染会产生雪崩效应

Pod和Container的资源请求和限制:

  • spec.containers[].resources.limits.cpu
  • spec.containers[].resoucres.limits.memory
  • spec.containers[].resources.requests.cpu
  • spec.containers[].resoucres.requests.memory
apiVersion: v1
kind: Pod
metadata:
  name: frontend
spec:
  containers:
  - name: db
    image: mysql
    env:
  - name: MYSQL_ROOT_PPASSWORD
    value: "password"
  resources:
    requests:
      memory: "64Mi"
      cpu: "250m"
    limits:
      memory: "128Mi"
      cpu: "500m"
  - name: wp
    image: wordpress
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
    limits:
        memory: "128Mi"
        cpu: "500m"

limits:实际最大

requests:申请的配额,主要用于k8s做资源调度分配时参考值

一般limits的设置要比requests大1-1.5倍

1000m = 1c

500m = 0.5c

250m = 0.25c

重启策略

请移步k8s-pod状态和生命周期管理(liveness and readiness)

调度策略

nodeName:将Pod调度到指定的Node名称上

apiVersion: v1
kind: Pod
metadata:
  name: pod-example
  labels:
    app: nginx
spec:
  nodeName: k8s-node2
  containers:
  - name: nginx
    image: nginx:1.15

nodeSelector

请移步:K8s-对象资源格式&&标签

 

Taint

请移步k8s-常用命令

污点的应用场景:

  • 节点独占
  • 具有特殊硬件设备的节点

可取值:

  • NoSchedule:一定不能被调度
  • PreferNoSchedule:尽量不要调度
  • NoExecute:不仅不会调度,还会去追逐已有的pod

查看Taint的方法:

[root@master01 ~]# kubectl describe node|grep Taint
Taints:             node-role.kubernetes.io/master:NoSchedule
Taints:             <none>
Taints:             <none>

 

 

 

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年10月21日03:18:16
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
k8s-Service Account Kubernetes

k8s-Service Account

k8s-Service Account的授权管理 Service Account也是一种账号,是给运行在Pod里的进程提供了必要的身份证明。需要在Pod定义中指明引用的Service Account,...
k8s-RBAC Kubernetes

k8s-RBAC

k8s-RBAC认证授权策略 RBAC介绍 在Kubernetes中,所有资源对象都是通过API进行操作,他们保存在etcd里。而对etcd的操作我们需要通过访问 kube-apiserver 来实现...
k8s-Secret Kubernetes

k8s-Secret

配置管理中心Secret Secret是什么? Configmap一般是用来存放明文数据的,如配置文件,对于一些敏感数据,如密码、私钥等数据时,要用secret类型 Secret解决了密码、token...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: