zoukankan      html  css  js  c++  java
  • k8s学习笔记之二:Pod

    一、deployment部署pod

    备注:// 部署pod到指定节点

    在启动Pod的yaml文件中与containers同级别的位置添加如下两行即可

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: docker.io/nginx
            ports:
            - containerPort: 80
            resources:
              limits:
                 cpu: 100m
              requests:
                 cpu: 100m 

    2、centos的deployment

    kind: Deployment
    metadata:
      name: qperf-server
      labels:
        app: qperf-server
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: qperf-server
      template:
        metadata:
          labels:
            app: qperf-server
        spec:
          nodeName: node02
          containers:
          - name: centos
            image: centos:latest
            command: ["/bin/sh","-c","while true;do sleep 1;done"]

    二、用pod创建一个简单的pod

    Ⅰ、创建一个nginx 的pod

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-pod
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx-container
        image: nginx
        ports:
        - containerPort: 80
    

    Ⅱ、创建一个busybox的pod

    apiVersion: v1
    kind: Pod
    metadata:
      name: busybox
      labels:
        app: busybox
    spec:
      containers:
      - name: busybox
        image: busybox
        command: ['sh', '-c', 'echo The app is running! && sleep 3600']

    三、kubectl常用命令

    Ⅰ、不进入容器执行命令

    kubectl exec -it podName  -c  containerName -n namespace -- shell comand
    例:[root@k8s-master ~]# kubectl exec -it mypod-nginx -c nginx  -- mkdir -p /usr/local/wuchang
    

    Ⅱ、查看阿皮、版本

    kubectl api-versions

    四、扩容和缩容

    1、扩容:通过执行扩容命令,对某个deployment直接进行扩容

    kubectl  scale deployment nginx-deployment --replicas=4
    

    2、缩容:当要缩容,减少副本数量即可

    kubectl  scale deployment nginx-deployment --replicas=2

    3、pod的重启

    Deployment 对象并不是直接操控的 Pod 对象,而是操控的 ReplicaSet 对象,而 ReplicaSet 对象就是由副本的数目的定义和Pod 模板组成的。

    所以这条命令分别是将ReplicaSet 的数量 scale 到 0,然后又 scale 到 1

    kubectl scale deployment esb-admin --replicas=0 -n {namespace}
    kubectl scale deployment esb-admin --replicas=1 -n {namespace}

    4、查看pod的日志

    1、pod若处于运行状态,则通过kubectl logs 即可

    [root@node-1 ~]# kubectl logs pod_name -c container_name -n Name_Space
    kubectl logs -f <pod_name>
    

    2、若pod处于init状态,则需要通过docker ps查看

    通过docker ps 获取该pod的中的CONTAINER ID
    [root@node-1 ~]# docker ps | grep pod_name
    [root@node-1 ~]# docker logs CONTAINER_ID

    五、镜像的更新升级和回滚

    1、set images更新

    set images:kubectl set image deploy nginxdeploy *=docker.io/jwilder/nginx-proxy
    

    2、patch更新

    kubectl patch deployment image-deployment --patch '{"spec": {"template": {"spec": {"containers": [{"name": "nginx","image":"registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1"}]}}}}'
    

    3、回滚

    kubectl rollout history deployment web          查看可以回滚的版本
    kubectl rollout undo  deployment web    回滚到上一版本

    六、postStart和preStop

    postStart:容器创建成功后,运行前的任务

    apiVersion: v1
    kind: Pod
    metadata:
      name: lifecycle-demo
    spec:
      containers:
      - name: lifecycle-demo-container
        image: nginx
        lifecycle:
          postStart:
             exec:
              command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]

    preStop:容器被中止前执行

    preStop:pod销毁前执行
                preStop:
                     exec:
                        command: ["/usr/sbin/nginx","-s","quit"]

    七、探针

    1、readinessProbe(就绪检测):判断返回结果是否符合预期

    readinessProbe:
           httpGet:      
              port: 80
           path: /index1.html         //如果存在就能就绪,不存在则无法就绪
    initialDelaySeconds: 2 #容器启动后2S开始探测 periodSeconds: 5 #每次探测的间隔时间5S,单位为秒

    2、livenessProbe:判断退出状态码是否是0

    apiVersion: v1
    kind: Pod
    metadata:
        name: liveness-exec-pod
    spec:
    containers:
        - name: liveness-exec-pod
          image: busybox:latest
          imagePullPolicy: IfNotPresent
          command: ["/bin/sh","-c","touch /tmp/healthy;sleep 30;rm -rf /tmp/healthy;sleep 3600"]
          livenessProbe:
                   exec:      
                     command: ["test","-e","/tmp/healthy"]     //检测是否存在,存在返回0
          initialDelaySeconds: 2  #容器启动后2S开始探测
          periodSeconds: 5  #每次探测的间隔时间5S,单位为秒
  • 相关阅读:
    剑指Offer_栈的压入序列是否有对应的弹出序列
    剑指Offer_Java_顺时针打印矩阵(二维数组)
    排序算法Java代码实现(四)—— 归并排序
    排序算法Java代码实现(六)—— 堆排序
    排序算法Java代码实现(五)—— 快速排序
    排序算法Java代码实现(三)—— 插入排序 和 希尔排序
    CSS sprites
    局部变量和参数传递的问题
    隐藏元素的方式有哪些
    box-sizing属性的的用法
  • 原文地址:https://www.cnblogs.com/wuchangblog/p/13295096.html
Copyright © 2011-2022 走看看