zoukankan      html  css  js  c++  java
  • Kubernetes

    kubernetes

    kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用。简称K8s,是用8代替8个字符“ubernete”而成的缩写。
        容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。
        每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。
    Kubernetes 的特点:
        可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
        可扩展: 模块化,插件化,可挂载,可组合
        自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
    

    kubernetes组件

    Master 组件
        kube-apiserver:所有服务访问统一入口
        ETCD:键值对数据库,存储k8s集群所有重要信息
        controller-manager:维持副本期望数目
        kube-scheduler:任务调度,选择合适的节点进行任务分配
        COREDNS:为集群中的SVC创建一个域名IP的对应关系解析
    节点(Node)组件
        kubelet:直接和容器引擎交互实现容器的生命周期管理
        kube-proxy:写入规则到IPTABLES,IPVS,实现服务映射访问
        docker: 用于运行容器
        supervisord:supervisord是一个轻量级的监控系统,用于保障kubelet和docker运行
        fluentd:一个守护进程,可提供cluster-level logging
    

    kubernetes资源

    资源:k8s中所有内容都抽象为资源,资源实例化后叫做对象。
    资源清单:k8s中,一般使用yaml格式的文件来创建符合我们预期的pod,这样的yaml文件称为资源清单
    集群资源分类:
        名称空间级别资源:
            工作负载型资源:pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job
            服务发现型及负载均衡型资源:Service,Ingress
            配置与存储型资源:Volume(存储卷),CSI(容器存储接口,可以扩展各种各样的第三方存储卷)
            特殊类型存储卷:ConfigMap(当配置中心来使用),Secret(保存敏感数据),DownwardAPI(把外部环境中的信息输出给容器)
        集群级别资源:Namespace,Node,Role,ClusterRole,Rolebinding,ClusterRoleBinding
        元数据型资源:HPA,PodTemplate,LimitRange
    

    Pod的分类

    自主式Pod:当Pod退出后,此类型的Pod不会被创建
    控制器管理的Pod:在控制器的生命周期里,始终要维持Pod的副本数目
    

    init容器

    Pod能够具有多个容器,应用运行在容器里面,但是它也可能有一个或多个先于容器启动的init容器。
    init容器与普通容器非常像,除了如下两点:
        init容器总是运行到成功完成为止
        每个init容器都必须在下一个init容器启动之前成功完成
    如果pod的init容器失败了,kubernetes会不断的重启该pod,直到init容器成功为止,然而,如果pod对应的restartPolicy为never,它不会重启。
    

    Service类型

    ClusterIp: 默认类型,自动分配一个仅Cluster内部可以访问的虚拟IP
    NodePort:在ClusterIp基础上为Service在每台机器上绑定一个端口,这样就可以通过node_ip:node_port的方式来访问服务
    LoadBalancer:在NodePort的基础上,借助cloud provider创建一个外部负载均衡器,并将请求转发到node_ip:node_port。
    ExternalName:把集群外部的服务引入到集群内部来,在集群内部直接使用。没有任何类型代理被创建,这在kubernetes 1.7以上的版本的kube-dns才支持
    

    污点

    每个污点有一个key和value作为污点的标签,其中value可以为空,effect描述污点的作用,当前taint effect支持如下三个选项:
        NoSchedule:表示k8s将不会将pod调度到具有该污点的Node上
        PreferNoSchedule:表示k8s将尽量避免pod调度到具有该污点的pod上
        NoExecute:表示k8s将不会将pod调度到具有该污点的node上,同时会将node上已存在的pod驱逐出去
    污点的设置,查看和取出
    设置污点:
    kubectl taint nodes node1 key1=value1:NoSchedule
    查看污点
    kubectl describe node node_name
    取出污点
    kubectl taint nodes node1 key1:NoSchedule-
    

    kubernetes常用命令

    查看pod
    kubectl get pod -n namespaces_name
    查看pod详情
    kubectl describe pod pod_name
    查看pod日志
    kubectl logs -f --tail=900 pod_name
    用yaml文件创建pod
    kubectl create -f pod.yml
    删除pod
    kubectl delete pod pod_name
    进入某个pod
    kubectl exec -it pod_name /bin/bash
    

    本文作者:温茶又折花

    本文链接: https://www.cnblogs.com/dyfblogs/p/14961451.html

    转载文章请注明作者和出处,谢谢!
  • 相关阅读:
    redis全面解析
    SoapUI Pro Project Solution Collection-change the JDBC Request behavior
    SoapUI Pro Project Solution Collection-Test Step Object
    SoapUI Pro Project Solution Collection-access the soapui object
    SoapUI Pro Project Solution Collection –Easy develop Groovy Script to improve SoapUI ability
    Eclipse 个人使用配置
    Selenium 致命杀手(有关自动化的通病)
    Open-Source performance testing tools(From other site)
    麦当劳理论(转转转)
    java command line error opening registry key 'SoftwareJavaSoftJava Runtime Environment' java.dll
  • 原文地址:https://www.cnblogs.com/dyfblogs/p/14961451.html
Copyright © 2011-2022 走看看