Kubernetes/2.Kubernetes基础和部署说明

Kubernetes基础和部署说明

本章节首先就基础组件、集群基础对象和控制器进行了详细的介绍和说明,而后辨析了集群网络中的三种网络和专有名词,最后关于新手部署测试和生产环境的部署要点进行了概括说明。前端

  • 基础组件
  • 基础对象(Objects)
  • 控制器
  • 集群网络
  • 部署要点
  • 备注

基础组件

基础组件

如图所示,kubernetes集群中主要分为三个组件:node

Master Components

  • kube-apiserver:做为k8s控制平面的前端,也是全部请求接收的入口
  • etcd:k8s集群后端全部集群数据的高可用k/v存储数据库
  • kube-scheduler:监听变动请求,而后经过一系列filtering、scoring策略,调度pod运行
  • kube-controller-manager:一个独立的进程,经过合解循环,将指望态和运行态保持一致
  • cloud-controller-manager:kubernetes与云厂商提供的服务能力对接的关键组件。又称kubernetes cloudprovider。 经过这个组件,可让用户在建立k8s LoadBalancer 类型的service的时候自动的为用户建立一个阿里云SLB,同时动态的绑定与解绑SLB后端,而且提供了丰富的配置容许用户自定义生成的LoadBalancer。

Node Components

  • kubelet:每一个node节点的k8s客户端,用于确保pod的运行
  • kube-proxy:确保k8s服务间链接和转发的组件
  • Container Runtime:运行容器的软件,常见的有:Docker, rkt等

Addons(附加组件)

  • DNS: 经常使用的有CoreDNS
  • CNI (flannel, calico, ...) #网络插件接口,咱们后面会讲
  • Web UI (Dashboard)
  • Container Resource Monitoring
  • Cluster-level Logging
  • ...

基础对象(Objects)

集群对象

除了上面提到的基础组件以外,kubernetes还提供了丰富的基础对象(Objects),如:nginx

Pod、service、NameSpace和Volume

控制器

控制器

另外,kubernetes还包含了更高一层的抽象,称之为控制器(Controllers)。
控制器创建在基础对象之上,并提供了额外、丰富且方便的功能,他们包括:git

ReplicaSet、Deployment、DaemonSet、StatefulSet、Job等

集群网络

如图所示,kubernetes集群可分为三种网络:节点网络、Pod网络和Service网路。github

node ip:
    配置在节点的网卡上

pod ip:
    配置在容器的虚拟网卡上

service ip(cluster ip):
    不进行配置,只存在于iptables和DNS的解析记录中

部署要点

测试环境:
    可使用单Master节点,单etcd实例
    Node节点按需配置
    Nfs或glusterfs

生产环境:
    高可用etcd集群(需按期备份),创建三、5或7个节点
    高可用Master:
        kube-apiserver无状态,可多实例部署:
            借助于Haproxy、nginx或keepalived进行vip流量实现多实例冗余    
        kuber-scheduler和kuber-controller-manager:
            只能有一个活动实例,但能够有多个备用(主备模式)

    多Node主机,数量越多,冗余能力越强;
    Ceph、glusterfs、iSCSI、FC SAN及各类云存储等。

备注

本文原址位于个人Github,我会陆续将全部专题更新过来,其中包括docker、k8s、ceph、istio和prometheus,旨在分享云原生中大而全的技术知识点和实操过程,若是对你有用,请follow、star个人github,这也是我更新、分享下去的动力,谢谢~docker

相关文章
相关标签/搜索