目录

Pod的生命周期

1、存活性探测行为属性 (Liveness probe)

2、Pod就绪性探测

3、Pod对象的相位

4、Pod的创建过程

5、Pod生命周期中的重要阶段

6、容器的重启策略

7、Pod的终止过程

8、设置Pod对象的安全上下文securityContext

9、资源需求及资源限制

9.1资源需求

        9.2资源限制

10、Pod得服务质量类别


1、存活性探测行为属性 (Liveness probe)

使用kubectl describe命令查看配置了存活性探测的Pod对象的详细信息时,其相关容器中会输出类似如下一行的内容:

Liveness:  exec [test -e /tmp/healthy] delay=0s timeout=1s period=10s    

      #success=1 #failure=3

 

它给出了探测方式及其额外的配置属性delay、timeout、period、success和failure及其各自的相关属性值。用户没有明确定义这些属性字段时,它们会使用各自的默认值,例如上面显示出的设定。这些属性信息可通过“spec.containers.livenessProbe”的如下属性字段来给出。

  • initialDelaySeconds<integer>

存活性探测延迟时长,即容器启动多久之后再开始第一次探测操作,显示为delay属性;默认为0秒,即容器启动后立刻便开始进行探测。

  •  timeoutSeconds<integer>

存活性探测的超时时长,显示为timeout属性,默认为1s,最小值也为1s

  •  periodSeconds<integer>

存活性探测的频度,显示为period属性,默认为10s,最小值为1s;过高的频率会对Pod对象带来较大的额外开销,而过低的频率又会使得对错误的反应不及时。

  •  successThreshold<integer>

处于失败状态时,探测操作至少连续多少次的成功才被认为是通过检测,显示为#success属性,默认值为1,最小值也为1。

  •  failureThreshold

 处于成功状态时,探测操作至少连续多少次的失败才被视为是检测不通过,显示为#failure属性,默认值为3,最小值为1。

 

现在我们查看一个liveness-exec.yaml实例:

[root@master ~]# git clone https://github.com/iKubernetes/Kubernetes_Advanced_Practical
Cloning into 'Kubernetes_Advanced_Practical'...
remote: Enumerating objects: 489, done.
remote: Total 489 (delta 0), reused 0 (delta 0), pack-reused 489
Receiving objects: 100% (489/489), 148.75 KiB | 13.00 KiB/s, done.
Resolving deltas: 100% (122/122), done.

[root@master ~]# cd Kubernetes_Advanced_Practical/
[root@master Kubernetes_Advanced_Practical]# ls
chapter10  chapter11  chapter12  chapter13  chapter14  chapter15  chapter2  chapter3  chapter4  chapter5  chapter6  chapter7  chapter8  chapter9  conf_files  README.md
[root@master Kubernetes_Advanced_Practical]# cd chapter4

[root@master chapter4]# vim liveness-exec.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness-exec
  name: liveness-exec
spec:
  containers:
  - name: liveness-demo
    image: busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600    #创建/tmp/healthy;睡眠30s以后,在删除 /tmp/healthy这个文件,在睡眠600s
    livenessProbe:
      exec:
        command:
        - test
        - -e
        - /tmp/healthy    #这个文件只要是存在得我就认为是健康得  注意这里我们只指定了exec没指定其他的  其它得都会使用默认值

[root@master chapter4]# kubectl apply -f  liveness-exec.yaml
pod/liveness-exec created

[root@master chapter4]# kubectl get pods -o wide
NAME                      READY   STATUS    RESTARTS   AGE     IP           NODE    NOMINATED NODE   READINESS GATES
liveness-exec             1/1     Running   0          37s     10.244.2.5   node2   <none>           <none>
mypod                     1/1     Running   0          41h     10.244.2.4   node2   <none>           <none>
ng-dep-5fb7d74687-vfssn   1/1     Running   0          5d16h   10.244.2.3   node2   <none>           <none>

间隔30s以后查看容器得详细信息

[root@master chapter4]# kubectl describe pods liveness-exec
Name:         liveness-exec
Namespace:    default
Priority:     0
Node:         node2/172.21.16.33
Start Time:   Wed, 11 Nov 2020 10:57:17 +0800
Labels:       test=liveness-exec
Annotations:  <none>
Status:       Running
IP:           10.244.2.5
IPs:
  IP:  10.244.2.5
Containers:
  liveness-demo:
    Container ID:  docker://bf8f3d77ecadf8f86c50dccc87d1d27e8e215af160cc58dfde631eee088d31e0
    Image:         busybox
    Image ID:      docker-pullable://busybox@sha256:a9286defaba7b3a519d585ba0e37d0b2cbee74ebfe590960b0b1d6a5e97d1e1d
    Port:          <none>
    Host Port:     <none>
    Args:
      /bin/sh
      -c
      touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
    State:          Running
      Started:      Wed, 11 Nov 2020 10:59:14 +0800
    Last State:     Terminated       
      Reason:       Error
      Exit Code:    137
      Started:      Wed, 11 Nov 2020 10:57:39 +0800
      Finished:     Wed, 11 Nov 2020 10:59:02 +0800
    Ready:          True
    Restart Count:  1    #这里可以查看到重启了1次
    Liveness:       exec [test -e /tmp/healthy] delay=0s timeout=1s period=10s #success=1 #failure=3
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-2jsh9 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  default-token-2jsh9:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-2jsh9
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason     Age                  From               Message
  ----     ------     ----                 ----               -------
  Normal   Scheduled  2m38s                default-scheduler  Successfully assigned default/liveness-exec to node2
  Normal   Pulled     2m16s                kubelet            Successfully pulled image "busybox" in 21.497183923s
  Normal   Killing    83s                  kubelet            Container liveness-demo failed liveness probe, will be restarted
  Normal   Pulling    53s (x2 over 2m37s)  kubelet            Pulling image "busybox"
  Normal   Pulled     42s                  kubelet            Successfully pulled image "busybox" in 11.010754251s
  Normal   Created    41s (x2 over 2m16s)  kubelet            Created container liveness-demo
  Normal   Started    41s (x2 over 2m16s)  kubelet            Started container liveness-demo
  Warning  Unhealthy  3s (x4 over 103s)    kubelet            Liveness probe failed:

[root@master chapter4]# kubectl get pods  
NAME                      READY   STATUS    RESTARTS   AGE
liveness-exec             1/1     Running   4          7m23s    #这里我们可以看到liveness-exec这个pod被重启了4次
mypod                     1/1     Running   0          41h
ng-dep-5fb7d74687-vfssn   1/1     Running   0          5d16h

查看 liveness-http.yaml实例

[root@master chapter4]# vim liveness-http.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-http
spec:
  containers:
  - name: liveness-demo
    image: nginx:1.14-alpine
    ports:
    - name: http
      containerPort: 80
    lifecycle:      #  2、上面是我们运行了一个Nginx镜像,我们又借助于lifecycle启动后事件专门创建了一个用于做健康状态检测的URL放在了ng的网页文件路径下
      postStart:
        exec:
          command:
          - /bin/sh
          - -c
          - 'echo Healty > /usr/share/nginx/html/healthz'
    livenessProbe:    #   3、随着我们健康状态检测  就是像 /usr/share/nginx/html/healthz这个网页发请求,如果能请求成功我们认为是健康得,如果失败我们则认为是不健康得
      httpGet:      #   1、我们使用 httpGet去向本机得/healthz的URL发送请求,这个文件来自于哪里是我们借助于 lifecycle创建的
        path: /healthz
        port: http     #这里的http是调用上面的ports的name  这两个值必须保持一致
        scheme: HTTP
      periodSeconds: 2     #每两s中检测一次
      failureThreshold: 2    #探测操作至少连续2次的失败才被视为是检测不通过
      initialDelaySeconds: 3   #即容器启动3s之后再开始第一次探测操作

[root@master chapter4]# kubectl apply -f liveness-http.yaml
pod/liveness-http created

[root@master chapter4]# kubectl get pods -o wide
NAME                      READY   STATUS             RESTARTS   AGE     IP           NODE    NOMINATED NODE   READINESS GATES
liveness-exec             0/1     CrashLoopBackOff   9          26m     10.244.2.5   node2   <none>           <none>
liveness-http             1/1     Running            0          58s     10.244.1.5   node1   <none>           <none>
mypod                     1/1     Running            0          42h     10.244.2.4   node2   <none>           <none>
ng-dep-5fb7d74687-vfssn   1/1     Running            0          5d17h   10.244.2.3   node2   <none>           <none>

[root@master chapter4]# kubectl describe pods liveness-http    #查看健康状态检测的详细信息
Name:         liveness-http
Namespace:    default
Priority:     0
Node:         node1/172.21.96.13
Start Time:   Wed, 11 Nov 2020 11:22:23 +0800
Labels:       test=liveness
Annotations:  <none>
Status:       Running
IP:           10.244.1.5
IPs:
  IP:  10.244.1.5
Containers:
  liveness-demo:
    Container ID:   docker://e099143e80a5d9fbaf8fd01f85e07afdaef85d20c5a43e9cdf6fbc6d3934dae5
    Image:          nginx:1.14-alpine
    Image ID:       docker-pullable://nginx@sha256:485b610fefec7ff6c463ced9623314a04ed67e3945b9c08d7e53a47f6d108dc7
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Wed, 11 Nov 2020 11:22:34 +0800
    Ready:          True
    Restart Count:  0
    Liveness:       http-get http://:http/healthz delay=3s timeout=1s period=2s #success=1 #failure=2
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-2jsh9 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  default-token-2jsh9:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-2jsh9
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  2m14s  default-scheduler  Successfully assigned default/liveness-http to node1
  Normal  Pulling    2m14s  kubelet            Pulling image "nginx:1.14-alpine"
  Normal  Pulled     2m3s   kubelet            Successfully pulled image "nginx:1.14-alpine" in 10.768366105s
  Normal  Created    2m3s   kubelet            Created container liveness-demo
  Normal  Started    2m3s   kubelet            Started container liveness-demo

[root@master chapter4]# kubectl exec -it liveness-http -- /bin/sh      #连接到容器里面模拟删除healthz的网页文件查看健康状态检测
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # cd /usr/share/nginx/html/
/usr/share/nginx/html # ls
50x.html    healthz     index.html
/usr/share/nginx/html # rm healthz

[root@master chapter4]# kubectl get pods    #可以查看liveness-http的Pod的重启了1次
NAME                      READY   STATUS    RESTARTS   AGE
liveness-exec             1/1     Running   11         31m
liveness-http             1/1     Running   1          6m17s
mypod                     1/1     Running   0          42h
ng-dep-5fb7d74687-vfssn   1/1     Running   0          5d17h

2、Pod就绪性探测

  • Pod对象启动后,容器应用通常需要一段时间才能完成其初始化过程,例如加载配置或数据,甚至有些程序需要运行某类的预热过程,若在此阶段完成之前即接入客户端的请求,势必会因为等待太久而影响用户体验。因此,应该避免于Pod对象启动后立即让其处理客户端请求,而是等待容器初始化工作执行完成并转为“就绪”状态,尤其是存在其他提供相同服务的Pod对象的场景更是如此。
  • 与存活性探测机制类似,就绪性探测是用来判断容器就绪与否的周期性(默认周期为10秒钟)操作,它用于探测容器是否已经初始化完成并可服务于客户端请求,探测操作返回“success”状态时,即为传递容器已经“就绪”的信号。
  • 与存活性探测机制相同,就绪性探测也支持Exec、HTTP GET和TCP Socket三种探测方式,且各自的定义机制也都相同。但与存活性探测触发的操作不同的是,探测失败时,就绪性探测不会杀死或重启容器以保证其健康性,而是通知其尚未就绪,并触发依赖于其就绪状态的操作(例如,从Service对象中移除此Pod对象)以确保不会有客户端请求接入此Pod对象。不过,即便是在运行过程中,Pod就绪性探测依然有其价值所在,例如Pod A依赖到的PodB因网络故障等原因而不可用时,Pod A上的服务应该转为未就绪状态,以免无法向客户端提供完整的响应。
  • 将容器定义中的livenessProbe字段名替换为readinessProbe即可定义出就绪性探测的配置,一个简单的示例如下面的配置清单(readiness-exec.yaml)所示,它会在Pod对象创建完成5秒钟后使用test-e/tmp/ready命令来探测容器的就绪性,命令执行成功即为就绪,探测周期为5秒钟:

 

[root@master chapter4]# vim readiness-exec.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: readiness-exec
  name: readiness-exec
spec:
  containers:
  - name: readiness-demo
    image: busybox
    args: ["/bin/sh", "-c", "while true; do rm -f /tmp/ready; sleep 30; touch /tmp/ready; sleep 300; done"]  #模拟就绪检测不成功不成功  30s之后成功了
    readinessProbe:
      exec:
        command: ["test", "-e", "/tmp/ready"]   # readinessProbe检测就看这个文件存在与否
      initialDelaySeconds: 5    #延迟5s中检测
      periodSeconds: 5

[root@master chapter4]# kubectl apply -f readiness-exec.yaml
pod/readiness-exec created

 

接着,运行“kubectl get-w”命令监视其资源变动信息,由如下命令结果可知,尽管Pod对象处于“Running”状态,但直到就绪探测命令执行 成功后,Pod资源才转为就绪
[root@master chapter4]# kubectl get pods -w   #实时去检测容器的状态
NAME                      READY   STATUS    RESTARTS   AGE
liveness-exec             1/1     Running   49         3h8m
liveness-http             1/1     Running   1          163m
mypod                     1/1     Running   0          44h
ng-dep-5fb7d74687-vfssn   1/1     Running   0          5d19h
readiness-exec            0/1     Running   0          28s
readiness-exec            1/1     Running   0          39s         #看这里
liveness-exec             0/1     CrashLoopBackOff   49         3h9m

模拟把文件删除,查看是否还是就绪的状态

[root@master chapter4]# kubectl get pods -w
NAME                      READY   STATUS             RESTARTS   AGE
liveness-exec             0/1     CrashLoopBackOff   49         3h12m
liveness-http             1/1     Running            1          167m
mypod                     1/1     Running            0          44h
ng-dep-5fb7d74687-vfssn   1/1     Running            0          5d20h
readiness-exec            1/1     Running            0          4m9s
readiness-exec            0/1     Running            0          4m9s       #可以看到左边的为1

我们在人为的创建一个看下效果

^C[root@master chapter4]# kubectl exec readiness-exec -- touch /tmp/ready
[root@master chapter4]# kubectl get pods -w
NAME                      READY   STATUS             RESTARTS   AGE
liveness-exec             0/1     CrashLoopBackOff   49         3h14m
liveness-http             1/1     Running            1          169m
mypod                     1/1     Running            0          44h
ng-dep-5fb7d74687-vfssn   1/1     Running            0          5d20h
readiness-exec            0/1     Running            0          6m2s
readiness-exec            1/1     Running            0          6m4s
liveness-exec             1/1     Running            50         3h14m     #可以看到左边的为1

这里需要特别注意的是,未定义就绪性探测的Pod对象在Pod进入“Running”状态后将立即就绪,在容器需要时间进行初始化的场景 中,在应用真正就绪之前必然无法正常响应客户端请求,因此,生产实践中,必须为关键性Pod资源中的容器定义就绪性探测机制。

3、Pod对象的相位

Pod启动起来以后,Pod对象总是应该处于其生命进程中以下几个相位(phase)之一。
  • PendingAPI Server创建了Pod资源对象并已存入etcd中,但它尚未被调度完成,或者仍处于从仓库下载镜像的过程中。 (一般是资源无法满足调度的需求时会出现pending)
  • RunningPod已经被调度至某节点,并且所有容器都已经被kubelet创建完成。
  • SucceededPod中的所有容器都已经成功终止并且不会被重启。
  • Failed:所有容器都已经终止,但至少有一个容器终止失败,即容器返回了非0值的退出状态或已经被系统终止。
  • UnknownAPI Server无法正常获取到Pod对象的状态信息,通常 是由于其无法与所在工作节点的kubelet通信所致。

4、Pod的创建过程

PodKubernetes的基础单元,理解它的创建过程对于了解系统运作大有裨益。图4-10描述了一个Pod资源对象的典型创建过程。
  • 1)用户通过kubectl或其他API客户端提交Pod SpecAPI Server
  • 2API Server尝试着将Pod对象的相关信息存入etcd中,待写入操作执行完成,API Server即会返回确认信息至客户端。
  • 3API Server开始反映etcd中的状态变化。
  • 4)所有的Kubernetes组件均使用“watch”机制来跟踪检查API Server上的相关的变动。
  • 5kube-scheduler(调度器)通过其“watcher”觉察到API Server创建了新的Pod对象但尚未绑定至任何工作节点。
  • 6kube-schedulerPod对象挑选一个工作节点并将结果信息更新至API Server
  • 7)调度结果信息由API Server更新至etcd存储系统,而且API Server也开始反映此Pod对象的调度结果。
  • 8Pod被调度到的目标工作节点上的kubelet尝试在当前节点上调用Docker启动容器,并将容器的结果状态回送至API Server
  • 9API ServerPod状态信息存入etcd系统中。
  • 10)在etcd确认写入操作成功完成后,API Server将确认信息发送至相关的kubelet,事件将通过它被接受。

 

5、Pod生命周期中的重要阶段

除了创建应用容器(主容器及其辅助容器)之外,用户还可以为Pod对象定义其生命周期中的多种行为,如初始化容器、存活性探测及就绪性探测等。
1.初始化容器
 
初始化容器(init container)即应用程序的主容器启动之前要运行的容器,常用于为主容器执行一些预置操作,它们具有两种典型特征。
  •  1)初始化容器必须运行完成直至结束,若某初始化容器运行失 败,那么Kubernetes需要重启它直到成功完成。
  • 2)每个初始化容器都必须按定义的顺序串行运行。

 注意: 如果Podspec.restartPolicy字段值为“Never”,那么运行失败的初始化容器不会被重启。

有不少场景都需要在应用容器启动之前进行部分初始化操作,例如,等待其他关联组件服务可用、基于环境变量或配置模板为应用程序生成配置文件、从配置中心获取配置等。初始化容器的典型应用需求具 体包含如下几种。
  • 1)用于运行特定的工具程序,出于安全等方面的原因,这些程序不适于包含在主容器镜像中。
  • 2)提供主容器镜像中不具备的工具程序或自定义代码。
  • 3)为容器镜像的构建和部署人员提供了分离、独立工作的途径,使得他们不必协同起来制作单个镜像文件。
  • 4)初始化容器和主容器处于不同的文件系统视图中,因此可以分别安全地使用敏感数据,例如Secrets资源。
  • 5)初始化容器要先于应用容器串行启动并运行完成,因此可用于延后应用容器的启动直至其依赖的条件得到满足。
Pod资源的“spec.initContainers”字段以列表的形式定义可用的初始容器,其嵌套可用字段类似于“spec.containers”。下面的资源清单仅是一个 初始化容器的使用示例,可自行创建并观察初始化容器的相关状

[root@master ~]# vim initialized.yaml

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: ikubernetes/myapp:v1
  initContainers:
  - name: init-something
    image: busybox
    command: ['sh', '-c', 'sleep 10']

[root@master ~]# kubectl apply -f initialized.yaml
pod/myapp-pod created
[root@master ~]# kubectl get pods -w
NAME                      READY   STATUS             RESTARTS   AGE
liveness-exec             0/1     CrashLoopBackOff   59         3h54m
liveness-http             1/1     Running            1          3h29m
myapp-pod                 0/1     Init:0/1           0          9s
mypod                     1/1     Running            0          45h
ng-dep-5fb7d74687-vfssn   1/1     Running            0          5d20h
readiness-exec            1/1     Running            0          46m
myapp-pod                 0/1     Init:0/1           0          29s
myapp-pod                 0/1     PodInitializing    0          39s
myapp-pod                 1/1     Running 

2.生命周期钩子函数
生命周期钩子函数(lifecycle hook)是编程语言(如Angular)中常 用的生命周期管理的组件,它实现了程序运行周期中的关键时刻的可见 性,并赋予用户为此采取某种行动的能力。类似地,容器生命周期钩子 使它能够感知其自身生命周期管理中的事件,并在相应的时刻到来时运 行由用户指定的处理程序代码。Kubernetes为容器提供了两种生命周期钩子。
  • postStart:于容器创建完成之后立即运行的钩子处理器(handler),不过Kubernetes无法确保它一定会于容器中的 ENTRYPOINT之前运行
  • preStop:于容器终止操作之前立即运行的钩子处理器,它以同步的方式调用,因此在其完成之前会阻塞删除容器的操作的调用

钩子处理器的实现方式有“Exec”“HTTP”两种,前一种在钩子事 件触发时直接在当前容器中运行由用户定义的命令,后一种则是在当前 容器中向某URL发起HTTP请求。

postStartpreStop处理器定义在容器的spec.lifecycle嵌套字段中,其使用方法如下面的资源清单所示,可自行创建相关的Pod资源对象,并验证其执行结果:

apiVersion: v1
kind: Pod
metadata:
  name: lifecycle-demo
spec:
  containers:
  - name: lifecycle-demo-container
    image: ikubernetes/myapp:v1
    lifecycle:
      postStart:
       exec:
         command: ["/bin/sh","-c","echo 'lifecycle hooks handler' > /usr/share/nginx/html/test.html"]

 3.容器探测

容器探测(container probe)是Pod对象生命周期中的一项重要的日常任务,它是kubelet对容器周期性执行的健康状态诊断,诊断操作由容器的处理器(handler)进行定义。Kubernetes支持三种处理器用于Pod测。
  • ·ExecAction:在容器中执行一个命令,并根据其返回的状态码进行诊断的操作称为Exec探测,状态码为0表示成功,否则即为不健康状 态。
  • ·TCPSocketAction:通过与容器的某TCP端口尝试建立连接进行诊断,端口能够成功打开即为正常,否则为不健康状态。
  • ·HTTPGetAction:通过向容器IP地址的某指定端口的指定path发起HTTP GET请求进行诊断,响应码为2xx3xx时即为成功,否则为失败。
任何一种探测方式都可能存在三种结果:“Success”(成功)、“Failure”(失败)或“Unknown”(未知),只有第一种结果表示 成功通过检测。
  • ·kubelet可在活动容器上执行两种类型的检测:存活性检测(livenessProbe)和就绪性检测(readinessProbe)。·
  • 存活性检测:用于判定容器是否处于运行Running)状态;一 此类检测未通过,kubelet将杀死容器并根据其restartPolicy决定是否将 其重启;未定义存活性检测的容器的默认状为“Success”
  • 就绪性检测:用于判断容器是否准备就绪并可对外提供服务;未通过检测的容器 意味着其尚未准备就绪,端点控制器(如Service对象)会将其IP从所有 匹配到此Pod对象的Service对象的端点列表中移除;检测通过之后,会再次将其IP添加至端点列表中。

 

6、容器的重启策略

Pod对象容器程因容器发生程序崩溃或容器申请超出限制的资源等原因都可能会导致Pod对象的终止,此时是否应该重建该Pod对象则取决于其重启策略 restartPolicy)属性的定义。
  •  1Always:但凡Pod对象终止就将其重启,此为默认设定。   Always时默认的
  • 2OnFailure:仅在Pod对象出现错误时方才将其重启。   正常终止就不重启
  • 3Never:从不重启。
需要注意的是,restartPolicy适用于Pod对象中的所有容器,而且它仅用于控制在同一节点上重新启动Pod对象的相关容器。首次需要重启 的容器,将在其需要时立即进行重启,随后再次需要重启的操作将由 kubelet延迟一段时间后进行,且反复的重启操作的延迟时长依次为10 秒、20秒、40秒、80秒、160秒和300秒,300秒是最大延迟时长。事实 上,一旦绑定到一个节点,Pod对象将永远不会被重新绑定到另一个节 点,它要么被重启,要么终止,直到节点发生故障或被删除

7、Pod的终止过程

Pod对象代表了在Kubernetes集群节点上运行的进程,它可能曾用于处理生产数据或向用户提供服务等,于是,当Pod本身不再具有存在的 价值时,如何将其优雅地终止就显得尤为重要了,而用户也需要能够在 正常提交删除操作后可以获知其何时开始终止并最终完成。操作中,当用户提交删除请求之后,系统就会进行强制删除操作的宽限期倒计时, 并将TERM信息发送给Pod对象的每个容器中的主进程。宽限期倒计时结束后,这些进程将收到强制终止的KILL信号,Pod对象随即也将由API Server删除。如果在等待进程终止的过程中,kubelet或容器管理器 发生了重启,那么终止操作会重新获得一个满额的删除宽限期并重新执行删除操作。
如图4-11所示,一个典型的Pod对象终止流程具体如下。
  • 1)用户发送删除Pod对象的命令。
  • 2API服务器中的Pod对象会随着时间的推移而更新,在宽限期内(默认为30秒),Pod被视为“dead”
  • 3)将Pod标记为“Terminating”状态。
  • 4)(与第3步同时运行)kubelet在监控到Pod对象转为“Terminating”状态的同时启动Pod关闭过程。
  • 5)(与第3步同时运行)端点控制器监控到Pod对象的关闭行为时将其从所有匹配到此端点的Service资源的端点列表中移除。
  • 6)如果当前Pod对象定义了preStop钩子处理器,则在其标记为“terminating”后即会以同步的方式启动执行;如若宽限期结束后, preStop仍未执行结束,则第2步会被重新执行并额外获取一个时长为2的小宽限期。
  • 7Pod对象中的容器进程收到TERM信号。
  • 8)宽限期结束后,若存在任何一个仍在运行的进程,那么Pod对象即会收到SIGKILL信号。
  • 9Kubelet请求API Server将此Pod资源的宽限期设置为0从而完成删除操作,它变得对用户不再可见。
    默认情况下,所有删除操作的宽限期都是30秒,不过,kubectl delete命令可以使用“--grace-period=<seconds>”选项自定义其时长,若使0值则表示直接强制删除指定的资源,不过,此时需要同时为命令使 “--force”选项

8、设置Pod对象的安全上下文securityContext

Pod对象的安全上下文用于设定Pod或容器的权限和访问控制功能,其支持设置的常用属性包括以下几个方面。
  • 基于用户IDUID)和组IDGID)控制访问对象(如文件)时的权限。
  • 以特权或非特权的方式运行。
  • 通过Linux Capabilities为其提供部分特权。
  • 基于Seccomp过滤进程的系统调用。
  • 基于SELinux的安全标签。
  • 是否能够进行权限升级。
Pod对象的安全上下文定义在spec.securityContext字段中,而容器的安全上下文则定义在spec.containers[].securityContext字段中,且二者可 嵌套使用的字段还有所不同。下面的配置清单示例为busybox容器定义 了安全上下文,它以uid1000的非特权用户运行容器,并禁止权限升级:

apiVersion: v1
kind: Pod
metadata:
  name: pod-with-securitycontext
spec:
  containers:
  - name: busybox
    image: busybox
    command: ["/bin/sh","-c","sleep 86400"]
    securityContext:
      runAsNonRoot: true
      runAsUser: 1000
      allowPrivilegeEscalation: false

 将上面的配置清单保存于配置文件(如pod-with- securitycontext.yaml文件)中,而后创建于集群中即可验证容器进程的

 运行者身份:

[root@master ~]#kubectl apply -f pod-with-securitycontext.yaml
[root@master ~]#kubectl exec pod-with-securitycontext -- ps aux
PID USER TIME COMMAND
1 1000 0:00 sleep 86
另外,可设置的安全上下文属性还有fsGroupseLinuxOptions、supplementalGroupssysctlscapabilitiesprivileged等,且Pod和容器各 自支持的字段也有所不同

9、资源需求及资源限制

Kubernetes上,可由容器或Pod请求或消费的计算资源是指CPU和内存(RAM),这也是目前仅有的受支持的两种类型。相比较来 说,CPU属于可压缩(compressible)型资源,即资源额度可按需收 缩,而内存(当前)则是不可压缩型资源,对其执行收缩操作可能会导 致某种程度的问题。
目前来说,资源隔离尚且属于容器级别,CPU和内存资源的配置需要在Pod中的容器上进行,每种资源均可由“requests”属性定义其请求的保可用值,即容器运行可能用不到这些额度的资源,但用到时必须要 确保有如此多的资源可用,而“limits”属性则用于限制资源可用的最大值,即硬限制,如图4-12所示。不过,为了表述方便,人们通常仍然把 资源配置称作Pod资源的请求和限制,只不过它是指Pod内所有容器上某 种类型资源的请求和限制的总和。
Kubernetes系统上,1个单位的CPU相当于虚拟机上的1颗虚拟CPUvCPU)或物理机上的一个超线程(Hyperthread,或称为一个逻 CPU),它支持分数计量方式,一个核心(1core)相当于1000个微核 心(millicores),因此500m相当于是0.5个核心,即二分之一个核心。内存的计量方式与日常使用方式相同,默认单位是字节,也可以使用 EPTGMK作为单位后缀,或EiPiTiGiMiKi形式的 单位后缀。

9.1资源需求

下面的示例中,自主式Pod要求为stress容器确保128Mi的内存及五分之一个CPU核心(200m)资源可用,它运行stress-ng镜像启动一个进 程(-m 1)进行内存性能压力测试,满载测试时它也会尽可能多地占用 CPU资源,另外再启动一个专用的CPU压力测试进程(-c 1)。stress-ng是一个多功能系统压力测试具,master/worker模型,Master为主进程, 负责生成和控制子进程,worker是负责执行各类特定测试的子进程,例 如测试CPU的子进程,以及测试RAM的子进程等:

apiVersion: v1kind: Pod
metadata:
  name: stress-pod
spec:
  containers:
  - name: stress
    image: ikubernetes/ stress-ng
    command: ["/usr/bin/stress-ng", "-m 1", "-c 1", "-metrics-brief"]
    resources:
      requests:
        memory: "128Mi"
        cpu: "200m"

上面的配置清单中,其请求使用的CPU资源大小为200m,这意味着一个CPU核心足以确保其以期望的最快方式运行。另外,配置清单中 期望使用的内存大小为128Mi,不过其运行时未必真的会用到这么多。 考虑到内存为非压缩型资源,其超出指定的大小在运行时存在被OOM killer杀死的可能性,于是请求值也应该就是其理想中使用的内存空间上限。
接下来创建并运行此Pod对其资源限制效果进行检查。需要特别说明的是,笔者当前使用的系统环境中,每个节点的可用CPU核心数均为 8,物理内存空间为16GB
[root@master ~]#kubectl apply -f pod-resources-test.yaml
而后在Pod资源的容器内运行top命令观察其CPU及内存资源的占用状态,如下所示,其中{stress-ng-vm}是执行内存压测的子进程,它默认使用256m的内存空间,{stress-ng-cpu}是执行CPU压测的专用子进程:
[root@master ~]#kubectl exec stress-pod -- top
Mem: 2884676K used, 13531796K free, 27700K shrd, 2108K buff, 1701456K cached
CPU: 25% usr 0% sys 0% nic 74% idle 0% io 0% irq 0% sirq
Load average: 0.57 0.60 0.71 3/435 15
PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND
9 8 root R 262m 2% 6 13% {stress-ng-vm} /usr/bin/stress-ng
7 1 root R 6888 0% 3 13% {stress-ng-cpu} /usr/bin/stress-ng
1 0 root S 6244 0% 1 0% /usr/bin/stress-ng -c 1 -m 1 --met

top命令的输出结果显示,每个测试进程的CPU占用率为13%(实际为12.5%),{stress-ng-vm}的内存占用量为262mVSZ),此两项资源 占用量都远超其请求的用量,原因是stress-ng会在可用的范围内尽量多 地占用相关的资源。两个测试线程分布于两个CPU核心以满载的方式运 行,系统共有8个核心,因此其使用率为25%2/8)。另外,节点上的内存资源充裕,虽然容器的内存用量远超128M,但它依然可运行。一 旦资源紧张时,节点仅保证容器有五分之一个CPU核心可用,对于有着 8个核心的节点来说,它的占用率为2.5%,于是每个进程为1.25%,多占 用的资源会被压缩。内存为非可压缩型资源,

对于压缩型的资源CPU来说,未定义其请求用量以确保其最小的可用资源时,它可能会被其他的Pod资源压缩至极低的水平,甚至会达到 Pod不能够被调度运行的境地。而对于非压缩型资源来说,内存资源在 任何原因导致的紧缺情形下都有可能导致相关的进程被杀死。因此,在 Kubernetes系统上运行关键型业务相关的Pod时必须使用requests属性为 容器定义资源的确保可用量所以此Pod在内存资源紧 张时可能会因OOM被杀死(killed)。

集群中的每个节点都拥有定量的CPU和内存资源,调度Pod时,仅那些被请求资源的余量可容纳当前被调度的Pod的请求量的节点才可作 为目标节点。也就是说,Kubernetes的调度器会根据容器的requests属性 中定义的资源需求量来判定仅哪些节点可接收运行相关的Pod资源,而 对于一个节点的资源来说,每运行一个Pod对象,其requests中定义的请 求量都要被预留,直到被所有Pod对象瓜分完毕为止。

 

 9.2资源限制

容器的资源需求仅能达到为其保证可用的最少资源量的目的,它并不会限制容器的可用资源上限,因此对因应用程序自身存在Bug等多种 原因而导致的系统资源被长时间占用的情况则无计可施,这就需要通过 limits属性为容器定义资源的最大可用量。资源分配时,可压缩型资源 CPU的控制阀可自由调节,容器进程无法获得超出其CPU配额的可用时 间。不过,如果进程申请分配超出其limits属性定义的硬限制的内存资 源时,它将被OOM killer杀死,不过,随后可能会被其控制进程所重 启,例如,容器进程的Pod对象会被杀死并重启(重启策略为AlwaysOnFailure时),或者是容器进程的子进程被其父进程所重启。

下面的配置清单文件(memleak-pod.yaml)中定义了如何使用saadali/simmemleak镜像运行一个Pod对象,它模拟内存泄漏操作不断地 申请使用内存资源,直到超出limits属性中memory字段设定的值而导 “OOMKillled”

piVersion: v1kind: Pod
metadata:
  name: memleak-pod
  labels:
    app: memleak
spec:
  containers:
  - name: simmemleak
    image: saadali/simmemleak
    resources:
      requests:
        memory: "64Mi"
        cpu: "1"
    limits:
      memory: "64Mi"
      cpu: "1"

下面测试其运行效果,首先将配置清单中定义的资源复用下面的命令创建于集群中:
[root@master ~]#kubectl apply -f memleak-pod.yaml
pod/memleak created

 

Pod资源的默认重启策略为Always,于是在memleak因内存资源达到硬限制而被终止后会立即重启,因此用户很难观察到其因OOM而被 杀死的相关信息。不过,多次重复地因为内存资源耗尽而重启会触发 Kubernetes系统的重启延迟机制,即每次重启的时间间隔会不断地拉长。于是,用户看到的Pod资源的相关状态通常 “CrashLoopBackOff”
[root@master ~]#kubectl get pods -l app=memleak
NAME READY STATUS RESTARTS AGE
memleak-pod 0/1 CrashLoopBackOff 1 24s

 

Pod资源首次的重启将在crash后立即完成,若随后再次crash,那么其重启操作会延迟10秒进行,随后的延迟时长会逐渐增加,依次为20 秒、40秒、80秒、160秒和300秒,随后的延迟将固定在5分钟的时长之 上而不再增加,直到其不再crash或者delete为止。describe命令可以显示 其状态相关的详细信息,其部分内容如下所示:

[root@master ~]#kubectl describe pods memleak-pod

Name: memleak-pod

……
Last State: Terminated
Reason: OOMKilled
Exit Code: 137
Started: Wed, 02 May 2018 12:42:50 +0800
Finished: Wed, 02 May 2018 12:42:50 +0800
Ready: False
Restart Count: 3
……

 

如上述命令结果所显示的,OOMKilled表示容器因内存耗尽而被终止,因此,为limits属性中的memory设置一个合理值至关重要。与 requests不同的是,limits并不会影响Pod的调度结果,也就是说,一个节 点上的所有Pod对象的limits数量之和可以大于节点所拥有的资源量,即 支持资源的过载使用(overcommitted)。不过,这么一来一旦资源耗尽,尤其是内存资源耗尽,则必然会有容器因OOMKilled而终止。
另外需要说明的是,Kubernetes仅会确保Pod能够获得它们请求(requests)的CPU时间额度,它们能否获得额外(throttled)的CPU间,则取决于其他正在运行的作业对CPU资源的占用情况。例如,对于总数为1000mCPU资源来说,容器A请求使用200m,容器B请求使用500m,在不超出它们各自的最大限额的前提下,余下的300m在双方都需要时会以25200m500m)的方式进行配置。

10、Pod得服务质量类别

根据Pod对象的requestslimits属性,KubernetesPod对象归类到BestEffortBurstableGuaranteed三个服务质量(Quality of ServiceQoS)类别下,具体说明如下。
  • ·Guaranteed:每个容器都为CPU资源设置了具有相同值的requests和limits属性,以及每个容器都为内存资源设置了具有相同值的requestslimits属性的Pod资源会自动归属于此类别,这类Pod资源具有最高优先级。
  • ·Burstable:至少有一个容器设置了CPU或内存资源的requests属性,但不满足Guaranteed类别要求的Pod资源将自动归属于此类别,它们 具有中等优先级。
  • ·BestEffort:未为任何一个容器设置requestslimits属性的Pod资源将自动归属于此类别,它们的优先级为最低级别。

 

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 从零开始搭建口袋妖怪管理系统(6)-界面重做

    上一章我们基本完成了的项目工程化&#xff0c;项目已经可以自动实时重载并完成日志映射。通过配置也为以后项目打包上线打下了基础&#xff0c;那么现在终于到了设计界面的时候了。 一. 分析&布局设计 当前我们项目的界面是这样的&#xff1a; 简单来说&#xff0c;看不出…...

    2024/4/27 0:49:53
  2. 构建完整项目的docker镜像实例(前端,后端,数据库)

    一、目的 掌握构造镜像的方法根据项目运行所用到的环境定制镜像学会将自己构建的镜像提交到远程仓库 二、学习内容 1. 按照要求构建 angular-cli (前端)镜像,要求如下&#xff1a; 基于 alpine:latest 镜像&#xff1b;包含编译 angular 项目的所需要的环境&#xff1b;镜像…...

    2024/4/21 13:38:48
  3. 全切双眼皮术后恢复状况

    ...

    2024/4/26 15:42:46
  4. 百万用户量的系统架构方案实例

    1.准备工作2.安装软件&#xff08;1&#xff09;安装redis集群机器分配拷贝文件到zhy文件夹解压编译安装拷贝程序到相应目录配置master服务器配置slave服务器启动配置开机启动关闭防火墙测试集群 &#xff08;2&#xff09;安装zookeeper机器分配拷贝安装包修改 ZooKeeper 配置…...

    2024/4/21 13:38:45
  5. 双眼皮手术效果描述

    ...

    2024/4/21 13:38:45
  6. 平行与平扇双眼皮效果图

    ...

    2024/4/21 13:38:44
  7. react父子组件传参

    父子组件通信主要用到props&#xff0c;如下&#xff1a; 在父组件中&#xff1a; import React from react import ChildCom from ./childCom.js class ParentCom extends React.Component {render() {return (<div><h1>父组件</h1><ChildCom content{我…...

    2024/4/21 13:38:42
  8. 双眼皮拆线多久可以流脸

    ...

    2024/4/27 7:46:05
  9. swift 计算器_网络上的本周:Swift,比特币计算器等等!

    swift 计算器Hello and welcome to This Week on the Web. 您好&#xff0c;欢迎访问网上本周。 As the name suggests, this is a weekly round-up of trends and themes from the exciting and giddy world of web development. 顾名思义&#xff0c;这是每周一次令人兴奋的…...

    2024/4/21 13:38:42
  10. AngularJS工厂/服务实现一个计算器

    html代码 <div ng-controller"calcCtrl"><select ng-model"type"><option value"active">动态响应模式</option><option value"static">手动点击模式</option></select><input type&quo…...

    2024/4/21 13:38:40
  11. 双眼皮线都有多粗的

    ...

    2024/4/20 14:06:42
  12. 一个基于angularJS的工资计算器

    先看界面&#xff1a; 其实在ng中最让人印象深刻的就是数据的双向绑定&#xff0c;在html中就完成了很多操作。大概用到的就是控制器视图服务等&#xff0c;没有分模块写控制器&#xff0c;代码如下&#xff1a; <html ng-app "myApp"> <head><title…...

    2024/4/21 13:38:37
  13. AngularJS 框架(一)

    本文主要参考&#xff1a; https://www.runoob.com/angularjs/angularjs-tutorial.html 一、AngularJS 实例 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <script src"http://cdn.static.runoob.com/libs/angular.js/1.4.…...

    2024/4/20 15:52:40
  14. 用Easyui写一个银行个人存款计算器(纯前端页面)

    某行去实习&#xff0c;让实习生做一个小页面&#xff0c;来计算个人存款的利息&#xff0c;抽空用最简单的方式写了一个 效果图 需求描述 题目 编写一个“存款计算器”小应用&#xff0c;用户通过选择存款种类、存款期限&#xff0c;输入存款金额后&#xff0c;可以计算显示出…...

    2024/4/20 15:52:39
  15. Angular.js 学习笔记

    AngularJS 通过新的属性和表达式扩展了 HTML。 AngularJS 可以构建一个单一页面应用程序。 <!--ng-app 指令定义一个 AngularJS 应用程序。ng-model 指令把元素值&#xff08;比如输入域的值&#xff09;绑定到应用程序。ng-bind 指令把应用程序数据绑定到 HTML 视图。-->…...

    2024/4/19 16:02:11
  16. 使用jquery制作计算器_如何使用jQuery对计算器进行编程

    使用jquery制作计算器Previously, I showed you how to use CSS border-radius property to create the following calculator. Now I will show you how to use jQuery to implement the functionality of the calculator.之前&#xff0c;我向您展示了如何使用CSS border-rad…...

    2024/4/20 15:52:37
  17. ping计算机名获取IP

    如何ping别人的计算机名来获取IP? 获取别人的IP,是作为骇客或是黑客必要的步骤。那么,怎么来获取IP呢? 今天想试着用arp命令干点坏事来陶冶一下情操,当我ping电脑名查询IP时,发现返回的是[fe80::64ca:cb99:2e4d:bd27%13]32位字节数据。于是我百度了几小时,终于找…...

    2024/4/21 13:38:37
  18. 割双眼皮一年疤痕图片大全

    ...

    2024/4/21 13:38:36
  19. 南宁双眼皮梦想整形前沿

    ...

    2024/4/21 13:38:34
  20. 张娇娇定制双眼皮怎么样

    ...

    2024/4/21 13:38:33

最新文章

  1. STM32 DAP

    STM32 DAP DAP&#xff08;Debug Access Port&#xff09;是一种调试访问端口&#xff0c;通常与调试接口一起使用&#xff0c;例如JTAG或SWD。DAP的作用是提供对目标设备内部的调试、测试和编程访问权限&#xff0c;允许开发人员通过调试工具与目标设备进行通信&#xff0c;并…...

    2024/4/27 20:25:10
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 《前端防坑》- JS基础 - 你觉得typeof nullValue === null 么?

    问题 JS原始类型有6种Undefined, Null, Number, String, Boolean, Symbol共6种。 在对原始类型使用typeof进行判断时, typeof stringValue string typeof numberValue number 如果一个变量(nullValue)的值为null&#xff0c;那么typeof nullValue "?" const u …...

    2024/4/25 5:18:48
  4. 爬虫学习第一天

    爬虫-1 爬虫学习第一天1、什么是爬虫2、爬虫的工作原理3、爬虫核心4、爬虫的合法性5、爬虫框架6、爬虫的挑战7、难点8、反爬手段8.1、Robots协议8.2、检查 User-Agent8.3、ip限制8.4、SESSION访问限制8.5、验证码8.6、数据动态加载8.7、数据加密-使用加密算法 9、用python学习爬…...

    2024/4/23 6:25:49
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/26 18:09:39
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/26 20:12:18
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/27 4:00:35
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/26 21:56:58
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/27 9:01:45
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/25 18:39:16
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/26 22:01:59
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/25 2:10:52
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57