一.关于k8s
1.1 kubernetes相关网站
K8S官网:https://kubernetes.io
Kubeadm:https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
docker官网:https://docs.docker.com
Prometheus官网:https://prometheus.io
Ansible部署k8s:https://github.com/easzlab/kubeasz
1.2 相关产品
阿里云:ACK
亚马逊云:EKS
二.k8s组件
2.1 Master组件(server)
控制平面组件(Control Plane Components)
组件 | 功能 |
---|---|
kube-apiserver | 中央通信中心,公开Kubernetes API(6443端口) |
etcd | K8S所有组件数据都存储在其中 |
kube-scheduler | 资源计算,资源调度 |
kube-controller-manager | 用于管理控制器,控制Node组件,启动POD |
NGINX状态码308:k8s跳转
2.2 Node组件(client)
组件 | 功能 |
---|---|
kubelet | 控制容器运行时(如Docker)启动Pod |
kube-proxy | 处理网络和端口映射 |
Container Runtime | 容器运行引擎(docker,containerd...) |
三.K8S高可用架构
四.POD创建流程
五.K8S核心资源
5.1 Pod资源
(1)Pod是K8S的最小单位
(2)Pod的IP地址是随机的,删除Pod会改变IP
(3)Pod都有一个根容器
(4)一个Pod内可以由一个容器或多个容器组成
(5)一个Pod内的容器共享根容器的网络、名称空间、文件系统卷
(6)一个Pod内的网络地址由根容器提供
5.2 Service资源
NodePort:将端口映射在宿主机上,提供外界访问
ClusterIP:可以理解为是POD的负载均衡
LoadBalancer:通过云服务提供商的负载均衡器(如AWS ELB、GCP LB)将Service公开到外部网络,以实现负载均衡和高可用性。
5.3 Label
Label标签是K8S中非常重要的一个属性,Label标签就像身份证一样,可以用来识别K8S的对象。
传统架构中,不同的服务应用之间通讯,都是通过IP和端口,但是在K8S中很多匹配关系都是通过标签来找。
在K8S中,所有资源通信,都需要通过标签来通信,不通过IP:Port的形式
5.3 Namespace
Namespace将集群内部的资源进行隔离划分。
在Namespace中,形成逻辑上的不同项目组或用户组。
5.4 Controller
用来管理POD的控制器
Pod控制器的种类有很多:
- RC Replication Controller 控制Pod有多个副本
- RS ReplicaSet RC控制器的升级版
- Deployment 推荐使用,功能强大,包含了RS控制器
- DaemonSet 保证所有的Node节点上,有且只有一个Pod运行
- StatefulSet 有状态的应用,为Pod提供唯一标识,它可以保证部署和scale的顺序