cka备考 笔记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

cka备考笔记
一、Kubernetes基础概念。

1. 集群架构。

- 控制平面(Master)
- kube - apiserver:集群的API入口,负责处理外部请求并与其他控制平面组件通信。

- etcd:分布式键值存储,用于保存集群的配置数据和状态信息。

- kube - scheduler:负责将Pod调度到合适的节点上运行,根据节点资源、Pod 要求等因素进行决策。

- kube - controller - manager:运行各种控制器,如ReplicationController、DeploymentController等,以确保集群状态符合预期。

- 工作节点(Node)
- kubelet:运行在每个节点上,负责与控制平面通信,管理Pod的生命周期,包括启动、停止、监控等操作。

- kube - proxy:负责实现服务发现和负载均衡,维护节点上的网络规则,使Pod能够相互通信并访问外部服务。

- 容器运行时(如Docker、containerd等):负责运行容器,为Pod中的容器提供运行环境。

2. 资源对象。

- Pod.
- 是Kubernetes中最小的可部署和可管理的计算单元,可以包含一个或多个紧密相关的容器。

- 共享网络和存储资源,例如Pod中的容器共享同一个IP地址和存储卷。

- Service.
- 为一组Pod提供稳定的网络访问入口,通过标签选择器关联到对应的Pod。

- 有多种类型,如ClusterIP(集群内部访问)、NodePort(通过节点端口在集群外部访问)、LoadBalancer(云环境下使用负载均衡器暴露服务)。

- Deployment.
- 用于管理Pod的副本数量,提供滚动更新、回滚等功能,确保指定数量的Pod 副本始终在运行。

- ReplicaSet.
- 保证指定数量的Pod副本在集群中运行,是Deployment的底层实现机制。

二、Kubernetes命令行工具(kubectl)
1. 基本命令结构。

- `kubectl [command] [type] [name] [flags]`.
- 例如:`kubectl get pods`用于获取所有Pod的信息。

2. 常用命令。

- 资源查询。

- `kubectl get`:查询各种资源对象,如`kubectl get pods`、`kubectl get services`等。

- `kubectl describe`:查看资源对象的详细信息,如`kubectl describe pod my - pod`。

- 资源创建与管理。

- `kubectl create`:创建资源对象,例如`kubectl create - f my - pod. yaml`,其中`my - pod. yaml`是Pod的定义文件。

- `kubectl apply`:可以创建或更新资源对象,与`create`不同的是,`apply`会根据资源的当前状态进行智能更新。

- `kubectl delete`:删除资源对象,如`kubectl delete pod my - pod`。

- 资源编辑。

- `kubectl edit`:用于编辑已存在的资源对象,例如`kubectl edit deployment my - deployment`。

三、Pod管理。

1. Pod生命周期。

- Pending(等待调度):Pod被创建后,在等待被调度到合适的节点上运行。

- Running(运行中):Pod中的容器已经启动并正在运行。

- Succeeded(成功完成):Pod中的所有容器正常退出,且没有被重启。

- Failed(失败):Pod中的容器有一个或多个异常退出。

- Unknown(未知状态):通常是由于与节点通信故障等原因导致无法获取Pod的准确状态。

2. Pod配置文件(YAML)
- 示例:
apiVersion: v1.
kind: Pod.
metadata:
name: my - pod.
labels:
app: my - app.
spec:
containers:
- name: my - container.
image: nginx:latest.
ports:
- containerPort: 80.
- `apiVersion`:指定Kubernetes API的版本。

- `kind`:表示资源对象的类型,这里是Pod。

- `metadata`:包含关于Pod的元数据,如名称和标签。

- `spec`:定义了Pod的规格,包括容器的相关信息,如名称、镜像、端口等。

四、Service管理。

1. 创建Service。

- 通过YAML文件创建,例如:
apiVersion: v1.
kind: Service.
metadata:
name: my - service.
spec:
selector:
app: my - app.
ports:
- protocol: TCP.
port: 80.
targetPort: 8080.
type: ClusterIP.
- `selector`:用于选择关联的Pod,这里选择标签为`app: my - app`的Pod。

- `ports`:定义服务的端口映射,`port`是服务暴露的端口,`targetPort`是Pod中容器实际监听的端口。

- `type`:指定服务的类型。

2. 服务发现。

- 内部服务发现:通过Service的名称在集群内部进行服务发现,例如,在一个Pod中可以通过`my - service`(假设这是一个Service的名称)来访问对应的服务。

五、Deployment管理。

1. 创建Deployment。

- YAML示例:
yaml.
apiVersion: apps/v1. kind: Deployment. metadata:
name: my - deployment. spec:
replicas: 3.
selector: matchLabels:
app: my - app. template:
metadata:
labels:
app: my - app.
spec:
containers:
- name: my - container.
image: nginx:latest.
- `replicas`:指定要创建的Pod副本数量。

- `selector`:用于选择关联的Pod,这里通过标签`app: my - app`来选择。

- `template`:定义了Pod的模板,用于创建Deployment管理的Pod。

2. 滚动更新与回滚。

- 滚动更新:通过修改Deployment的镜像版本等信息,可以触发滚动更新。

例如,将`nginx:latest`更新为`nginx:new - version`,Deployment会逐步替换旧版本的Pod为新版本。

- 回滚:如果更新过程中出现问题,可以使用`kubectl rollout undo deployment my - deployment`命令回滚到上一个版本。

六、存储管理。

1. Volume类型。

- 空目录(emptyDir):在Pod的生命周期内创建的临时存储,当Pod被删除时,数据也会被删除。

- 持久卷(Persistent Volume,PV)和持久卷声明(Persistent Volume Claim,PVC):PV是集群中的存储资源,由管理员提供;PVC是用户对存储资源的请求,通过PVC来绑定PV,为Pod提供持久化存储。

2. 使用存储。

- 在Pod的YAML文件中定义存储卷和挂载点,例如:
yaml.
apiVersion: v1.
kind: Pod.
metadata:
name: my - pod.
spec:
containers:
- name: my - container.
image: nginx:latest.
volumeMounts:
- name: my - volume.
mountPath: /data.
volumes:
- name: my - volume.
emptyDir: {}
- 这里定义了一个名为`my - volume`的空目录卷,并将其挂载到容器中的`/data`目录。

七、网络策略。

1. 网络策略基础。

- 用于控制Pod之间以及Pod与外部的网络访问。

- 通过标签选择器来定义哪些Pod受策略影响。

2. 创建网络策略。

- YAML示例:
apiVersion: networking.k8s.io/v1. kind: NetworkPolicy.
metadata:
name: my - network - policy. spec:
podSelector:
matchLabels:
app: my - app.
policyTypes:
- Ingress.
- Egress.
ingress:
- from:
- podSelector:
matchLabels:
source - app: allowed - app. ports:
- protocol: TCP.
port: 80.
- to:
- podSelector:
matchLabels:
target - app: allowed - target - app.
ports:
- protocol: TCP.
port: 8080.
- `podSelector`:选择受此网络策略影响的Pod。

- `policyTypes`:指定策略类型,这里包括入站(Ingress)和出站(Egress)策略。

- `ingress`和`egress`:分别定义入站和出站规则,包括允许访问的源或目标Pod以及端口等信息。

相关文档
最新文档