1. K8s 是为了解决什么问题出现的和 Docker 有什么关系
随着 Docker 的普及,开发者可以轻松地打包应用为容器并在单台机器上运行。但当容器数量变多、服务之间依赖关系变复杂时,手动管理这些容器变得非常困难。Kubernetes 出现的核心目的就是:自动化部署、扩展和管理容器化应用
和Docker之间的关系:
Docker 提供了容器运行的基础能力:构建镜像、启动容器、隔离资源。
它负责在单个主机上运行容器。
Kubernetes 不直接运行容器,而是调用容器运行时(如 Docker、containerd、CRI-O)来运行容器。
它负责在多个节点上调度容器、保证服务高可用、自动扩缩容等。
2. K8s中有哪些核心组件,它们分别负责什么
Kubernetes(简称 K8s)的核心组件分为两个部分:控制平面组件(Control Plane Components) 和 节点组件(Node Components)。它们共同协作,实现容器化应用的自动化部署、扩展和管理。
3. K8s中的最小单元是什么
一个 Pod 是 Kubernetes 中最小的可部署对象,它代表集群中运行的一个或多个容器的逻辑主机。这些容器共享网络、存储和运行在同一节点上。
4. 什么是容器运行时,有哪些常用的
容器运行时(Container Runtime) 是负责运行和管理容器的底层组件。它直接与操作系统内核交互,创建、启动、停止和监控容器。
Kubernetes 本身并不直接运行容器,而是通过 CRI(Container Runtime Interface) 接口调用容器运行时来完成这些操作。
5. 什么是CNI,有哪些常用的
CNI(Container Network Interface) 是 Kubernetes 中用于配置容器网络的接口规范。它的目标是为不同的网络插件提供一个统一的标准,使得各种网络方案可以无缝集成到 Kubernetes 中。
简单来说:
CNI 负责为 Pod 分配 IP 地址,并确保不同节点上的 Pod 可以互相通信。
6. Pod与容器有什么区别
在 Kubernetes(K8s)中,Pod 与容器是两个不同层次的概念。理解它们之间的区别对于正确使用 Kubernetes 非常重要。
在K8S中:
容器是最小的运行单元
Pod 是最小的部署和管理单元
对于K8S的基础概念,我们可以这么理解:
7. 使用kubeadm安装一个Kubernetes集群
前略后略,后面将做一个教程来解释

8. 使用Nginx镜像运行一个pod
kubectl apply -f nginx-pod.yaml
kubectl run nginx-pod --image=nginx:latest --port=80
9. 如何查看此pod的事件
kubectl get pod nginx-pod -o yaml
10. 如何查看pod的日志
kubectl logs podname 可以查看Pod的日志,如果要实时查看就加上-f参数
kubectl logs -f nginx-pod
11. 如何查看Pod启动在在哪个机器上
kubectl get pod nginx-pod -o wide

12. 如何进入Pod中的容器
使用
kubectl exec -it nginx-pod -- /bin/sh
13. K8s中什么是抽象资源,什么是实例资源
1、抽象资源
抽象资源是描述系统期望状态的资源类型,通常用于定义应用程序应该如何运行,而不是当前实际运行的状态。它们通常是控制器(Controller)所依赖的模板或规范。
2、实例资源:
实例资源是指已经运行或正在运行的实际对象,它们是抽象资源被控制器实例化后的结果。你可以直接观察到这些资源的状态、IP、事件等信息。
14. Pod是抽象对象还是实例
在 Kubernetes 中,Pod 是实例资源(Concrete Resource),而不是抽象对象。
15. 有哪些方法可以访问到上面部署的Nginx
可以创建一个server,如:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080
16. Pod如何重启
可以通过删除pod,滚动更新等方式。
17. 如何删除上面创建的Pod
使用
kubectl delete pod podname