Debian集成Kubernetes与其他服务的完整流程
要将Kubernetes与其他服务(如应用、存储、监控等)集成到Debian系统中,需遵循“基础环境准备→Kubernetes集群部署→服务集成配置”的逻辑,以下是详细步骤:
集成前的系统配置是确保Kubernetes稳定运行的前提,需完成以下操作:
sudo swapoff -a # 临时关闭
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 永久禁用(注释Swap行)
k8s-master、k8s-node1),并编辑/etc/hosts文件添加IP与主机名映射(如192.168.1.1 k8s-master、192.168.1.2 k8s-node1),确保节点间可通过主机名通信。sudo apt install -y ntp
sudo systemctl enable --now ntp
Kubernetes依赖容器运行时管理容器,推荐使用Docker(社区主流选择):
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
sudo systemctl status docker # 确认显示“active (running)”
通过官方源安装kubelet、kubeadm、kubectl(Kubernetes核心工具):
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 # 锁定版本
主节点负责集群管理(如调度、API服务),需通过kubeadm完成初始化:
10.244.0.0/16):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
网络插件是Kubernetes实现Pod间通信的核心,推荐使用Flannel(轻量易用):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
验证网络插件状态:
kubectl get pods -n kube-system # 确认所有插件Pod处于“Running”状态
通过Deployment部署应用,并暴露为Service供外部访问:
# 创建Nginx Deployment(2个副本)
kubectl create deployment nginx-app --image=nginx --replicas=2
# 暴露Deployment为NodePort类型Service(端口30080映射到容器80端口)
kubectl expose deployment nginx-app --name=nginx-web-svc --type=NodePort --port=80 --target-port=80
# 验证部署与服务
kubectl get deployments
kubectl get svc
# 获取节点IP(如192.168.1.1),通过浏览器访问http://<节点IP>:30080
若应用需要持久化存储,可部署NFS存储并创建PersistentVolume(PV)与PersistentVolumeClaim(PVC):
# 在NFS服务器上创建共享目录(如/data/k8s)
# 编辑/etc/exports文件添加:/data/k8s *(rw,sync,no_root_squash)
# 在Kubernetes中创建PV
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
nfs:
server: <NFS服务器IP>
path: /data/k8s
EOF
# 创建PVC(请求10Gi存储)
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
EOF
应用可通过PVC挂载NFS存储(如修改Deployment的volumeMounts配置)。
部署Prometheus监控集群指标,Grafana可视化数据:
# 使用Helm安装Prometheus(需提前安装Helm)
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack
# 使用Helm安装Grafana
helm install grafana prometheus-community/grafana
# 获取Grafana管理员密码
kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
# 端口转发Grafana(默认端口3000)
kubectl port-forward --namespace default svc/grafana 3000:80
通过浏览器访问http://<节点IP>:3000(用户名admin,密码为上述命令输出的密码),添加Prometheus数据源并导入Dashboard即可监控集群。
在工作节点上运行主节点初始化后输出的kubeadm join命令,将节点加入集群:
sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
验证节点状态:
kubectl get nodes # 确认工作节点状态为“Ready”
kubectl cluster-info # 查看集群信息
kubectl get nodes # 确认所有节点状态为“Ready”
apt update && apt upgrade更新Kubernetes组件,注意版本兼容性。ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot save /var/lib/etcd/snapshot.db
通过以上步骤,可实现Debian系统与Kubernetes及常见服务(应用、存储、监控)的集成,构建稳定的容器化基础设施。