视频来源: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-mster03 <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:容器引擎,负责对容器的管理。