Kubernetes基础和部署说明
本章节首先就基础组件、集群基础对象和控制器进行了详细的介绍和说明,然后辨析了集群网络中的三种网络和专有名词,最后关于新手部署测试和生产环境的部署要点进行了归纳说明。
- 基础组件
- 基础对象(Objects)
- 控制器
- 集群网络
- 部署要点
- 备注
基础组件
如图所示,kubernetes集群中主要分为三个组件:
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),如:
Pod、service、NameSpace和Volume
控制器
另外,kubernetes还包含了更高一层的抽象,称之为控制器(Controllers)。
控制器建立在基础对象之上,并提供了额外、丰富且方便的功能,他们包括:
ReplicaSet、Deployment、DaemonSet、StatefulSet、Job等
集群网络
如图所示,kubernetes集群可分为三种网络:节点网络、Pod网络和Service网路。
node ip:
配置在节点的网卡上
pod ip:
配置在容器的虚拟网卡上
service ip(cluster ip):
不进行配置,只存在于iptables和DNS的解析记录中
部署要点
测试环境:
可以使用单Master节点,单etcd实例
Node节点按需配置
Nfs或glusterfs
生产环境:
高可用etcd集群(需定期备份),建立3、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,这也是我更新、分享下去的动力,谢谢~
原文地址:https://blog.51cto.com/qishiding/2462734
时间: 2024-10-11 03:05:49