美文网首页
2021-04-23

2021-04-23

作者: 文茶君 | 来源:发表于2021-04-23 21:35 被阅读0次

    ps文中web以及nginx都是指代
    升级回滚以及弹性伸缩
    kubectl apply -f web.yml

    docker images 查看镜像
    docker image ls
    docker images --digests显示镜像摘要
    docker images --no-trunc:显示完整的镜像信息:

    查看namespace下的images
    kubectl get pods --namespace kubesphere-logging-system
    注意,这里并不需要==,最先我以为需要等号,结果纠结了半天
    看的这篇文章 【K8S学习笔记】Part2:获取K8S集群中运行的所有容器镜像

    应用升级
    kubectl set image deployment web nginx=nginx:1.15
    查看升级状态
    kubectl rollout status deployment:web

    版本回滚
    查看历史版本
    kubectl rollout history deployment:web
    回滚到上一个版本
    kubectl rollout undo deployment:web
    回滚到指定版本
    kubectl rollout undo deployment:web --to-revison=2

    弹性伸缩
    kubectl scale deployment web --replicas=10
    创建10个

    service
    存在意义
    为了防止pod失联(服务发现)
    定义一组pod访问策略(负载均衡)
    pod与service关系
    通过label,selector建立关系
    通过service实现pod的负载均衡


    常见service类型
    (1)clusterIP:集群内部访问
    (2)NodePort:对外访问应用使用
    (3)LoadBalancer:对外访问应用使用,访问公有云

    暴露端口
    kubectl expose deployment web --port=80 --target-port=80 --dry-run -o yaml>service.yaml

    node内网部署应用,外网一般不能访问到
    找到一台可以进行外网访问的机器,安装nginx,反向代理
    手动吧可以访问的节点添加到nginx里面
    LoadBalancer:公有云,负载均衡,控制器

    部署有状态应用
    1.无状态和有状态
    (1)无状态
    认为pod都是一样的
    没有顺序的要求
    不用考虑在哪个node运行
    随意进行伸缩和扩展
    (2)
    上面因素都需要考虑到
    让每个pod都是独立的,保持pod启动顺序和唯一性
    唯一的网络标识符,持久存储
    有序,比如mysql主从

    2.部署有状态应用
    无头service
    加一个clusterIP:none,意思就是clusteip不需要特定的ip,只需要一个标识符
    (1)StatefulSet部署有状态应用
    加一个kind:StatefulSet
    apiVersion:apps/v1
    kind:StatefulSet

    kubectl apply -f sts.yaml
    deployment和StatefulSet区别:有身份的(唯一标识的)
    根据主机名+按照一定规则生成域名
    每个pod有唯一主机名
    唯一域名:
    格式:主机名称.service名称.名称空间.svc.cluster.local
    如nginx-statefulset-0.nginx.default.svc.cluster.local

    部署守护进程DaemonSet
    在每个node上运行一个pod,新加入的node也同样运行在一个pod里面。
    例子:在每个node节点安装数据采集工具
    kubectl exec -it ds-test-12(一个pod) bash

    job(一次性任务)
    kind:job
    backoffLimit

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: pi
    spec:
     ![@5QDJE05~0LS6[9K](K5_I8.png](https://img.haomeiwen.com/i13219358/6e9f01034ca6e746.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
     template:
        spec:
          containers:
          - name: pi
            image: perl
            command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
          restartPolicy: Never
      backoffLimit: 4
    

    kubectl create -f job.yaml

    删除pod
    kubectl delete pod pi-d6dz2
    删除deployment
    kubectl get deployment -n xxxxx
    一般要删除pod再删除deployment
    job是一次性job
    删除
    kubectl delete -f job.yaml

    定时任务
    加schedule:

    k8s Secret
    作用:加密数据存在etcd里面,让Pod容器以挂载Volume方式进行访问
    场景:凭证
    基于base64编码
    echo -n 'admin' | base64
    1.创建secret加密数据
    kub

    相关文章

      网友评论

          本文标题:2021-04-23

          本文链接:https://www.haomeiwen.com/subject/nqfcrltx.html