温馨提示×

centos k8s部署如何用yaml

小樊
38
2026-10-09 07:07:12
栏目: 智能运维

下面我用CentOS 上通过 YAML 部署 Kubernetes 应用的角度,给你一个从 0 到可用的示例讲解,适合新手。


一、前提条件(CentOS)

确保你已经:

  • CentOS 7/8
  • 已安装 Docker
  • 已安装 kubeadm / kubelet / kubectl
  • 已 kubeadm init 并配置好 kubeconfig
kubectl get nodes

能看到节点是 Ready 状态。


二、最常见的 YAML:Deployment + Service

示例:部署一个 Nginx

1️⃣ 创建 nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30080

2️⃣ 部署到 CentOS K8s

kubectl apply -f nginx.yaml

3️⃣ 查看状态

kubectl get pods
kubectl get svc

4️⃣ 访问测试(CentOS 本机)

curl http://<节点IP>:30080

三、YAML 基本结构说明

核心字段

字段 含义
apiVersion K8s API 版本
kind 资源类型
metadata 名称、标签
spec 期望状态
status 实际状态(自动)

四、常见资源 YAML 示例

1️⃣ Pod(不推荐直接用)

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
  - name: busybox
    image: busybox
    command: ["sleep", "3600"]

2️⃣ ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  app.env: "prod"

3️⃣ Secret(base64)

echo -n "password" | base64
apiVersion: v1
kind: Secret
metadata:
  name: app-secret
type: Opaque
data:
  password: cGFzc3dvcmQ=

五、在 CentOS 上的常见坑

❌ 1. 镜像拉不下来

解决:

# 配置国内镜像
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://registry.aliyuncs.com"]
}
EOF
systemctl restart docker

❌ 2. NodePort 外部访问不通

检查:

firewall-cmd --add-port=30080/tcp --permanent
firewall-cmd --reload

❌ 3. Pod 一直处于 Pending

kubectl describe pod <pod-name>

常见原因:

  • 资源不足
  • 没有匹配节点标签

六、删除资源

kubectl delete -f nginx.yaml

七、推荐学习路径

  1. Pod → Deployment
  2. Service(ClusterIP / NodePort)
  3. ConfigMap / Secret
  4. Ingress
  5. StatefulSet(数据库)

如果你愿意,可以告诉我:

  • ✅ CentOS 版本
  • ✅ 单节点还是多节点
  • ✅ 想部署什么应用(Java / Python / 数据库)

我可以直接给你定制 YAML。

0 踩