|NO.Z.00120|——————————|CloudNative|——|KuberNetes&基础标签.V03|——|kubernetes.v03|组件说明|

一、IPVS和IPtables的区别
### --- IPVS:

~~~     监听Master节点增加和删除service记忆endpoint的消息,
~~~     调用Netlink接口创建相应的IPVS规则,通过IPVS规则,将流量转发至相应的Pod上。
### --- Iptables:

~~~     监听master节点增加和删除service以及endpoint的消息,
~~~     对于每一个service,他都会创建一个Iptables规则,将service的clusterIP代理到后端对应的Pod。
### --- 查看ipvs配置规则

~~~     # 查看ipvs的配置规则
[root@k8s-master01 ~]# ipvsadm -ln
TCP  172.17.0.1:30008 rr
  -> 172.25.92.66:8443            Masq    1      0          0    
~~~     # 查看service地址规则
~~~     通过30008端口就可以访问到172.25.92.66:8443

[root@k8s-master01 ~]# kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.103.18.41    <none>        8000/TCP        4d18h
kubernetes-dashboard        NodePort    10.104.232.53   <none>        443:30008/TCP   4d18h     # 可以看到它启动了一个30008端口
~~~     # 查看172.25.92.66:8443 是谁
~~~     可以查看到172.25.92.66是k8s-master02
~~~     # IPVS的转发规则:
~~~     所以说node节点的30008端口,
~~~     通过IPVS的规则去反链到了dashboard上面的172.25.92.66这个地址,让后定义到对应的宿主机。

[root@k8s-master01 ~]# kubectl get po -n kubernetes-dashboard -owide
kubernetes-dashboard-78cb679857-mqccg        1/1     Running   9          4d18h   172.25.92.66   k8s-master02   <none>           <none>
二、namespace.pod
### --- Pod是有命名空间隔离的,因为k8s是按命名空间进行隔离的。
~~~     所以我们在查看pod的时候是需要指定它的命名空间kube-system;kube-system是一些系统的pod

[root@k8s-master01 ~]# kubectl get po -n kube-system -owide
NAME                                       READY   STATUS    RESTARTS   AGE     IP             NODE           NOMINATED NODE   READINESS GATES
calico-kube-controllers-5f6d4b864b-6clrl   1/1     Running   0          4d19h   192.168.1.11   k8s-master01   <none>           <none>
calico-node-6hbtl                          1/1     Running   14         4d19h   192.168.1.13   k8s-master03   <none>           <none>
calico-node-77c2f                          1/1     Running   6          4d19h   192.168.1.11   k8s-master01   <none>           <none>
calico-node-hrqpt                          1/1     Running   0          4d19h   192.168.1.15   k8s-node02     <none>           <none>
calico-node-trkhw                          1/1     Running   16         4d19h   192.168.1.12   k8s-master02   <none>           <none>
calico-node-z4gkj                          1/1     Running   0          4d19h   192.168.1.14   k8s-node01     <none>           <none>
coredns-867d46bfc6-sk5dp                   1/1     Running   1          4d19h   172.25.92.65   k8s-master02   <none>           <none>
metrics-server-595f65d8d5-slhtd            1/1     Running   12         4d18h   172.18.195.1   k8s-master03   <none>           <none>
~~~     # 若是不指定命名空间默认查看的是default命名空间,default命名空间是没有任何东西的

[root@k8s-master01 ~]# kubectl get po 
No resources found in default namespace.
三、calico
### --- Calico:是符合CNI标准的网络插件,

~~~     # 主要功能是:
~~~     会给每个Pod生成一个唯一的IP地址,并且把每个节点当做一个路由器。
~~~     这样跨节点通信的话,节点是通的。
### --- 查看calico配置参数
~~~     # 查看创建的资源配置
~~~     可以看到他们两个的网段是不一致的,因为他在两个不同的节点上,
~~~     它在不同的节点上,calico会给他分配一个网段,
~~~     让它本身当做一个路由器,给这个节点启动的Pod去分配一个IP地址。

[root@k8s-master01 ~]# kubectl get po -n kube-system -owide
coredns-867d46bfc6-sk5dp                   1/1     Running   1          4d19h   172.25.92.65   k8s-master02   <none>           <none>
metrics-server-595f65d8d5-slhtd            1/1     Running   12         4d19h   172.18.195.1   k8s-master03   <none>           <none>
~~~     # 查看它的路由:k8s-master01和k8s-master02之间通讯是怎么样去寻址的
~~~     可以看到k8s-master01有一个195网段的,走的是tunl0这个接口,
~~~     访问的是10.10.10.12:k8s-master02的IP地址。
~~~     10.10.10.12要访问这个网段172.25.92.64下的任意的一个IP地址,
~~~     比如172.25.92.65,它就会去请求10.10.10.1212收到这个请求包之后,
~~~     它会再把这个包拆开,拆开之后它就会知道他请求的具体是哪个Pod的IP地址。

[root@k8s-master01 ~]# route -n
172.25.92.64    10.10.10.12     255.255.255.192 UG    0      0        0 tunl0       
~~~     # 查看一下k8s-master02节点

[root@k8s-master02 ~]# route -n
172.25.92.65    0.0.0.0         255.255.255.255 UH    0      0        0 cali1b26698e933
四、coredns
### --- coredns

~~~     用于Kubernetes集群内部Service解析,
~~~     可以让Pod把Service名称解析成IP地址,然后通过Service的IP地址进行连接到对应的应用上。
### --- coredns配置资源
~~~     查看创建的service资源
~~~     以kube-system举例;10.96.0.10是CoreDNS本身自己的service。
~~~     pod之间的访问,若是想要访问metrics-server它的地址是什么呢?若是删除了这个service,那么它的ClusterIP也是会发生变化的,所以一般都是通过服务名曲访问对端的Pod
~~~     访问service名,它是怎么知道这个service名的IP地址是什么呢?就是通过CoreDNS来进行解析的。
~~~     CoreDNS是有一个IP地址的,就是10.96.0.10,默认的就是k8sservice网段的第十个IP地址,

[root@k8s-master01 ~]# kubectl get svc -n kube-system
NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
kube-dns         ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP,9153/TCP   4d21h
metrics-server   ClusterIP   10.97.177.184   <none>        443/TCP     4d21h
### --- 查看创建的service
~~~     一般来说k8s-service网段的第一个IP是给k8s用的,第十个地址是给coredns来用的。一般遵循这个规则。
~~~     在生产环境中,coredns一定要起多个,起多个副本数。根据集群的规模,启动多少个coredns的数量。

[root@k8s-master01 ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   4d23h
五、metrics-server
### --- metrics-server说明

~~~     Docker:容器引擎,负责对容器的管理。
~~~     metrics-server:采集数据的
### --- metrics-server示例
~~~     通过top命令查看容器消耗了多少内存CPU
~~~     它的数据都是通过metrics-server来采集的。

[root@k8s-master01 ~]# kubectl top po -n kube-system
NAME                                       CPU(cores)   MEMORY(bytes)   
calico-kube-controllers-5f6d4b864b-6clrl   4m           28Mi            
calico-node-6hbtl                          59m          49Mi            
calico-node-77c2f                          34m          64Mi            
calico-node-hrqpt                          32m          59Mi       

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(33)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示