温馨提示×

ubuntu k8s怎样部署应用

小樊
46
2026-10-28 13:24:59
栏目: 智能运维

在 Ubuntu 上使用 Kubernetes(k8s)部署应用,通常分为 环境准备 → 集群搭建 → 应用部署 三个步骤。下面给你一套常用且实用的方案,适合学习和生产入门。


一、环境准备(Ubuntu)

1. 系统要求

  • Ubuntu 20.04 / 22.04
  • 2 核 CPU+、2G 内存+
  • 多台机器(或单机也可)

2. 关闭 swap

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

3. 设置主机名(可选)

sudo hostnamectl set-hostname master

二、安装 Kubernetes 集群(使用 kubeadm)

1. 安装容器运行时(containerd)

sudo apt update
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd

2. 安装 kubeadm / kubelet / kubectl

sudo apt install -y apt-transport-https ca-certificates curl
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

三、初始化 Kubernetes 集群(Master 节点)

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

初始化完成后:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

安装网络插件(Flannel)

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

如果是多节点,使用 kubeadm join 加入 worker 节点


四、部署一个应用(以 Nginx 为例)

方式一:直接用命令(快速)

kubectl create deployment nginx --image=nginx:latest
kubectl expose deployment nginx --port=80 --type=NodePort

查看访问端口:

kubectl get svc

浏览器访问:

http://<节点IP>:<NodePort>

方式二:使用 YAML(推荐)

1. 创建 nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        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. 部署

kubectl apply -f nginx.yaml

3. 查看状态

kubectl get pods
kubectl get svc

五、常用运维命令

kubectl get nodes
kubectl get pods -A
kubectl describe pod <pod名>
kubectl logs <pod名>
kubectl delete -f nginx.yaml

六、进阶建议

  • 使用 Helm 管理复杂应用
  • 使用 Ingress 替代 NodePort
  • 使用 Ubuntu + MicroK8s(更适合单机)
sudo snap install microk8s --classic
microk8s enable dns storage ingress

如果你愿意,我可以:

  • 给你 单机版最简部署
  • 教你 部署 Java / Spring Boot 应用
  • 或配置 域名 + Ingress + HTTPS

你现在是 学习环境 还是 生产服务器?

0 踩