File tree Expand file tree Collapse file tree 7 files changed +42
-3
lines changed Expand file tree Collapse file tree 7 files changed +42
-3
lines changed Original file line number Diff line number Diff line change
1
+ ![ [ Image00587.jpg]]
2
+
1
3
从过去以物理机和虚拟机为主体的开发运维环境,向以容器为核心的基础设施的转变过程,并不是一次温和的改革,而是涵盖了对网络、存储、调度、操作系统、分布式原理等各个方面的容器化理解和改造。这些关于 Linux 内核、分布式系统、网络、存储等方方面面的积累,并不会在Docker 或者 Kubernetes 的文档中交代清楚。可偏偏就是它们,才是真正掌握容器技术体系的精髓所在。
2
4
3
5
Kubernetes是一个 ** 生产级别的容器编排平台和集群管理系统** ,不仅能够创建、调度容器,还能够监控、管理服务器。
4
6
5
7
8
+
6
9
``` bash
7
10
# 启动kubernetes集群
8
11
miikube start
@@ -853,7 +856,7 @@ Pod 还承担着作为调度单元的关键职责。
853
856
如图所示,在边车模式下,一个主容器(负责业务逻辑处理)与一个或多个边车容器共同运行在同一个 Pod 内。边车容器负责处理非业务逻辑的任务,如日志记录、监控、安全保障或数据同步。边车容器将这些职能从主业务容器中分离,使得开发更加高内聚、低耦合的软件变得更加容易。
854
857
![ ] ( https://www.thebyte.com.cn/assets/sidecar-Clxo9o_p.svg )
855
858
### 容器镜像的原理与应用
856
- 容器镜像是 Docker 革命性的创新,它在短短几年就迅速改变了整个云计算领域的发展历程。在本节中, 我们将深入分析镜像技术原理,并探讨其在下载加速、启动加速、存储优化等场景中的最佳实践。
859
+ 容器镜像是 Docker 革命性的创新,它在短短几年就迅速改变了整个云计算领域的发展历程。我们将深入分析镜像技术原理,并探讨其在下载加速、启动加速、存储优化等场景中的最佳实践。
857
860
858
861
#### 什么是容器镜像
859
862
@@ -3127,6 +3130,15 @@ brctl setfd br0 0
3127
3130
` ` `
3128
3131
****
3129
3132
3133
+ # ## kube-proxy
3134
+ 开始的时候,kube-proxy确实是一个proxy,等待连接,对每个进来的连接,连接到一个pod。这称为userspace(用户空间)代理模式。后来,性能更好的iptables代理模式取代了它。iptables代理模式目前是默认的模式,如果你有需要也仍然可以配置Kubernetes使用旧模式。
3135
+
3136
+ 每个Service有其自己稳定的IP地址和端口。客户端(通常为pod)通过连接该IP和端口使用服务。IP地址是虚拟的,没有被分配给任何网络接口,当数据包离开节点时也不会列为数据包的源或目的IP地址。Service的一个关键细节是,它们包含一个IP、端口对(或者针对多端口Service有多个IP、端口对),所以服务IP本身并不代表任何东西。这就是为什么你不能够ping它们。
3137
+
3138
+ 当在API服务器中创建一个服务时,虚拟IP地址立刻就会分配给它。之后很短时间内,API服务器会通知所有运行在工作节点上的kube-proxy客户端有一个新服务已经被创建了。然后,每个kube-proxy都会让该服务在自己的运行节点上可寻址。原理是通过建立一些iptables规则,确保每个目的地为服务的IP/端口对的数据包被解析,目的地址被修改,这样数据包就会被重定向到支持服务的一个pod。
3139
+
3140
+ ![[Image00586.jpg]]
3141
+
3130
3142
# ## calico 网络
3131
3143
3132
3144
.calico 网络不经过网桥,直接跳到目的网络
Original file line number Diff line number Diff line change @@ -12,11 +12,12 @@ Kubernetes集群至少应该包含三个网络,如图网络环境所示。一
12
12
13
13
![ [ image-2025-01-27-01-07-54-828.png]]
14
14
15
-
16
15
## Docker网络基础
17
16
18
17
Docker技术依赖于近年来Linux内核虚拟化技术的发展, 所以Docker对Linux内核有很强的依赖。 Docker使用到的技术有网络命名空间( Network Namespace) 、 Veth设备对、 网桥、 ipatables和路由。
19
18
19
+
20
+
20
21
### 网络命名空间
21
22
22
23
为了支持网络协议栈的多个实例, Linux在网络栈中引入了网络命名空间, 这些独立的协议栈被隔离到不同的命名空间中。 处于不同命名空间中的网络栈是完全隔离的, 彼此之间无法通信。 通过对网络资源的隔离, 就能在一个宿主机上虚拟多个不同的网络环境。 Docker正是利用了网络的命名空间特性, 实现了不同容器之间的网络隔离。
@@ -46,6 +47,7 @@ ip netns exec <name> bash
46
47
exit
47
48
```
48
49
50
+
49
51
### Veth设备对
50
52
51
53
引入Veth设备对是为了在不同的网络命名空间之间通信, 利用它可以直接将两个网络命名空间连接起来。 由于要连接两个网络命名空间,所以Veth设备都是成对出现的, 很像一对以太网卡, 并且中间有一根直连的网线。 既然是一对网卡, 那么我们将其中一端称为另一端的peer。在Veth设备的一端发送数据时, 它会将数据直接发送到另一端, 并触发
@@ -88,12 +90,28 @@ ip link set <veth1> up
88
90
在bridge模式下, Docker Daemon首次启动时会创建一个虚拟网桥,默认的名称是docker0, 然后按照RPC1918的模型在私有网络空间中给这个网桥分配一个子网。 针对由Docker创建的每一个容器, 都会创建一个虚拟以太网设备(Veth设备对) , 其中一端关联到网桥上, 另一端使用Linux的网络命名空间技术映射到容器内的eth0设备, 然后在网桥的地址段内给eth0接口分配一个IP地址。
89
91
90
92
## Kubernetes的网络实现
91
-
92
93
- 容器到容器之间的直接通信。
93
94
- 抽象的Pod到Pod之间的通信。
94
95
- Pod到Service之间的通信。
95
96
- 集群内部与外部组件之间的通信
96
97
98
+ ### 网络模型
99
+ #### 宿主机网络
100
+ pod可以使用宿主节点的网络接口,而不是拥有自己独立的网络。这意味着这个pod没有自己的IP地址;如果这个pod中的某一进程绑定了某个端口,那么该进程将被绑定到宿主节点的端口上。一个配置了hostNetwork: true 的pod使用宿主节点的网络接口,而不是它自己的
101
+ ![ [ Image00649.jpg]]
102
+ 查看宿主机网络网卡信息
103
+ ``` bash
104
+ kubectl exec < pod-name> ifconfig
105
+ ```
106
+
107
+ #### hostPort与nodePort
108
+ 通过配置pod的spec.containers.ports字段中某个容器某一端口的hostPort属性来实现。
109
+ 不要混淆使用hostPort的pod和通过NodePort服务暴露的pod。
110
+
111
+ 在图中首先注意到的是,对于一个使用hostPort的pod,到达宿主节点的端口的连接会被直接转发到pod的对应端口上;然而在NodePort服务中,到达宿主节点的端口的连接将被转发到随机选取的pod上(这个pod可能在其他节点上)。另外一个区别是,对于使用hostPort的pod,仅有运行了这类pod的节点会绑定对应的端口;而NodePort类型的服务会在所有的节点上绑定端口,即使这个节点上没有运行对应的pod
112
+ ![ [ Image00653.jpg]]
113
+
114
+
97
115
### 容器到容器的通信
98
116
99
117
同一个Pod内的容器(Pod内的容器是不会跨宿主机的) 共享同一个网络命名空间, 共享同一个Linux协议栈。 所以对于网络的各类操作,就和它们在同一台机器上一样, 它们甚至可以用localhost地址访问彼此的端口。
Original file line number Diff line number Diff line change 4
4
![ [ Pasted image 20250620100517.png]]
5
5
6
6
7
+ | 模块 | 监控命令 | |
8
+ | ------- | ------------------------------------------------------------------------------- | --- |
9
+ | CPU | lscpu、cpuinfo、top、atop、vmstat、mpstat、pidstat、Dstat、Nmon、sar、cpupower、irqbalance | |
10
+ | Memory | top、atop、vmstat、pidstat、Dstat、Nmon、sar、free、smem | |
11
+ | I/O | iostat、iotop、pidstat、Dstat、Nmon、sar | |
12
+ | Network | netstat、ifstat、iftop、Ethtool | |
13
+ | System | top、atop、vmstat、pidstat、Nmon、sar | |
14
+ | Swap | vmstat、Nmon、sar、Meminfo、smem | |
15
+
7
16
8
17
### USE 方法
9
18
You can’t perform that action at this time.
0 commit comments