Skip to content

Kubernetes 入门测验

本测验考查你对 Kubernetes 基本概念、架构和功能的理解。

选择题

  1. Kubernetes 这个名称在希腊语中是什么意思?
    • A) 船长
    • B) 舵手或领航员
    • C) Container
    • D) 管理员
显示答案

答案:B) 舵手或领航员

解析: Kubernetes 在希腊语中意为“舵手”或“领航员”,象征着它在引导容器化应用程序方面的作用。

  1. 以下哪项不是 Kubernetes control plane(控制平面)组件?
    • A) kube-apiserver
    • B) etcd
    • C) kubelet
    • D) kube-scheduler
显示答案

答案:C) kubelet

解析: kubelet 是在每个 node(节点)上运行的 agent,不是 control plane 组件。

  1. Kubernetes 中最小的可部署单元是什么?
    • A) Container
    • B) Pod
    • C) Deployment
    • D) Service
显示答案

答案:B) Pod

解析: Pod 是 Kubernetes 中最小的可部署单元。

  1. 以下哪项不是 Kubernetes Service 类型?
    • A) ClusterIP
    • B) NodePort
    • C) LoadBalancer
    • D) ExternalProxy
显示答案

答案:D) ExternalProxy

解析: Service 类型包括 ClusterIP、NodePort、LoadBalancer 和 ExternalName。

  1. 哪种 resource 管理 Pod 副本数量?
    • A) Service
    • B) ConfigMap
    • C) ReplicaSet
    • D) Namespace
显示答案

答案:C) ReplicaSet

解析: ReplicaSet 确保始终运行指定数量的 Pod 副本。

  1. 哪种 workload resource 专为有状态应用程序设计?
    • A) Deployment
    • B) StatefulSet
    • C) DaemonSet
    • D) Job
显示答案

答案:B) StatefulSet

解析: StatefulSet 为有状态应用程序提供唯一标识符和持久存储。

  1. 哪种 resource 确保一个 Pod 在所有 node 上运行?
    • A) Deployment
    • B) StatefulSet
    • C) DaemonSet
    • D) CronJob
显示答案

答案:C) DaemonSet

解析: DaemonSet 确保一个 Pod 的副本在所有(或特定)node 上运行。

  1. 哪种 resource 会根据 schedule 周期性运行任务?
    • A) Job
    • B) CronJob
    • C) Deployment
    • D) ReplicaSet
显示答案

答案:B) CronJob

解析: CronJob 会根据指定的 schedule 周期性运行 Job。

  1. 什么在 cluster 内提供 resource 隔离?
    • A) Label
    • B) Annotation
    • C) Namespace
    • D) ConfigMap
显示答案

答案:C) Namespace

解析: Namespace 提供了一种在单个 cluster 内隔离 resource 组的方式。

  1. 以下哪项不是 EKS 与自托管 Kubernetes 之间的关键差异?
    • A) control plane 管理
    • B) 核心 Kubernetes API
    • C) 高可用性配置
    • D) 安全补丁应用
显示答案

答案:B) 核心 Kubernetes API

解析: 两者都使用相同的标准 Kubernetes API。

简答题

  1. 哪种键值存储会存储所有 cluster 数据?
显示答案

答案:etcd

  1. 哪个组件会为新创建的 Pod 选择 node?
显示答案

答案:kube-scheduler

  1. 当 Pod 被删除时,哪种临时 volume 类型也会被删除?
显示答案

答案:emptyDir

  1. 哪个 object 以键值格式存储配置数据?
显示答案

答案:ConfigMap

  1. 哪个 object 存储密码等敏感信息?
显示答案

答案:Secret

实践题

  1. 编写一个包含 3 个副本的 nginx Deployment YAML。
显示答案
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80
  1. 编写一个 LoadBalancer Service YAML。
显示答案
yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: nginx
  1. 编写一个包含 DATABASE_URL 和 LOG_LEVEL 的 ConfigMap YAML。
显示答案
yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  DATABASE_URL: "mysql://localhost:3306/db"
  LOG_LEVEL: "INFO"

进阶题

  1. 编写 RBAC Role/RoleBinding,以授予 Pod 读取访问权限。
显示答案
yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: development
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods", "pods/log"]
  verbs: ["get", "watch", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: development
subjects:
- kind: User
  name: jane
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io
  1. 编写一个 NetworkPolicy,只允许从 backend 到 database 的流量通过端口 3306。
显示答案
yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: db-network-policy
spec:
  podSelector:
    matchLabels:
      role: database
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          role: backend
    ports:
    - protocol: TCP
      port: 3306

返回学习材料 | 下一测验:集群架构