🖊️
K8s-Testing
  • 从docker入门到k8s部署
  • 设备准备
  • 安装Docker
  • 拉取镜像和运行测试
    • 入门操作测试1
    • 入门操作测试2
    • 登录docker hub并上传镜像
    • 服务器间镜像文件快速复制
    • MySQL镜像安装和测试
    • 容器网络入门操作1
    • 容器网络入门操作2
    • 创建docker network
    • Wordpress+Mysql+nginx反向代理安装
  • Docker编排模板测试
    • Docker Compose入门介绍
    • 通过docker compose安装Wordpress
    • 通过docker compose安装wordpress:5-php7.2-fpm
  • Dockerfile测试
    • Dockerfile入门
    • Dockerfile多阶段构建
  • Prometheus和Grafana的单机编排
    • 通过nginx-prometheus-exporter监控nginx指标
    • 通过Grafana展示nginx容器指标
    • 通过docker compose部署Grafana和Prometheus
  • EFK单机编排
    • Filebeat收集nginx容器日志并同步到Elastic Cloud
    • 通过docker部署Elasticsearch并定制Kibana的Dashboard
    • 通过docker compose部署EFK
  • Kubernetes基础
    • Kubernetes基础知识
    • 通过Kubeadm部署K8s集群
    • K8s基本操作命令
    • k8s滚动发布
    • 通过K8s部署wordpress:5-php7.2-fpm
    • Ingress安装
Powered by GitBook
On this page
  • Kubernetes的架构
  • Master Node(主节点,控制平面)
  • Worker node(工作节点,数据平面)
  • Kubernetes解决了什么问题
  • Kubernetes网络架构基础知识点

Was this helpful?

  1. Kubernetes基础

Kubernetes基础知识

https://kubernetes.io/docs/concepts/overview/components/

Previous通过docker compose部署EFKNext通过Kubeadm部署K8s集群

Last updated 5 years ago

Was this helpful?

Kubernetes(发音 [kubə'netis])简称K8s,它是一个能够跨主机进行容器编排的平台。它使用共享网络把多个主机构建成一个集群,一个或多个主机运行为主节点(Master),余下的所有主机运行为工作节点(Worker Node)。其中Master作为控制中心负责管理整个集群系统,Node接收请求并以Pod(容器集)形式运行工作负载。每个集群里最少需要有一个工作节点。

Kubernetes的架构

Kubernetes的架构图如下:

Master Node(主节点,控制平面)

主节点负责Kubernetes集群的管理。这是所有管理任务的入口点。主节点负责编排工作节点,实际服务在其中运行。Master需要运行以下四个组件(应用程序):

API server

API server 是用于控制集群的所有REST命令的入口点。它处理REST请求,验证它们,并执行绑定的业务逻辑。从上面的架构图可以看到,它是整个集群数据的出入口。

controller-manager(控制器管理器)

控制器使用api server监视集群的共享状态,并对当前状态进行更正性更改以将其更改为所需状态。控制器管理器是主节点内不同类型控制器的守护进程。

scheduler

调度器,用来调度用户或者pod创建的对象的。调度程序拥有集群成员上可用资源的相关信息,以及配置的服务运行所需的资源,因此能够决定在何处部署特定服务。

etcd storage

etcd 是一个简单、分布式、一致的key-value存储。用户通过API server存储到etcd。

Worker node(工作节点,数据平面)

kubelet

kubelet 是API server的客户端,负责与主节点之间的通信。它还与etcd通信,获取有关服务的信息,并编写有关新创建的服务的详细信息。kubelet通过CRI(Container RunTime Interface)接口与本地的container runtime进行交互,来调用runtime来运行Pod。kubelet通过CNI(Container Network Interface)接口插件与Network Plugins进行交互,为每个Pod初始化网络、生成IP地址(Pod网络)。 另外,存储卷通过CSI(Container Storage Interface)接口与Storage Device 对外部存储系统进行交互。

kube-proxy

kube-proxy 充当单个工作节点上服务的网络代理和负载平衡器。它负责TCP和UDP包的网络路由。监听POD并更新service VIP上的endpoints。

kubectl

命令行工具,用于和API服务通信并发送命令给主节点。

Kubernetes解决了什么问题

在Kubernetes集群中,它解决了传统IT系统中服务扩容和升级的两大难题,它能解决的问题包含如以下这些方面:

Kubernetes网络架构基础知识点

1)所有容器都可以在没有NAT的情况下与所有其他容器通信 2)所有节点都可以在没有NAT的情况下与所有容器通信(反之亦然) 3)容器和容器之间的IP被视为同一内网 其中,容器也可以理解成Pod,因为它们都共享同一网络。

因此,我们可以理解成K8s网络主要包括三种: 1)物理节点之间的节点网络,对应物理机的物理网卡 2)Pod之间通信用的Pod网络 2)Service网络,存在于iptables和ipvs规则当中,实现Pod之间通信、Pod与外部客户端之间的通信时作为流量的管理、整型、地址转换的组件使用。

Kubernetes网络的基本要求是(根据)

https://kubernetes.io/docs/concepts/cluster-administration/networking/#the-kubernetes-network-model
a high-level diagram of the architecture(from https://x-team.com/blog/introduction-kubernetes-architecture/)
network diagram by Lucas Käldström (from https://kubernetes.io/blog/2018/07/18/11-ways-not-to-get-hacked/)
Flannel overlay network(https://blog.laputa.io/kubernetes-flannel-networking-6a1cb1f8ec7c)