k8s学习笔记之二:Pod

摘要:
1、 部署部署吊舱Remarks://Deploypod到指定节点。将以下两行添加到启动pod的yaml文件中容器的同一级别:apiVersion:extensions/v1beta1kind:Deploymentmetadata:name:nginxdeploymentspec:cplicates:3template:metadata:labels:app:nginxspec:c

一、deployment部署pod

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

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

k8s学习笔记之二:Pod第1张

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,单位为秒

免责声明:文章转载自《k8s学习笔记之二:Pod》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇excel截取第一个空格前的字符关于使用JQ scrollTop方法进行滚动定位下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

k8s学习笔记之五:volume,PV ,PVC

一,volume Ⅰ、emptyDir(pod消失就消失) 简介:emptyDir Volume是在Pod分配到node时创建的,从他的名称就能看得出来,它的出事内容为空,并且无需指定宿主机上对应的目录文件, 因为这是kubernetes自动分配的一个目录,当Pod从node上移除时,emptyDir中的数据也会被永久删除emptyDir的用途有: 例子1...

[记录点滴] OpenResty中Redis操作总结

[记录点滴] OpenResty中Redis操作总结 0x00 摘要 本文总结了在OpenResty中的操作,与大家分享,涉及知识点为Openresty, Lua, Redis。 0x01 操作记录 操作使用 db.redis.redis_iresty。 1.1 初始化 & 基础函数 set $redis_host 127.0.0.1; -- I...

第五篇 kubernetes 部署Helm包管理工具

1.Kubernetes应用部署工具-Helm简介 随着业务容器化与向微服务架构转变,通过分解巨大的单体应用为多个服务的方式, 分解了单体应用的复杂性,使每个微服务都可以独立部署和扩展,实现了敏捷开发和快速迭代和部署。 但任何事情都有两面性,虽然微服务给我们带来了很多便利,但由于应用被拆分成多个组件,导致服务数量大幅增加, 对于Kubernetest编排来...

SQL serve 数据库--视图、事物、分离附加、备份还原

视图是数据库中的一种虚拟表,与真实的表一样,视图包含一系列带有名称的行和列数据。行和列数据用来自定义视图的查询所引用的表,并且在引用视图时动态生成。 视图只能用来查询,不能增删改;不允许出现重复列 1. 视图的概念 视图是从一个或者多个表中导出的,其行为与表相似,但视图是一个虚拟表。视图可以在已经存在的视图的基础上定义。在视图上用户可以使用SELECT语...

k8s service不能访问排错

简介 对于新安装的 Kubernetes,经常出现的一个问题是 Service 没有正常工作。如果您已经运行了 Deployment 并创建了一个 Service,但是当您尝试访问它时没有得到响应,希望这份文档能帮助您找出问题所在。​ Service工作逻辑 为了完成本次演练的目的,我们先运行几个 Pod $ kubectl run hostnames...

解决ThinkPhp在nginx下404问题

 以宝塔面板为例:  找到宝塔面板域名的nginx配置文件进行编辑增加以下内容 fastcgi_split_path_info ^(.+.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastc...