kubernetes

名词

指令式(命令),指令式对象配置(yaml),声明式(描述目标)

Kubernetes 对象管理 | Kubernetes

网桥,虚拟网桥。在第几层协议?

Unix Domain Socket(UDS)

UDS 与 TCP/IP 套接字的区别是?

UDS 指定路径监听。l, err := net.Listen("unix", s.path)

golang 的 json 内联

本文概念

概念 | Kubernetes

对象ID,集群ID,标签,注解,finalizers,属主,附属。

控制面组件:apiserver,etcd,kube-scheduler,kube-controller-manager, cloud-controler-manager

节点层面组件: kubelete,kube-proxy,container-runtime,addons(DaemonSet,Deplyment)

其他组件:DNS,大盘,CNI......

功能点

default

标签机制(两个 label 与 注解)

垃圾清理机制

容器网络管理,容器生命周期管理,容器性能管理。

cgroupv2

pod网络管理,pod声明周期管理,pod性能管理。

租约机制

调协机制

扩缩容机制

节点管理,节点生命周期管理,节点扩缩容。

组件之间通信机制

镜像管理

存储管理

内存管理

其他硬件管理

网络管理

负载均衡

网关管理

业务配置管理

安全管理

调度策略

集群管理

二开管理,Operator,自定义资源,计算存储网络拓展。

命令行工具设计

时间同步问题

scheduler, controller-manager ,coreDNS,etcd,proxy

kubeadmin workflows 机制

流程

安装流程简述

安装 kubeadm | Kubernetes

安装容器运行时

安装 kubeadm,kubelet,kubectl

启动 kubelet

使用 kubeadm 启动集群

kubeadmin init 流程

cmd/kubeadm/app/cmd.go 的 newCmdInit 定义了工作流程。

启动前的检查 preflight.go

获取证书相关 certs.go

生成 kubenetes 所需要的所有配置文件, kubeconfig.go

生成 etcd 静态 pod 的 manifest 文件 etcd.go

生成 控制面组件的静态 pod manifest 文件

设置 kubelet 并重启 kubelet。 Q:这里会应用 上边已经创建的静态 pod 文件并启动对应的 pod 吗 A:正确。

等待kubelet重启所引导的静态pod服务启动成功。

上传 cert 文件到 Q:到哪?

标记控制平面组件 Q:具体怎么个流程?

生成 node 的 token,Q:用来做什么?

TLS启动后做一些事,Q:具体怎么个事?

安装一些插件

展示集群信息

主流程启动

安装 kubectl 工具

安装 kubelet 并启动

安装 kubeadm 工具

启动 etcd 以及其他控制平面组件

etcd 启动流程

zz_generated.conversion.go

生成 etcd 目录

往 kubeadmin 的manifest目录写静态 pod 文件,pod文件是动态生成的。

apiserver 启动流程

三个 server:

        kubeAPIServer:提供 restful 服务,管理资源。

        APIExtensionsServer:管理自定义资源

        AggregatorServer:聚合服务器,负责请求的分发。

NewConfig 生成这三个 server 的配置

config.Complete 补齐没有配置的配置

CreateServerChain 

Q:GenericAPIServer 是什么

A:GenericAPIServer contains state for a Kubernetes cluster api server.

Q:k8s 的 open api 是什么

A:

apiserver同样也是被 kubeadmin 工具启动起来的。入口在 cmd/kube-apiserver/app/server.go   run方法。

生成配置。

给没配置的配置配上配置。

注册 openAPI 服务,启动 openAPI controller

启动 apiserver

配置生成

apiserver 有个大配置,app/config.Config。这个大配置里分为五个中配置。

apiserver run

定义 run 退出需要清理的机制

如果开启了 UNIX socket debug 模式,开启一个 UNIX SOCKET 用于 DEBUG

启动一个协程,监听所有的 http server 都已经准备好了。

启动一个协程,监听 stopCh,如果要停,shutdownInitiatedCh.Signal()

如果需要的话,开启审计 BE。(Q:审计BE有什么用?)

kubelet 启动流程

controller-manager 启动流程

静态 pod 启动流程

使用cgroup驱动流程

Q:什么是 cgroup驱动?

A:调用 cgroup 的 sdk 。

Q:kubelet 需要 cgroup 干嘛?

A:使用 cgroup 对容器的资源做限制。

使用 core DNS 的流程

Q:什么是 core DNS? 

A:一个用 golang 写的 DNS serve

        CoreDNS: DNS and Service Discovery        https://github.com/coredns/coredns.io/tree/master/content/manual

core DNS 被 kubernetes 包括进来,是 k8s 的一部分。kubernetes

Q:coreDNS 在 k8s 中的作用是什么?

证书管理流程

使用 kubeadm 进行证书管理 | Kubernetes

配置文件汇总

kubeadm-config.yaml

静态 POD 文件

性能

依赖

cgroupfs,cgroup v2,容器运行时,

摘要

对象名称和 ID | Kubernetes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值