k8s-01-概述
什么是k8s
参考官网链接:https://kubernetes.io/zh-cn/
kubernetes:用于自动部署、扩缩和管理容器化应用程序的开源系统
- 它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现
云上的k8s:华为云:CCE;阿里云:ACK;腾讯云:TKE;亚马逊云:EKS;Ucloud:Uk8s
k8s生态:kubesphere,rancher,kuboard等
k8s架构
- master|control plane相当于一个控制面板
-- etcd:数据库,主要用于存储k8s集群数据,端口:2379
-- api-server:k8s集群的控制访问入口,端口:6443
-- scheduler:调度器,负责调度的相关工作
-- controller manager:负责维护k8s集群的状态 - slave |worker工作者
-- kubelet:负责pod生命周期及worker节点状态监控并周期性的上报给api-server
-- kube-proxy:负责代理pod请求,实现集群内部或集群外部的负载均衡和服务发现 - CNI:容器网络接口------主要负责k8s集群worker节点的pod网络通信
-- flannel、calico、canal、cilium
k8s常用资源介绍
- pods:一组容器的集合。所有容器默认共享网络名称空间,也可以基于存储卷的方式实现数据共享
- replicationcontroller:副本控制器。基于标签控制指定pod副本数量始终存活(官方已弃用)
- replicaset:副本集。基于标签控制指定pod副本数量始终存活,比rc更轻量级
- deployment:部署控制器。用于部署服务,支持声明式更新。底层控制pod副本数量是基于rs实现
- statefulset:状态控制器。用于部署有状态服务。可以为每个pod副本提供独立存储,网络表示
- daemonset:守护进程控制器。可以让每个工作节点有且只有一个pod运行
- jobs:一次性控制器。可以执行一次性任务
- cronjobs:周期性控制器。底层基于jobs控制器实现
- configmaps:配置管理。主要用来存储k8s应用的配置信息
- secrets:存储敏感数据。会将数据基于base64编码
- namespaces:名称空间。用来隔离k8s集群资源
- services:服务。用来代理pod请求,底层基于标签关联pod。相当于四层代理
- ingress:相当于七层代理,底层需要调用svc资源
- persistentvolume:存储卷。底层关联后端的存储系统
- storageclass:存储类。可以实现自动管理pv
- persistentvolumeclaim:存储卷声明,底层会自动关联相应的pv或sc
- horizontalpodautosale:水平pod伸缩。实现pod自动伸缩功能
- endpoint:关联后端的ip地址,一般和svc共同使用,比如映射内网ip地址
- serviceaccout:服务账号。一般是pod用来进行身份认证的
- role:命名空间内权限
- clusterrole:集群全局权限
- rolebinding:把role绑定给用户/sa
- clusterrolebinding:把clusterrole绑定给用户/sa
- networkpolicy:给pod添加防火墙
- endpointslice:endopoints升级版,大规模用
- limitrange:命名空间资源限制
- resourcequota:命名空间资源配额
- event:获取集群事件
- node:集群的节点
- componentstatus:用于查看k8s核心控制平面组件的健康状态
附加组件
- helm
- traefik
- coredns
- dashboard
- kuboard
- prometheus
- elasticstack
- rook ......
k8s网络类型
k8s中有三种网络类型:
-- 物理机网络:真实的机器ip
-- pod网络:给每个pod分配的虚拟ip
-- service网络:固定的ip
k8s集群部署方式
-- kubeadm
-- 二进制
-- 第三方组件
(1)kubesphere
(2)rancher
(3)kuboard
(4)kubeasz
(5)云产品: ACK、CCE、TKE、EKS、UK8S
(6)其他:minikube、kind