admin管理员组

文章数量:1607722

视频来源:B站《(2022版)最新、最全、最详细的Kubernetes(K8s)教程,从K8s安装到实战一套搞定》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:(2022版)一套教程搞定k8s安装到实战 | 汇总_COCOgsta的博客-CSDN博客


Kubernetes是谷歌以Borg为前身,基于谷歌15年生产环境经验的基础上开源的一个项目,Kubernetes致力于提供跨主机集群的自动部署、扩展、高可用以及运行应用程序容器的平台。

Master节点:整个集群的控制中枢

  • Kube-APIServer:集群的控制中枢,各个模块之间信息交互都需要经过Kube-APIServer,同时它也是集群管理、资源配置、整个集群的安全机制的入口。
  • Controller-Manager:集群的状态管理器,保证Pod或其他资源达到期望值,也是需要和APIServer进行通信,在需要的时候创建、更新或删除它所管理的资源。
  • Scheduler:集群的调度中心,它会根据指定的一系列条件,选择一个或一批最佳的节点,然后部署我们的Pod。
  • Etcd:键值数据库,保存一些集群的信息,一般生产环境中建议部署三个以上节点(奇数个)。

Node:工作节点

也称为worker、node节点、minion节点

  • Kubelet:负责监听节点上Pod的状态,同时负责上报节点和节点上面Pod的状态,负责与Master节点通信,并管理节点上面的Pod。
  • KuberProxy:负责Pod之间的通信和负载均衡,将指定的流量分发到后端正确的机器上。
  • 查看Kube-proxy工作模式:
[root@k8s-master01 ~]# netstat -lntp | grep kube-proxy
tcp        0      0 0.0.0.0:30825           0.0.0.0:*               LISTEN      1144/kube-proxy     
tcp        0      0 127.0.0.1:10249         0.0.0.0:*               LISTEN      1144/kube-proxy     
tcp6       0      0 :::10256                :::*                    LISTEN      1144/kube-proxy     
[root@k8s-master01 ~]# 
[root@k8s-master01 ~]# curl 127.0.0.1:10249/proxyMode
ipvs[root@k8s-master01 ~]# 
[root@k8s-master01 ~]#
  • ipvs:监听Master节点增加和删除service以及endpoint的消息,调用Netlink接口创建相应的IPVS规则。通过IPVS规则,将流量转发至相应的Pod上。
[root@k8s-master01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  127.0.0.1:30825 rr
  -> 172.27.14.194:8443           Masq    1      0          0         
TCP  172.16.203.192:30825 rr
  -> 172.27.14.194:8443           Masq    1      0          0         
TCP  172.17.0.1:30825 rr
  -> 172.27.14.194:8443           Masq    1      0          0         
TCP  192.168.1.107:30825 rr
  -> 172.27.14.194:8443           Masq    1      0          0         
TCP  192.168.122.1:30825 rr
  -> 172.27.14.194:8443           Masq    1      0          0         
TCP  10.96.0.1:443 rr
  -> 192.168.1.107:6443           Masq    1      1          0         
  -> 192.168.1.108:6443           Masq    1      0          0         
  -> 192.168.1.109:6443           Masq    1      0          0         
TCP  10.96.0.10:53 rr
  -> 172.17.125.2:53              Masq    1      0          0         
TCP  10.96.0.10:9153 rr
  -> 172.17.125.2:9153            Masq    1      0          0         
TCP  10.102.71.156:443 rr
  -> 172.27.14.194:8443           Masq    1      0          0         
TCP  10.107.94.32:8000 rr
  -> 172.16.203.194:8000          Masq    1      0          0         
TCP  10.111.79.182:443 rr
  -> 172.25.92.66:4443            Masq    1      2          0         
UDP  10.96.0.10:53 rr
  -> 172.17.125.2:53              Masq    1      0          0         
[root@k8s-master01 ~]# kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.107.94.32    <none>        8000/TCP        4d21h
kubernetes-dashboard        NodePort    10.102.71.156   <none>        443:30825/TCP   4d21h
[root@k8s-master01 ~]# kubectl get po -n kubernetes-dashboard -o wide
NAME                                         READY   STATUS    RESTARTS   AGE     IP               NODE            NOMINATED NODE   READINESS GATES
dashboard-metrics-scraper-7645f69d8c-92hzc   1/1     Running   1          4d21h   172.16.203.194   k8s-master-lb   <none>           <none>
kubernetes-dashboard-78cb679857-tw7n2        1/1     Running   2          4d21h   172.27.14.194    k8s-node02      <none>           <none>
[root@k8s-master01 ~]# 
  • iptables:监听Master节点增加和删除service以及endpoint的消息,对于每一个service,他都会创建一个iptables规则,将service的clusetIP代理到后端对应的Pod。
  • Calico:符合CNI标准的网络插件,给每个Pod生成一个唯一的IP地址,并且把每个节点当作一个路由器。
[root@k8s-master01 ~]# kubectl get pods -n kube-system -o wide
NAME                                       READY   STATUS    RESTARTS   AGE     IP              NODE            NOMINATED NODE   READINESS GATES
calico-kube-controllers-5f6d4b864b-n6srh   1/1     Running   1          5d      192.168.1.109   k8s-master03    <none>           <none>
calico-node-4b984                          1/1     Running   1          5d      192.168.1.109   k8s-master03    <none>           <none>
calico-node-8nr4x                          1/1     Running   2          5d      192.168.1.108   k8s-master02    <none>           <none>
calico-node-bpzm4                          1/1     Running   1          5d      192.168.1.110   k8s-node01      <none>           <none>
calico-node-m2nhm                          1/1     Running   1          5d      192.168.1.111   k8s-node02      <none>           <none>
calico-node-tstnv                          1/1     Running   1          5d      192.168.1.236   k8s-master-lb   <none>           <none>
coredns-867d46bfc6-gjlqm                   1/1     Running   1          4d21h   172.17.125.2    k8s-node01      <none>           <none>
metrics-server-595f65d8d5-nt2xc            1/1     Running   1          4d21h   172.25.92.66    k8s-master02    <none>           <none>
[root@k8s-master01 ~]# route -n 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eno16777736
172.16.203.192  0.0.0.0         255.255.255.192 U     0      0        0 *
172.16.203.194  0.0.0.0         255.255.255.255 UH    0      0        0 cali15b7f38cc2b
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.17.125.0    192.168.1.110   255.255.255.192 UG    0      0        0 tunl0
172.18.195.0    192.168.1.109   255.255.255.192 UG    0      0        0 tunl0
172.25.92.64    192.168.1.108   255.255.255.192 UG    0      0        0 tunl0
172.27.14.192   192.168.1.111   255.255.255.192 UG    0      0        0 tunl0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno16777736
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
[root@k8s-master01 ~]# 
  • CoreDNS:用于Kubernetes集群内部Service的解析,可以让Pod把Service名称解析成IP地址,然后通过Service的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.111.79.182   <none>        443/TCP                  4d21h
You have new mail in /var/spool/mail/root
[root@k8s-master01 ~]# 
[root@k8s-master01 ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   5d14h
[root@k8s-master01 ~]# 
  • Docker:容器引擎,负责对容器的管理。

 

本文标签: 实战基础教程KubernetesK8s