Kubernetes全栈架构师(基本概念)--学习笔记

目录

  • 为什么要用Kubernetes?
  • K8s控制节点-Master概念
  • K8s计算节点-Node概念
  • 什么是Pod?
  • 为什么要引入Pod?
  • 创建一个Pod
  • 零宕机发布应用必备知识:Pod三种探针
  • 零宕机必备知识:StartupProbe
  • 零宕机必备知识:Liveness和Readiness
  • 零宕机必备知识:Pod退出流程
  • 零宕机必备知识:PreStop的使用

为什么要用Kubernetes?

  • 容器管理
  • 自动恢复
  • 健康检查
  • 弹性扩容
  • 内部通讯
  • 高可用

K8s控制节点-Master概念

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

k8s高可用架构解析

k8s节点一般分为master节点和node节点,master节点一般三个足以,三个master节点承载成百上千node节点完全没有问题,node节点可以横向扩容

node节点用于部署应用程序,master节点不允许部署应用程序,它只负责控制,调度工作

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

Kube-APIServer

集群的控制中枢,各个模块之间信息交互都需要经过Kube-APIServer,同时它也是集群管理、资源配置、整个集群安全机制的入口。

Controller-Manager

集群的状态管理器,保证Pod或其他资源达到期望值,也是需要和APIServer进行通信,在需要的时候创建、更新或删除它所管理的资源。

Scheduler

集群的调度中心,它会根据指定的一系列条件,选择一个或一批最佳的节点,然后部署我们的Pod。

Etcd

键值数据库,报错一些集群的信息,一般生产环境中建议部署三个以上节点(奇数个)。

注意

master节点在安装完成之后,可能在很长一段时间都不会有任何的变化,所以在进行架设计的时候,要给足master节点资源,因为每次修改master节点是一件特别复杂的事情

我们在master节点绑定证书,每个证书绑定在master节点的ip地址或者主机名,如果我们在之前生成证书的时候没有预留的话,那我们可能就需要重新生成一份证书,再把之前的证书都替换掉,而且还要替换node节点上面的证书,过程非常麻烦,所以一开始要给足资源,比如一次性给三台16核64G

Etcd也特别重要,一次性给足资源,未来五到十年,node节点的个数在500到1000之间的话,我们的master节点是完全不需要做任何变化的

K8s计算节点-Node概念

node节点和master节点的区别:node节点比较具有动态性,添加、删除

Node:工作节点

Kubelet

Kubelet:负责监听节点上Pod的状态,同时负责上报节点和节点上面Pod的状态,负责与Master节点通信,并管理节点上面的Pod。

Kube-proxy

Kube-proxy:负责Pod之间的通信和负载均衡,将指定的流量分发到后端正确的机器上。

查看Kube-proxy工作模式

[root@k8s-master01 dockerfiles]# netstat -lntp |grep kube-proxy
tcp        0      0 0.0.0.0:30372           0.0.0.0:*               LISTEN      1064/kube-proxy     
tcp        0      0 127.0.0.1:10249         0.0.0.0:*               LISTEN      1064/kube-proxy     
tcp6       0      0 :::10256                :::*                    LISTEN      1064/kube-proxy     

[root@k8s-master01 dockerfiles]# curl 127.0.0.1:10249/proxyMode
ipvs[root@k8s-master01 dockerfiles]# 

Ipvs

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

Ipvs映射规则

# 查看配置规则,主机访问30372端口就可以访问到172.25.244.214
[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  172.17.0.1:30372 rr
  -> 172.25.244.214:8443          Masq    1      0          0         

# kubernetes-dashboard通过端口30372(kube-proxy)映射出去
[root@k8s-master01 dockerfiles]# kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.109.161.186   <none>        8000/TCP        6d22h
kubernetes-dashboard        NodePort    10.96.188.229    <none>        443:30372/TCP   6d22h

# 172.25.244.214正好时pod的ip地址
[root@k8s-master01 ~]# kubectl get po -n kubernetes-dashboard -owide
NAME                                         READY   STATUS    RESTARTS        AGE     IP               NODE           NOMINATED NODE   READINESS GATES
dashboard-metrics-scraper-856586f554-ssjhm   1/1     Running   0               7d20h   172.18.195.8     k8s-master03   <none>           <none>
kubernetes-dashboard-67484c44f6-brz2z        1/1     Running   2 (3m56s ago)   7d20h   172.25.244.214   k8s-master01   <none>           <none>

主机访问node节点30372端口,通过ipvs规则,反向代理到kubernetes-dashboard上面的ip地址172.25.244.214的8443端口,所以就能访问到dashboard

Iptables

监听Master节点增加和删除service以及endpoint的消息,对于每一个Service,他都会创建一个iptables规则,将service的clusterIP代理到后端对应的Pod。

不推荐使

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值