在Debian上部署K8S应用需先搭建集群,再通过配置文件部署应用,以下是关键步骤:
系统准备
sudo apt update && sudo apt upgrade -ysudo swapoff -a 并编辑 /etc/fstab 注释掉Swap行。net.bridge.bridge-nf-call-iptables=1 等参数到 /etc/sysctl.d/99-kubernetes-k8s.conf,执行 sudo sysctl --system 生效。安装容器运行时(containerd)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
sudo tee /etc/containerd/config.toml <<EOF
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
path = "/usr/bin/runc"
EOF
sudo systemctl enable --now containerd
安装Kubernetes组件
kubelet、kubeadm、kubectl:curl -s 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
初始化主节点
10.244.0.0/16):sudo kubeadm init --pod-network-cidr=10.244.0.0/16kubectl: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/coreos/flannel/master/Documentation/kube-flannel.yml
加入工作节点
kubeadm join 命令(需替换为实际IP和Token)。创建Docker镜像
Dockerfile 打包应用,例如:FROM nginx:latest
COPY ./app /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
docker build -t your-nginx-app .docker tag your-nginx-app your-registry/your-nginx-appdocker push your-registry/your-nginx-app定义Kubernetes资源
deployment.yaml:apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: your-registry/your-nginx-app
ports:
- containerPort: 80
部署应用
kubectl apply -f deployment.yamlapiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
kubectl apply -f service.yaml验证部署
kubectl get podskubectl get svccurl http://节点IP:端口)。kubectl rollout 管理应用更新。