• (2022版)一套教程搞定k8s安装到实战 | Kubernetes基础


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

     

  • 相关阅读:
    Pichome欧奥图文档系统代码审计—路由分析
    python学习第五天之循环结构
    基于Javaee的影视创作论坛的设计与实现(源码开放)
    自编码器Auto-Encoder
    【生物技术】专业与JAVA开发10年之缘
    iperf安装与使用
    编译并调试第一个so动态链接库文件
    supervisor守护python进程报FATAL错 spawn error
    【AUTOSAR-CAN-3】COM 模块详解
    【版本控制】Github和Gitlab同时使用ssh
  • 原文地址:https://blog.csdn.net/guolianggsta/article/details/125492106