49.k3s

发表于 未分类 分类,标签:

更新系统并安装基础依赖

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git jq vim

执行k3s一键安装脚本
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION="v1.31.2+k3s1" sh -

安装时指定ip等参数
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
  INSTALL_K3S_MIRROR=cn \
  INSTALL_K3S_SKIP_SELINUX_RPM=true \
  INSTALL_K3S_EXEC="server --node-ip=100.64.1.8 --node-external-ip=100.64.1.8" \
  sh -

检查k3s服务状态是否为Active
systemctl status k3s --no-pager

检查节点状态
kubectl get nodes

主节点获取密钥
sudo cat /var/lib/rancher/k3s/server/node-token
K10f863e5493e9f858a3abf647e001d3def22419e23d0136493db0d0410c53c5da0::server:a9e830465c1962e0f7cf8608d478eace
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
  INSTALL_K3S_MIRROR=cn \
  K3S_URL=https://100.64.1.6:6443 \
  K3S_TOKEN=K10f863e5493e9f858a3abf647e001d3def22419e23d0136493db0d0410c53c5da0::server:a9e830465c1962e0f7cf8608d478eace \
  INSTALL_K3S_EXEC="agent --node-ip=10.10.1.12 --flannel-iface=wt0" \
  sh -

给计算节点打标签

kubectl label node sl-26 node-role.kubernetes.io/worker=worker

隔离节点
kubectl cordon sl-26
驱逐节点
kubectl drain sl-26 --ignore-daemonsets --delete-emptydir-data

配置node国内节点解决下载依赖问题

sudo mkdir -p /etc/rancher/k3s
sudo vim /etc/rancher/k3s/registries.yaml
#加以下内容
mirrors:
  "docker.io":
    endpoint:
      - "https://docker.m.daocloud.io"
      - "https://huecker.io"
      - "https://dockerhub.timeweb.cloud"
      - "https://noohhub.ru"
  "registry.k8s.io":
    endpoint:
      - "https://k8s.m.daocloud.io"
      - "https://docker.1ms.run"

configs:
  "crpi-h7tib7641zxd04p0.cn-chengdu.personal.cr.aliyuncs.com":
    auth:
      username: "leius"
      password: "Shimujiuxia@2028"

重启节点	  
sudo systemctl restart k3s-agent
sudo systemctl restart k3s

查看pod详情

查看pod详情
kubectl get pod -o wide
详细事件
kubectl describe pod name

查看pod端口详情
kubectl get svc

节点删除

主节点删除node
kubectl delete node sl-bj

停止node节点
systemctl stop k3s-agent
systemctl daemon-reload
systemctl restart k3s-agent

彻底清理主节点
/usr/local/bin/k3s-uninstall.sh
rm -rf /etc/rancher/k3s /var/lib/rancher/k3s /var/lib/kubelet
rm -rf ~/.kube
rm -rf /var/lib/cni/
rm -rf /etc/cni/net.d/
ip link delete cni0 2>/dev/null
ip link delete flannel.1 2>/dev/null

清理node节点
/usr/local/bin/k3s-agent-uninstall.sh
rm -rf /var/lib/rancher/k3s/

重新加入
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
  INSTALL_K3S_MIRROR=cn \
  K3S_URL=https://100.64.1.6:6443 \
  K3S_TOKEN=K10f863e5493e9f858a3abf647e001d3def22419e23d0136493db0d0410c53c5da0::server:a9e830465c1962e0f7cf8608d478eace \
  INSTALL_K3S_EXEC="agent --node-ip=100.64.1.7" \
  sh -
  
删除node标签
kubectl label node sl-10 node-role.kubernetes.io/worker-

重新定义标签
kubectl label node sl-10 node-role.kubernetes.io/ali-bj-mysql=

配置镜像密钥

配置镜像密钥
kubectl create secret docker-registry aliyun-acr-secret \
  --docker-server=crpi-h7tib7641zxd04p0.cn-chengdu.personal.cr.aliyuncs.com \
  --docker-username=leius \
  --docker-password=Shimujiuxia@2028 \
  --namespace=defaul

查看已创建密钥
k3s kubectl get secrets
k3s kubectl get secrets -n <你的命名空间>

pod中添加imagePullSecrets
apiVersion: apps/v1
kind: Deployment
metadata:
  name: cw-api
spec:
  replicas: 1
  selector:
    matchLabels:
      app: cw-api
  template:
    metadata:
      labels:
        app: cw-api
    spec:
      # ==================== 1. 添加镜像拉取密钥 ====================
      imagePullSecrets:
      - name: aliyun-acr-secret  # 对应上面 kubectl 创建的 Secret 名称
      # ==========================================================

      containers:
      - name: cw-api
        image: crpi-h7tib7641zxd04p0.cn-chengdu.personal.cr.aliyuncs.com/leius/cw:api_2609
        imagePullPolicy: IfNotPresent
        workingDir: /app
        command: ["/app/entrypoint.sh", "uvicorn", "--host", "0.0.0.0", "--port", "8000", "cw_api.asgi:application"]
        ports:
        - containerPort: 8000
          name: http

node增加污点

kubectl taint nodes node-01 dedicated=gpu:NoSchedule
说明:
  NoSchedule(最常用):没有对应容忍度的 Pod 无法调度到该节点。
  PreferNoSchedule:尽量不调度到该节点,如果没有其他合适节点,也可以退而求其次放进来。
  NoExecute:不仅不让新 Pod 调度进来,还会直接驱逐/杀掉当前节点上已运行且没有该容忍度的 Pod。
node查看污点
kubectl describe node node-01 | grep Taints
node解除污点
kubectl taint nodes node-01 dedicated=gpu:NoSchedule-

pod容忍度
spec:
  template:
    spec:
      # 1. 允许进入带 dedicated=gpu 污点的节点
      tolerations:
      - key: "dedicated"
        operator: "Equal"
        value: "gpu"
        effect: "NoSchedule"
      # 2. 强制指定只去打有 dedicated=gpu 标签的节点
      nodeSelector:
        dedicated: gpu
		
node亲和度
先给节点贴上标签
kubectl label nodes node-01 disktype=ssd

在pod中配置亲和度
apiVersion: apps/v1
kind: Deployment
metadata:
  name: cw-api
spec:
  replicas: 2
  selector:
    matchLabels:
      app: cw-api
  template:
    metadata:
      labels:
        app: cw-api
    spec:
      # ==================== 硬亲和度配置开始 ====================
      affinity:
        nodeAffinity:
          # required 代表【硬性要求】:找不到符合条件的 Node 就挂起(Pending)
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: zone               # 匹配 Node 上的标签 Key
                operator: In            # 在以下列表中
                values:
                - chengdu               # 匹配 Node 上的标签 Value(必须是 chengdu)
      # ==================== 硬亲和度配置结束 ====================

      containers:
      - name: cw-api
        image: crpi-h7tib7641zxd04p0.cn-chengdu.personal.cr.aliyuncs.com/leius/cw:api_2609

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cw-api
spec:
  replicas: 1
  selector:
    matchLabels:
      app: cw-api
  template:
    metadata:
      labels:
        app: cw-api
    spec:
      # ==================== 亲和度配置开始 ====================
      affinity:
        nodeAffinity:
          # preferredDuringScheduling... 代表“软亲和性”(优先满足,不强制)
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100               # 权重,1-100,越高越优先
            preference:
              matchExpressions:
              - key: disktype         # 匹配 Node 身上的 Key
                operator: In          # 在指定列表中
                values:
                - ssd                 # 匹配 Node 身上的 Value
      # ==================== 亲和度配置结束 ====================

      containers:
      - name: cw-api
        image: crpi-h7tib7641zxd04p0.cn-chengdu.personal.cr.aliyuncs.com/leius/cw:api_2609

查看traefik端口

k3s kubectl get svc traefik -n kube-system

修改默认traefik端口
k3s kubectl edit svc traefik -n kube-system

spec:
  ports:
  - name: web
    nodePort: 30080      # <--- 修改这里:将原来的 32062 改为你想要的端口 (范围 30000-32767)
    port: 80
    protocol: TCP
    targetPort: web
  - name: websecure
    nodePort: 30443      # <--- 修改这里:将原来的 31148 改为你想要的端口
    port: 443
    protocol: TCP
    targetPort: websecure

nginx统配转发traefik
server {
    listen 80;
    server_name k3s.yourdomain.com;

    location / {
        # 将流量转给 K3s 的 Traefik 入口
        proxy_pass http://10.10.1.11:32062;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

解决traefik节点未固定nginx无法代理问题

1. 查看 traefik pod 在哪个节点
# 查看 traefik pod 所在节点
kubectl get pods -n kube-system -l app.kubernetes.io/name=traefik -o wide
# 或者更详细的信息
kubectl get pods -n kube-system | grep traefik
2. 固定 traefik 到指定节点
# 方法1:通过 nodeSelector 固定到 sl-11 节点
kubectl patch deployment traefik -n kube-system -p '{"spec":{"template":{"spec":{"nodeSelector":{"kubernetes.io/hostname":"sl-11"}}}}}'
# 方法2:如果需要取消固定(恢复自动调度)
kubectl patch deployment traefik -n kube-system --type=json -p='[{"op": "remove", "path": "/spec/template/spec/nodeSelector"}]'
# 验证配置是否生效
kubectl get deployment traefik -n kube-system -o yaml | grep -A 3 nodeSelector
3. 当前使用的服务类型
# 查看当前服务类型
kubectl get svc traefik -n kube-system
# 输出会显示:
# TYPE: NodePort(当前使用的是 NodePort,端口映射 80:30080/TCP,443:30443/TCP)
# svclb pod 已被删除(之前使用 LoadBalancer 时创建的)
4. 推荐方案:NodePort(你当前的配置)
1. nginx 容器占用了宿主机 80/443 端口,svclb 的 LoadBalancer 模式会尝试绑定这些端口,导致冲突
2. NodePort 30080/30443 不会与 nginx 冲突
3. 你的架构是:nginx (80/443) → traefik (30080/30443) → 后端服务
# 如果当前不是 NodePort,执行此命令
kubectl patch svc traefik -n kube-system -p '{"spec":{"type":"NodePort"}}'
# 查看确认
kubectl get svc traefik -n kube-system
# 应该显示:TYPE=NodePort, PORT(S)=80:30080/TCP,443:30443/TCP
5. 完整的推荐配置
kubectl patch svc traefik -n kube-system -p '{"spec":{"type":"NodePort"}}'
# 步骤2:固定 traefik 到 sl-11 节点(nginx 所在节点)
kubectl patch deployment traefik -n kube-system -p '{"spec":{"template":{"spec":{"nodeSelector":{"kubernetes.io/hostname":"sl-11"}}}}}'
# 步骤3:验证配置
kubectl get svc traefik -n kube-system
kubectl get pods -n kube-system -l app.kubernetes.io/name=traefik -o wide
# 步骤4:测试连通性
curl -I http://10.10.1.11:30080
6. 保存配置(可选)
如果你想让这个配置持久化(重新部署 traefik 也不会丢失),可以:
# 导出当前 deployment 配置
kubectl get deployment traefik -n kube-system -o yaml > /tmp/traefik-deployment.yaml

服务启停

# 启动 K3s 服务
sudo systemctl start k3s
# 查看 K3s 服务当前运行状态
sudo systemctl status k3s
# 取消开机自启动
sudo systemctl disable k3s
# 重新开启开机自启动
sudo systemctl enable k3s

# 启动 K3s Agent
sudo systemctl start k3s-agent
# 查看 K3s Agent 当前运行状态
sudo systemctl status k3s-agent

查看容器

查看容器
kubectl get pods
查看详情
kubectl describe pod name
实时查看日志
kubectl logs -f pod-name
进入容器内部
kubectl exec -it pod-name -- /bin/bash
查看服务端口
kubectl get svc
编辑配置
kubectl edit awx awx-demo
查看密码
kubectl get secret awx-demo-admin-password -o jsonpath='{.data.password}' | base64 -d
kubectl get secret awx-demo-admin-password -n awx -o jsonpath='{.data.password}' 2>/dev/null && echo "" | base64 -d 2>/dev/null || kubectl get secret -n awx | grep password
查看接口配置
kubectl get svc awx-demo-service -n awx -o yaml | grep -A10 "ports:"

k3s使用job构建

开始任务
kubectl apply -f cw_h5.yml
kubectl get job cw-h5-builder
构建日志
kubectl logs -f job/cw-h5-builder
构建节点
kubectl get pod -l app=cw_h5_builder -o wide
删除任务
kubectl delete job cw-h5-builder --ignore-not-found

k3s使用job构建模板

apiVersion: batch/v1
kind: Job
metadata:
  name: cs-pc-builder
spec:
  # 任务失败后的重试次数
  backoffLimit: 2
  # 任务完成后保留 Pod 日志的时间(单位:秒,3600表示1小时后自动清理已完成的 Pod)
  ttlSecondsAfterFinished: 3600
  template:
    metadata:
      labels:
        app: cs-pc-builder
    spec:
      # Job 必须指定重启策略:Never 或 OnFailure
      restartPolicy: Never

      dnsPolicy: "None"
      dnsConfig:
        nameservers:
          - 223.5.5.5
          - 114.114.114.11

      nodeSelector:
        kubernetes.io/hostname: sl-12

      imagePullSecrets:
      - name: aliyun-acr-secret

      containers:
      - name: builder
        image: crpi-h7tib7641zxd04p0.cn-chengdu.personal.cr.aliyuncs.com/leius/cs:pc_2610
        imagePullPolicy: IfNotPresent
        workingDir: /app

        # 1. 打包 -> 2. 推送到主节点 -> 3. 正常退出
        command:
        - /bin/sh
        - -c
        - |
          set -e
          echo "===> 检查并安装项目依赖..."
          # npm install --registry=https://registry.npmmirror.com
          npm install --registry=https://registry.npmmirror.com --no-audit --no-fund --loglevel info

          echo "===> 开始执行前端打包..."
          npm run build

          echo "===> 开始同步打包文件到主节点..."
          rsync -avz -e "ssh -p 10260 -o StrictHostKeyChecking=no" /app/dist/ root@10.10.1.11:/lei/www/cs_pc/dist/

          echo "===> 构建并传输成功,任务结束。"

        volumeMounts:
        - mountPath: /app
          name: app-volume
        # - mountPath: /app/node_modules
        #   name: node-modules-volume
        # 挂载宿主机已配置好免密 SSH 的私钥(注意宿主机 /root/.ssh/id_rsa 需提前配好)
        - mountPath: /root/.ssh
          name: ssh-key

      volumes:
      - name: app-volume
        hostPath:
          path: /lei/www/cs/wwwroot/cs_pc
          type: DirectoryOrCreate
      # - name: node-modules-volume
      #   emptyDir: {}
      - name: ssh-key
        hostPath:
          path: /root/.ssh
          type: Directory

解决guac无法远程win桌面问题

## 方法 1:脚本关闭forward
  
#!/bin/bash
# 临时修复 - 安装 k3s 后执行

# 1. 修改 FORWARD 链默认策略为 ACCEPT(内网环境,简单直接)
iptables -P FORWARD ACCEPT

# 2. 添加 NAT MASQUERADE 规则(容器访问 netbird 时进行源地址转换)
iptables -t nat -I POSTROUTING 1 -s 172.20.0.0/16 -o wt0 -j MASQUERADE

# 3. 验证规则
echo "验证 FORWARD 策略:"
iptables -L FORWARD -n | head -1

echo -e "\n验证 NAT MASQUERADE 规则:"
iptables -t nat -L POSTROUTING -n -v --line-numbers | head -5

# 4. 测试连通性(替换为实际的 netbird 节点 IP)
echo -e "\n测试容器连通性:"
docker exec guacamole-guacd ping -c 3 10.10.1.12


### 方法 2:持久化配置(推荐,重启后自动生效)
创建 systemd 服务:

cat > /etc/systemd/system/guac-netbird-fix.service <<'EOF'
[Unit]
Description=Fix Guacamole Docker access to Netbird network
After=network.target docker.service netbird.service k3s.service
Before=docker-compose.service

[Service]
Type=oneshot
ExecStart=/bin/bash -c '\
  # 修改 FORWARD 链默认策略为 ACCEPT \
  /usr/sbin/iptables -P FORWARD ACCEPT; \
  \
  # 添加 NAT MASQUERADE 规则 \
  /usr/sbin/iptables -t nat -C POSTROUTING -s 172.20.0.0/16 -o wt0 -j MASQUERADE 2>/dev/null || \
  /usr/sbin/iptables -t nat -I POSTROUTING 1 -s 172.20.0.0/16 -o wt0 -j MASQUERADE'
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

# 启用并启动服务
systemctl daemon-reload
systemctl enable guac-netbird-fix.service
systemctl start guac-netbird-fix.service

# 检查服务状态
systemctl status guac-netbird-fix.service

## 快速验证

# 1. 检查 FORWARD 策略(应该是 ACCEPT)
iptables -L FORWARD -n | head -1

# 2. 检查 NAT 规则(应该看到 172.20.0.0/16 -> wt0 的 MASQUERADE 规则)
iptables -t nat -L POSTROUTING -n -v | grep -E "(wt0|172.20)"

# 3. 查看 netbird 已连接的节点
netbird status --detail | grep -E "(NetBird IP|Status)" | grep -B 1 "Status: Connected"

# 4. 测试容器连通性(替换为实际的节点 IP)
docker exec guacamole-guacd ping -c 3 10.10.1.12

解决安装k3s后netbird内网下linux到win无法ping通问题

  # ============================================
  # NetBird + K3s 冲突解决方案 - 完整命令
  # ============================================

  # 步骤1: 添加 iptables 规则(立即生效)
  # ----------------------------------------

  # 1.1 FORWARD链规则 - 允许 wt0 流量绕过 k3s 规则
  iptables -I FORWARD 1 -i wt0 -j ACCEPT
  iptables -I FORWARD 1 -o wt0 -j ACCEPT

  # 1.2 INPUT/OUTPUT 规则 - 允许 WireGuard UDP 51820 端口(关键!)
  iptables -I INPUT 1 -p udp --dport 51820 -j ACCEPT
  iptables -I INPUT 1 -p udp --sport 51820 -j ACCEPT
  iptables -I OUTPUT 1 -p udp --dport 51820 -j ACCEPT
  iptables -I OUTPUT 1 -p udp --sport 51820 -j ACCEPT

  # 步骤2: 重启 netbird 使其重新建立连接
  # ----------------------------------------
  netbird down
  sleep 2
  netbird up

  # 步骤3: 验证连通性
  # ----------------------------------------
  # 等待几秒让连接建立
  sleep 5

  # 查看连接状态
  netbird status

  # 测试 ping Windows 节点(替换为你的实际IP)
  ping -c 4 10.10.1.31

  # 步骤4: 持久化规则(重启后自动生效)
  # ----------------------------------------
  cat > /etc/systemd/system/netbird-iptables.service <<'EOF'
  [Unit]
  Description=Netbird iptables rules for k3s compatibility
  After=network.target netbird.service
  Before=k3s.service

  [Service]
  Type=oneshot
  ExecStart=/bin/bash -c '\
    # FORWARD链规则 - 允许wt0流量绕过k3s规则 \
    /usr/sbin/iptables -C FORWARD -i wt0 -j ACCEPT 2>/dev/null || /usr/sbin/iptables -I FORWARD 1 -i wt0 -j ACCEPT; \
    /usr/sbin/iptables -C FORWARD -o wt0 -j ACCEPT 2>/dev/null || /usr/sbin/iptables -I FORWARD 1 -o wt0 -j ACCEPT; \
    \
    # INPUT/OUTPUT规则 - 允许WireGuard UDP 51820端口 \
    /usr/sbin/iptables -C INPUT -p udp --dport 51820 -j ACCEPT 2>/dev/null || /usr/sbin/iptables -I INPUT 1 -p udp --dport 51820 -j ACCEPT; \
    /usr/sbin/iptables -C INPUT -p udp --sport 51820 -j ACCEPT 2>/dev/null || /usr/sbin/iptables -I INPUT 1 -p udp --sport 51820 -j ACCEPT; \
    /usr/sbin/iptables -C OUTPUT -p udp --dport 51820 -j ACCEPT 2>/dev/null || /usr/sbin/iptables -I OUTPUT 1 -p udp --dport 51820 -j ACCEPT; \
    /usr/sbin/iptables -C OUTPUT -p udp --sport 51820 -j ACCEPT 2>/dev/null || /usr/sbin/iptables -I OUTPUT 1 -p udp --sport 51820 -j ACCEPT'
  RemainAfterExit=yes

  [Install]
  WantedBy=multi-user.target
  EOF

  # 启用并启动服务
  systemctl daemon-reload
  systemctl enable netbird-iptables.service
  systemctl start netbird-iptables.service

  # 检查服务状态
  systemctl status netbird-iptables.service

  # ============================================
  # 完成!现在 Linux 应该可以 ping 通 Windows 节点了
  # ============================================

  简化版(如果只想快速测试):
  # 添加规则
  iptables -I FORWARD 1 -i wt0 -j ACCEPT
  iptables -I FORWARD 1 -o wt0 -j ACCEPT
  iptables -I INPUT 1 -p udp --dport 51820 -j ACCEPT
  iptables -I INPUT 1 -p udp --sport 51820 -j ACCEPT
  iptables -I OUTPUT 1 -p udp --dport 51820 -j ACCEPT
  iptables -I OUTPUT 1 -p udp --sport 51820 -j ACCEPT
  
  # 重启 netbird
  netbird down && sleep 2 && netbird up
  
  # 测试
  ping -c 4 10.10.1.31
  
  核心原因: k3s 的 iptables 规则阻止了 netbird 的 WireGuard UDP 51820 端口握手流量,导致无法建立隧道。

k3s部署awx容器web管理

https://codeload.github.com/ansible/awx-operator/tar.gz/refs/tags/2.19.1
mv awx-operator-2.19.1 awx-operator

编写部署配置文件
vim kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - ./awx-operator/config/default

images:
  - name: quay.io/ansible/awx-operator
    newName: registry.cn-hangzhou.aliyuncs.com/leiuvn/k3s
    newTag: awx-operator-2.19.1

  - name: gcr.io/kubebuilder/kube-rbac-proxy
    newName: registry.cn-hangzhou.aliyuncs.com/leiuvn/k3s
    newTag: kube-rbac-proxy-0.15

  - name: registry.k8s.io/kubebuilder/kube-rbac-proxy
    newName: registry.cn-hangzhou.aliyuncs.com/leiuvn/k3s
    newTag: kube-rbac-proxy-0.15

# 【全量补丁】只要是 Deployment 资源,通通强行注入 aliyun-registry-secret
patches:
  - patch: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: all-deployments
      spec:
        template:
          spec:
            imagePullSecrets:
              - name: aliyun-registry-secret
    target:
      kind: Deployment

创建密钥
kubectl create secret docker-registry aliyun-registry-secret \
  --docker-server=registry.cn-hangzhou.aliyuncs.com \
  --docker-username=qunrcn \
  --docker-password=Shimujiuxia@2018 \
  --namespace=awx

创建命名空间
kubectl create namespace awx
作用:创建一个名为 awx 的独立"隔离空间"
类比:就像创建一个文件夹,把所有AWX相关的资源(Pod、Service、Secret等)都放进去,避免和其他应用混乱。

切换kubectl默认命名空间
kubectl config set-context --current --namespace=awx
作用:让后续所有 kubectl 命令默认都在 awx 命名空间下操作
设置前:kubectl get pods -n awx
设置后:kubectl get pods

执行部署
kubectl apply -k .
作用:基于当前目录的 kustomization.yaml 配置,部署 AWX Operator
读取 kustomization.yaml
加载 awx-operator/config/default/ 下的 YAML 模板
替换镜像
注入 imagePullSecrets
创建 CRD、RBAC、Deployment 等资源到集群

kubectl apply -f awx-operator/awx-demo.yml
作用:告诉 Operator "帮我创建一个 AWX 实例"
你提交的是一个自定义资源 (CR) 定义
Operator 监听到这个事件后:
创建 PostgreSQL 数据库
创建 Web 服务(前端界面)
创建 Task 服务(执行任务的后端)
创建 Service、Ingress、PVC 等

清理pod
kubectl delete pod -n awx --all
作用:删除 awx 命名空间下的所有 Pod
如果有 Deployment/StatefulSet 管理
K8s 会自动重新创建这些 Pod
配置修改后需要重启
排查问题时清除异常状态
更新镜像版本后触发拉取新镜像


0 篇评论

发表我的评论