一、概念:
k8s(Kubernetes )是一个开源的容器编排平台,用于容器化应用程序的部署、扩展和管理。使运维人员能够轻松地管理容器化应用的整个生命周期,包括容器的调度、资源分配、服务发现、负载均衡、自动伸缩以及故障恢复等功能。
二、命名空间
命名空间是一种用于在单个 Kubernetes 集群中划分不同虚拟集群的机制,它提供了一种将集群资源进行逻辑隔离的方式;
2.1 作用:
- 资源隔离:不同命名空间中的资源相互隔离,可为不同团队/用户(或项目)提供虚拟的集群空间,有助于不同团队或不同应用组件之间的资源管理和使用,避免名称冲突和资源的误操作。
- 权限控制:可以为不同的命名空间设置不同的访问权限。例如,开发团队可能对开发命名空间具有完全的读写权限,而生产运维团队对生产命名空间有特定的管理权限。
- 环境区分:通常可以根据不同的环境(如开发、测试、生产等)创建相应的命名空间。这样可以在同一个集群中为不同环境提供独立的运行空间,方便进行环境特定的配置和管理。
2.2 相关命令:
查看命名空间:
kubectl get namespace
或者
kubectl get ns
或者
kubectl get ns --show-labels # 显示namespace的label
查看某个namespace的概要信息:
kubectl describe ns xxxx
查看所有命名空间概要:
kubectl describe namespace 或 kubectl describe ns
创建命名空间:
kubectl create namespace xxx 或 kubectl create ns xxx
删除命名空间 :kubectl delete ns xxx
注意:
下面所有的命令,在实际操作时,应该加上命名空间,否则默认为default命名空间
三、Node
Node(节点)是集群中的工作机器,可以是物理主机或虚拟机。它是运行应用程序容器的实际工作负载节点,分为:Master 节点、Worker 节点。
查看集群中的 Node:
kubectl get nodes
(返回当前集群中所有 Node 的基本信息,如名称、状态、角色)
查看特定 Node 的详细信息:
kubectl describe node <node-name>
(将返回有关该 Node 的详细信息,包括标签、资源使用情况)
添加标签到 Node:
kubectl label node <node-name> environment = production,
(为 Node 添加一个名为 "environment",值为 "production" 的标签,方便进行资源调度和管理)
从集群中删除 Node:
kubectl delete node <node-name>
(从集群中删除指定的 Node,k8s会停止在该Node上运行的所有Pod,并将其调度到其他可用的Node上)
标记节点为不可调度:
kubectl cordon <node-name>
(将节点标记为不可调度,这在准备进行节点维护等操作时很有用,它可以防止调度器将新的 Pod 分配到该节点,但不影响已在该节点上运行的 Pod)
取消节点不可调度标记:
kubectl uncordon <node - name>
(取消节点的不可调度标记,使节点重新可用于接收新的 Pod 调度)
四、Pod
Pod 是 K8s 中最小的可部署和可管理的计算单元,它可以包含一个或多个紧密相关的容器。这些容器共享相同的网络命名空间、存储卷和其他资源。
4.1 创建pod
1、通过 容器镜像创建pod,如下:
kubectl run nginx-test --image=ngi