1.docker-ce,docker-ce-cli,containerd.io docker-compose-plugin的作用
docker-ce 是Docker的社区版本,提供构建,发布以及运行容器的工具及服务
docker-ce-cli是社区版的命令行工具,用来和docker守护进程进行交互
containerd.io是docker运行时的核心组件
docker-compose-plugin用于在单台主机上管理和编排多个容器的运行
2.部署安装k8s为什么要关闭swap分区
虽然swap分区可以在磁盘上增加系统的可用内存量,但内存页面和虚拟页面交换过程中会给系统带来额外的磁盘I/O负载,因此,swap分区的使用会在高负载情况下导致系统的整体性能下降,严重时还可能导致应用程序的崩溃。
3.解释kubeadm,kubectl,kubelet
kubeadm提供了构建集群的指令
kubectl是k8s集群的命令行工具,能对集群本身进行管理,并进行容器化应用的安装以及部署
Kubelet存在于每个节点上,负责与API-Server进行通信,监控与维护pod中容器的生命周期。
4.详细说明k8s集群的创建过程
- 安装与配置服务器节点
- 在各节点安装docker-ce,docker-ce-cli,containerd.io,docker-compose-plugin;部署cri-docker
- 在每个节点关闭swap分区,安装kubeadm,kubectl,kubelet软件包
- 在master节点上部署,创建集群,并加入各节点
- 部署calico网络插件,检查验证集群状态
5.Calico网络插件在k8s集群中的作用
Calico本身是一个三层虚拟网络方案,它将每个节点都当作是路由器,将每个节点的容器都当作是节点路由器的一个终端并为其分配一个IP地址,各节点通过BGP学习生成路由规则,从而将不同节点上的容器连接起来。
6.kube-apiserver,etcd,kube-controller-manager,kube-scheduler的作用
Kube-apiserver是k8s的核心控制层,对外暴露了k8sAPI,负责集群内部各个模块之间的通信以及集群的安全控制。
Etcd:是key/value分布式存储,存储了k8s集群中所有的元数据。
Kube-controller-manager:当集群组件发生故障导致系统状态变化时,它可通过API Server尝试将系统恢复到“期望状态”。
kube-scheduler:用来监视新创建但尚未分配节点的pod,并选择一个节点供其运行
7.kubelet,kube-proxy的作用
Kubelet:运行在每个节点上,负责与api-server进行通信,本管理本节点的pod以及其中的容器。
Kube-proxy:运行在每个节点上,负责监听service和endpoint的变化情况,并通过iptables等为服务实现负载均衡
8.解释一下pod
pod是k8s集群能够创建,管理以及部署的最小计算单元。
Pod包含一个或多个容器,这些容器共享存储,网络,以及如何运行容器的声明。
9.解释pod的生命周期
Pod起始于pending阶段,如果其中至少有一个容器正常启动,则进入Running,之后取决于pod是否有容器以失败状态结束而进入Succeeded或Failed。
10.Sidecar类型容器和Init容器的区别在哪
Sidecar容器用来提供辅助功能从而增强主容器应用,日志跟踪最为经典,它与主容器并行运行
Init容器是在主容器启动之前执行一些准备工作