zoukankan      html  css  js  c++  java
  • kubernetes的基础知识

    一、什么是kubernetes

    kubernetsy用于管理容器化的workloads和服务,代表用户的workloads去协调计算、网络、存储设施。1个K8s集群,由许多的nodes组成。一些nodes称之为master nodes,另一些nodes为worker nodes。Master nodes是用于管理和控制集群,worker nodes包含各种应用服务。

    image


    二、Pods

    Pods是kubernets的基本概念之一。1个微服务通常包含1个或者多个container,当这些container部署到kubernets中时,被部署到称之为Pod的东西中。1个Pod可以部署1个或者多个container,他们共享storage、network、如何运行container等。1个Pod的内容经常需要co-located、co-scheduled,运行在共享的context中。

    更多k8s概念,https://kubernetes.io/docs/concepts/workloads/


    三、k8s的组件

    A.master nodes的组件主要是用于控制管理cluster,和worker nodes的组件主要是用于Pods运行和使得他们可以被使用。
    Master nodes的组件主要有:
    a. Kube-apiserver:k8s控制面板的前端,用于编排cluster。
    b. Kube-scheduler:k8s的调度器,把Pods调度到合适的Node上。
    c. Kube-controller:k8s集群管理控制器。控制期望的state总是keep的。如果你定义了1个pod的3个拷贝,那么集群控制器会保证3个拷贝都运行在集群中的某个地方。
    d. kube-scheduler将会决定1个pod从哪个Node开始启动。
    e. Etcd:集群数据的存储。


    worker nodes的组件有:
    Kubelet: 保证container运行在pod中
    Kube-proxy:  Network proxy维护nodes上的network rules,转发connection.
    Container runtime: 运行container的软件。k8s支持任何符合OCI (Open Container Initiative)的container runtime。这里docker被作为container runtime。
    组件更多内容,https://kubernetes.io/docs/concepts/overview/components/


    四、k8s的集群管理工具

    通过不同的工具来实现达到管理k8s的目的,其中之一就是Helm,使用Helm可以部署k8s微服务。kubectl这个命令经常用来管理集群。

    kubectl get nodes -n namespace
    kubectl describe node <node id> -n namespace
    kubectl describe pods <pod name> -n namespace
    kubectl logs <pod name> 
    kubectl exec <pod name> -- ps -ef

    常用命令参考:https://kubernetes.io/docs/reference/kubectl/cheatsheet/


    五、k8s集群管理控制器

    K8s通过所谓的controllers来部署和控制微服务。主要有3种控制器:
    Deployments
    https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

    StatefulSets
    https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

    DaemonSet
    https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/


    查看集群种k8s controllers

    kubectl get deployments  -n namespace
    kubectl get statefulsets -n namespace
    kubectl get daemonsets -n namespace


    六、k8s微服务

    1个k8s服务定义了Pods上的1个逻辑上的set如何被acess和使用的。Pods可以被动态的创建、销毁,这意味着1个Pod的IP地址将会改变。另一方面,k8s服务却是永久的,那么会指向其他可用的Pod。 对于1个服务
    你可以指定:

    ClusterIP:默认的ServiceType,将会在集群内部暴露服务。
    NodePort: 向外部暴露每个Node上的服务,把NodePort作为静态的port,可以从集群外部接入微服务。
    LoadBalancer:用云服务的提供商的loadbalancer向外部暴露服务。
    ExternalName:map k8s的微服务到DNS name

    常用命令

    kubectl get services –n namespace
    curl -s <IP>:<PORT>/serviceName

  • 相关阅读:
    下雪诗
    华视身份证阅读器100UC HTTP模式二次开发
    C# Action 和 Func 区别
    网站部署——文件系统
    前端-JavaScript DOM和BOM
    IO多路复用
    python-协程
    python-线程
    python-进程
    计算机与操作系统简介
  • 原文地址:https://www.cnblogs.com/gracejiang/p/15467347.html
Copyright © 2011-2022 走看看