1. 什么是 Kubernetes?有什么功能?

Kubernetes 是一个开源容器管理工具,负责容器部署,容器扩缩容以及负载衡。它提供了出色的社区,并与所有云提供商合作。因此,我们可以说 Kubernetes 不是一个容器化平台,而是一个多容器管理解决方案。

2. Kubernetes 与 docker 什么关系?

Docker 提供容器的生命周期管理,Docker 镜像构建运行时容器。但是,由于这些单独的容器必须通信,因此使用 Kubernetes。我们说 Docker 构建容器,这些容器通过 Kubernetes 相互通信。可以使用 Kubernetes 手动关联和编排在多个主机上运行的容器

3. 在主机和容器上部署应用程序有什么区别?

主机上部署应用: 这种架构将具有操作系统,然后操作系统将具有内核,该内核将在应用程序所需的操作系统上安装各种库。因此,在这种框架中,你可以拥有 n 个应用程序,并且所有应用程序将共享该操作系统中存在的库。
容器上部署应用: 这种架构将有一个内核,这是唯一一个在所有应用程序之间唯一共同的东西。各个块基本上是容器化的,并且这些块与其他应用程序隔离。因此,应 用程序具有与系统其余部分隔离的必要库和二进制文件,并且不能被任何其他应用程序侵占。

4. Kubernetes 如何简化容器化部署

跨主机的容器都需要相互通信。因此,要做到这一点,你需要一些能够负载平衡,扩展和监控容器的东西。由于 Kubernetes 与云无关并且可以在任何公共/私有提供商上运行,因此可以简化容器化部署程序。

5. 什么是 kubectl?

Kubectl 是一个平台,可以使用该平台将命令传递给集群。因此,它基本上为 CLI 提供了针对 Kubernetes 集群运行命令的方法,以及创建和管理 Kubernetes 组件的各种方法。

6. 什么是 kubelet?

这是一个代理服务,它在每个节点上运行,并使从服务器与主服务器通信。因此,Kubelet 处理 PodSpec 中提供给它的容器的描述,并确保 PodSpec 中描述的容器运行正常。可以创建 pod、删除 pod

7. k8s 有哪些组件?

  1. etcd 保存了整个集群的状态
    2. apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现 等机制
    3. controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
    4. scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上
    5. kubelet 负责维护容器的生命周期,同时也负责 Volume(CVI)和网络(CNI)的管理
    6. Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI)
    7. kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡

    8. service的集中type

  2. Clusterip:默认类型,仅自动分配一个可以在集群内访问的ip

  3. Headess service:将service的发布文件中的clusterip=none ,不让其获取clusterip , DNS解析的时候直接走pod
  4. NodePort: 在clusterip基础上,为每一个集群每台机器上绑定一个端口,这样可以通过ip:端口的形式进行访问
  5. Externalname: 把集群外部的服务,引入到集群内部来,在集群内部直接使用,没有任何类型被创建,只有k8s1.7 以上或者更高版本的kube-dns支持
  6. Loadbalancer: 在NodePort的基础上加了一个负载均衡器,需要借助云供应商提供一个端口实现,是收费的方案