业余时间一直在学习k8s和docker相关的知识,整理下最近所学的一些知识点和概念

k8s架构

14955720-698694d854510672.jpg

master

由架构图可以看出来,master节点其实主要是四部分组成的;

  • api server;这个很简单,也就是平时我们用的较多的kubectl命令,客户端直接调用k8s的命令,将指令交给了api server去处理;
  • scheduler;我理解scheduler的作用就是由它来决定将pod放到哪个具体的node节点上运行
  • controller manager;负责各资源的管理,如namespace下有哪些实例,deploy能管理哪些pod,都是由controller manager来处理的;
  • etcd;存储集群的配置,资源状态信息等;

node

node节点是实际部署应用的节点,它比较复杂,我就总结下自己了解的一些部分

  • kubelet;master的scheduler决定在某个node配置pod后,会将pod信息发送给该node的kubelet,kubelet会创建并运行容器,并向master汇报状态
  • kubeproxy;每个node都会运行kube-proxy服务,外界通过service访问pod,kube-proxy负责将降访问service的TCP/UDP数据流转发到后端的容器。如果有多个副本,kube-proxy会实现负载均衡。
  • networking;pod能够互相通信,k8s集群必须部署pod网络,flannel是其中一个可以选择的方案

k8s service的类型

  • ClusterIP;会被分配一个固定的虚拟ip,集群内部通过该ip来对pod进行访问;
  • NodePort;除了能使用ClusterIP的所有功能外,还会映射一个宿主机的随机端口(大于30000)到service上;集群外可以通过宿主机ip:分配的随机端口来访问部署的service
  • loadbalancer;如果node有多个,需使用loadbalancer来作为负载均衡器,目前只能在云服务平台上使用

k8s中几个端口概念的对比

apiVersion: v1
kind: Service
metadata:
 name: nginx-service
spec:
 type: NodePort
 ports:
 - port: 30080
   targetPort: 80
   nodePort: 30001
 selector:
  name: nginx-pod
  • nodeport;service的一种,目的是使集群外部能通过node的IP:分配的大于30000的随机端口来访问集群内部的服务
  • port;提供给集群内其他容器访问
  • targetPort;容器的端口(最根本的端口入口),流量通过这个端口进入到容器中,与制作容器时暴露的端口一致(DockerFile中EXPOSE),例如docker.io官方的nginx暴露的是80端口

参考文章:
https://www.cnblogs.com/wwchi...


byte
106 声望13 粉丝