下面用从 0 到 1 的思路,讲清楚 CentOS 上的微服务如何用 Kubernetes(K8s)。我会分「概念 → 准备 → 打包 → 部署 → 运维」几部分,适合实际落地。
CentOS 是“运行环境”
K8s 是“调度平台”
常见三种情况:
✅ CentOS 作为 K8s 节点(最常见)
✅ CentOS 上跑 K8s 集群
❌ 不是“CentOS 微服务直接交给 K8s”
CentOS 服务器
├─ Docker
├─ Kubernetes (kubeadm)
│ ├─ Master
│ └─ Node
│ ├─ Pod (Spring Boot / Go / Node)
│ ├─ Service
│ └─ Ingress
# 关闭防火墙(测试环境)
systemctl stop firewalld
systemctl disable firewalld
# 关闭 swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
# 设置 hostname
hostnamectl set-hostname k8s-master
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
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
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
kubeadm init \
--pod-network-cidr=10.244.0.0/16
初始化完成后:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
FROM openjdk:8-jdk
COPY target/user-service.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
docker build -t user-service:1.0 .
docker tag user-service:1.0 registry.example.com/user-service:1.0
docker push registry.example.com/user-service:1.0
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
apiVersion: v1
kind: Service
metadata:
name: user-service
spec:
selector:
app: user-service
ports:
- port: 80
targetPort: 8080
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
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
Gateway
├─ user-service
├─ order-service
├─ payment-service
└─ config-server
配合:
| 场景 | 建议 |
|---|---|
| 单体应用 | 先拆服务再容器化 |
| 已用 Docker | 直接写 K8s YAML |
| 不会 K8s | 先用 kubeadm 单机练 |
| 生产 | 用 KubeSphere / Rancher |
如果你愿意,可以告诉我:
我可以直接给你 一套可复制的 YAML + 部署方案。