声明式YAML管理 📄 YAML文件基本结构 YAML文件主要包含四个部分:
apiVersion :指定API版本
kind :资源类型(如Deployment、Service、Pod等)
metadata :元数据(名称、命名空间、标签等)
spec :资源规格配置
YAML语法规则
大小写敏感 ⚠️
使用缩进表示层级关系,不支持Tab键
缩进空格数目不重要,相同层级左对齐即可
使用#号表示注释 💬
符号字符后缩进一个空格(冒号、逗号、横杠等)
声明式管理命令 1 2 3 kubectl create -f XXXX.YAML kubectl apply -f XXXX.YAML kubectl delete -f XXXX.YAML
kubectl常用命令 ⚡ 基础命令 1 2 3 4 5 6 7 kubectl get pod kubectl get pod -n NAMESPACE kubectl get pod -o wide kubectl get all kubectl describe pod POD-NAME kubectl logs POD-NAME kubectl logs -f POD-NAME
资源管理命令 1 2 3 4 5 kubectl create -f YAML-FILE kubectl apply -f YAML-FILE kubectl delete -f YAML-FILE kubectl edit RESOURCE-TYPE RESOURCE-NAME kubectl scale deployment DEPLOY-NAME --replicas=3
部署管理命令 1 2 3 4 kubectl rollout status deployment/DEPLOY-NAME kubectl rollout history deployment/DEPLOY-NAME kubectl rollout undo deployment/DEPLOY-NAME kubectl set image deployment/DEPLOY-NAME CONTAINER-NAME=IMAGE:TAG
故障排查命令 1 2 3 4 kubectl exec -it POD-NAME -- bash kubectl cp LOCAL-FILE POD-NAME:/path kubectl top pod kubectl top nodes
Namespace隔离 🏗️ Namespace概念 Namespace是K8s中用于隔离和组织资源的机制,将物理集群划分为多个逻辑部分,每个部分有自己的一组资源 🔄
默认Namespace
default :所有未指定Namespace的对象默认分配
kube-system :K8s系统创建的资源 🖥️
kube-public :可被所有人访问的资源 🌐
kube-node-lease :节点心跳维护 💓
Namespace管理命令 1 2 3 4 5 kubectl create namespace NAMESPACE-NAME kubectl get namespace kubectl get ns kubectl delete namespace NAMESPACE-NAME kubectl config set-context --current --namespace=NAMESPACE-NAME
Namespace隔离特性
资源对象隔离 :Service、Deployment、Pod等资源在不同Namespace中相互隔离 📦
资源配额隔离 :可以限制不同Namespace的CPU、内存使用量 📊
权限控制 :通过RBAC对不同Namespace进行权限管理 🔐
网络隔离 :默认情况下不同Namespace的Pod可以互相访问,可通过NetworkPolicy实现网络隔离 🌐
网络隔离配置 通过NetworkPolicy实现Namespace间网络隔离:
1 2 3 4 5 6 7 8 9 10 11 12 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-all namespace: target-ns spec: podSelector: {} policyTypes: - Ingress - Egress ingress: [] egress: []
资源配额管理 1 2 3 4 5 6 7 8 9 10 11 12 apiVersion: v1 kind: ResourceQuota metadata: name: resource-quota namespace: prod spec: hard: requests.cpu: "1" requests.memory: "1Gi" limits.cpu: "2" limits.memory: "4Gi" pods: "10"
实际应用场景
按环境划分 :dev、test、prod 🌍
按团队划分 :不同团队使用不同Namespace 👥
按项目划分 :每个项目独立Namespace 📁
多租户隔离 :实现资源隔离和权限控制 🏢