1. 理解 Kubernetes 集群架构
— 主控节点组件:API 服务、etcd、调度器、控制器管理器。
— 节点组件:kubelet、kube-proxy、容器运行时环境。
2. Kubernetes 对象和工作负载
— Pods、Deployments、StatefulSets、DaemonSets、Jobs、CronJobs。
— 学会如何创建、更新和维护这些工作负载。
3. Kubernetes中的网络(Networking in Kubernetes)
— Pod网络概念,CNI。
— 各种服务类型(ClusterIP(集群IP),NodePort(节点端口),LoadBalancer(负载均衡器),ExternalName(外部名称))。
— Ingress控制器和Ingress资源。
4. Kubernetes 中的存储
— 理解持久卷 (PV)、持久卷声明 (PVC) 以及 StorageClass。
— 使用 ConfigMaps 和 Secrets 来配置和存储敏感数据。
5. Kubernetes 中的安全性
— RBAC (基于角色的访问控制) — 角色和集群角色、角色绑定和集群角色绑定。
— 网络策略。
— Pod 安全策略。
6. 集群维护任务
— 集群升级的流程。
— Kubernetes 和 etcd 的备份及恢复方法。
7. 监控与日志
— 集群级别日志和监控的基本概念。
— 了解Prometheus和Grafana、ELK栈等等工具。
8. 故障排除
— 排查应用故障。
— 排查控制层故障。
— 排查工作节点故障。
— 排查网络故障。
kubectl get pods/deployments/services -n namespace
— 列出命名空间内的资源。kubectl describe pod/deployment <name> -n namespace
— 查看资源详情。kubectl create -f config.yaml
— 从 YAML 文件创建资源对象。kubectl apply -f config.yaml
— 应用 YAML 文件中的配置。kubectl delete pod/deployment <name>
— 删除指定资源。kubectl exec -it <pod_name> — /bin/bash
— 在 pod 中启动交互式 bash shell。kubectl logs <pod_name>
— 获取 pod 日志。kubectl port-forward pod/ <pod_name> 8080:80
— 将本地端口转发至 pod。kubectl drain <node_name>
— 准备节点进行维护操作。kubectl cordon/uncordon <node_name>
— 将节点标记为不可调度或可调度。kubectl top node/pod
— 显示节点或 pod 的资源(CPU/内存)使用情况。日常管理
kubectl get [资源]
: 查看资源列表。例如,kubectl get pods
。kubectl describe [资源] [容器]
: 查看资源详情。例如,kubectl describe pod my-pod
。创建并管理资源
kubectl create -f [file.yaml]
: 从 YAML 文件创建资源。
kubectl apply -f [file.yaml]
: 应用 YAML 文件中的配置。
kubectl delete [resource] [name]
: 例如,删除名为 my-pod
的 Pod 实例,可以使用命令 kubectl delete pod my-pod
。
kubectl edit [resource] [name]
: 编辑资源的配置信息。两者都用于配置资源,但 apply
可以应用于已经存在的资源上,而 create
是创建新的资源。
命名空间(用于区分不同作用域内的标识符)
kubectl get namespaces
: 列出所有命名空间。kubectl create namespace [name]
: 创建一个新命名空间。模块
kubectl run [name] --image=[image]
: 使用指定的镜像来运行一个 pod。kubectl exec -it [pod-name] -- [command]
:在运行的 pod 中执行命令(其中 -it
表示分配一个TTY和使其交互)。部署和实例
kubectl scale deployment [deployment-name] --replicas=[数字]
: 将指定的部署缩放为指定数量的副本。kubectl rollout status deployment/[deployment-name]
: 查看指定部署的更新状态。kubectl rollout undo deployment/[deployment-name]
: 回滚到上一个部署。服务项目
kubectl expose deployment [deployment-name] --type=[type] --port=[port]
:说明:将一个部署公开为一个新的 Kubernetes 服务。日志和调试功能
kubectl logs [pod名称]
: 获取 pod 的日志。kubectl logs -f [pod名称]
: 获取并实时查看 [pod名称] 的日志。节点管理
kubectl get nodes
:列出集群中的所有节点命令。kubectl cordon [node-name]
:将节点设置为不可调度命令。kubectl drain [node-name]
:清空节点以准备进行维护命令。资源审查
kubectl top pod
: 列出 pod 的监控数据。kubectl top node
: 列出节点的监控数据。设置
kubectl config view
: 查看 Kubernetes 设置。kubectl config use-context [context-name]
: 切换到 [context-name] 上下文。kubectl 快速参考
kubectl
快捷命令表是极其宝贵的资源:https://kubernetes.io/docs/reference/kubectl/cheatsheet/get
命令时。这份快速参考指南涵盖了CKA考试和日常K8s管理常用的基本概念和命令。记住,多做实践练习,并熟悉官方K8s文档,这是通过CKA考试的关键在于。