温馨提示×

centos微服务如何用k8s

小樊
47
2026-09-15 13:14:21
栏目: 智能运维

下面用从 0 到 1 的思路,讲清楚 CentOS 上的微服务如何用 Kubernetes(K8s)。我会分「概念 → 准备 → 打包 → 部署 → 运维」几部分,适合实际落地。


一、先理清一个关键认知

CentOS 是“运行环境”
K8s 是“调度平台”

常见三种情况:

  1. ✅ CentOS 作为 K8s 节点(最常见)

    • 微服务跑在 K8s Pod 里
    • CentOS 只是底层操作系统
  2. ✅ CentOS 上跑 K8s 集群

    • 多台 CentOS 组成 Master + Node
  3. ❌ 不是“CentOS 微服务直接交给 K8s”

    • 微服务必须 容器化(Docker) 才能进 K8s

二、整体架构(推荐)

CentOS 服务器
 ├─ Docker
 ├─ Kubernetes (kubeadm)
 │   ├─ Master
 │   └─ Node
 │       ├─ Pod (Spring Boot / Go / Node)
 │       ├─ Service
 │       └─ Ingress

三、CentOS 准备(以 CentOS 7/8 为例)

1. 基础环境

# 关闭防火墙(测试环境)
systemctl stop firewalld
systemctl disable firewalld

# 关闭 swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

# 设置 hostname
hostnamectl set-hostname k8s-master

2. 安装 Docker

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce

systemctl enable docker
systemctl start docker

四、安装 Kubernetes(kubeadm)

1. 添加 YUM 源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
EOF

2. 安装组件

yum install -y kubelet kubeadm kubectl
systemctl enable kubelet

3. 初始化 Master

kubeadm init \
  --pod-network-cidr=10.244.0.0/16

初始化完成后:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

4. 安装网络插件(Flannel)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

五、微服务容器化(关键)

示例:Spring Boot 微服务

1. Dockerfile

FROM openjdk:8-jdk
COPY target/user-service.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

2. 构建镜像

docker build -t user-service:1.0 .

3. 推送到镜像仓库(推荐)

docker tag user-service:1.0 registry.example.com/user-service:1.0
docker push registry.example.com/user-service:1.0

六、K8s 部署微服务

1. Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: user-service
spec:
  replicas: 2
  selector:
    matchLabels:
      app: user-service
  template:
    metadata:
      labels:
        app: user-service
    spec:
      containers:
      - name: user-service
        image: registry.example.com/user-service:1.0
        ports:
        - containerPort: 8080

2. Service

apiVersion: v1
kind: Service
metadata:
  name: user-service
spec:
  selector:
    app: user-service
  ports:
  - port: 80
    targetPort: 8080

3. 部署

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

七、对外暴露服务(Ingress)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: user-ingress
spec:
  rules:
  - host: user.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: user-service
            port:
              number: 80

八、微服务之间如何通信?

✅ Service 名称即域名

http://order-service
http://user-service:80

K8s 内部自动 DNS 解析。


九、常用运维命令

kubectl get pods
kubectl logs user-service-xxx
kubectl describe pod user-service-xxx
kubectl scale deployment user-service --replicas=3

十、典型微服务 K8s 架构

Gateway
  ├─ user-service
  ├─ order-service
  ├─ payment-service
  └─ config-server

配合:

  • ConfigMap / Secret(配置)
  • HPA(自动扩缩容)
  • Prometheus + Grafana(监控)

十一、如果你现在是以下情况

场景 建议
单体应用 先拆服务再容器化
已用 Docker 直接写 K8s YAML
不会 K8s 先用 kubeadm 单机练
生产 用 KubeSphere / Rancher

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

  • 用的什么语言(Java / Go / Node)
  • CentOS 版本
  • 是学习还是生产
  • 是否已有 Docker 镜像

我可以直接给你 一套可复制的 YAML + 部署方案。

0 踩