K8S与Linux应用集成的核心流程
Kubernetes(K8S)作为容器编排平台,其与Linux应用的集成主要围绕“容器化应用→部署至K8S集群→管理生命周期”展开,以下是具体步骤:
集成前需确保Linux节点(Master/Worker)满足以下条件:
sudo apt update && sudo apt install -y docker.io
sudo systemctl enable --now docker
kubeadm(集群初始化)、kubelet(节点代理)、kubectl(命令行工具)搭建集群。安装命令示例(Ubuntu):sudo apt update && sudo apt install -y apt-transport-https curl
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 # 锁定版本避免升级
在Master节点执行kubeadm init初始化集群,生成集群配置(默认路径~/.kube/config):
sudo kubeadm init --apiserver-advertise-address=<Master节点IP> --pod-network-cidr=10.244.0.0/16
sudo kubeadm join <Master节点IP>:6443 --token <Token> --discovery-token-ca-cert-hash <Hash>
kubectl get nodes确认所有节点处于Ready状态。为实现Pod间通信及外部访问,需安装网络插件(如Flannel、Calico)。以Flannel为例:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
将Linux应用打包为Docker镜像(需编写Dockerfile),并通过镜像仓库(如Docker Hub、Harbor)存储:
FROM nginx:latest
COPY ./html /usr/share/nginx/html # 将本地网页文件复制到镜像中
EXPOSE 80 # 声明容器端口
CMD ["nginx", "-g", "daemon off;"] # 启动Nginx
docker build -t your-registry/nginx-app:v1 .
docker push your-registry/nginx-app:v1
通过Deployment定义应用副本数、镜像、端口等参数,通过Service暴露应用(ClusterIP/NodePort/LoadBalancer):
nginx-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/nginx-app:v1 # 使用镜像仓库中的镜像
ports:
- containerPort: 80
nginx-service.yaml):apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80 # Service端口
targetPort: 80 # Pod端口
type: NodePort # 暴露方式为NodePort(外部可通过节点IP+端口访问)
kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml
kubectl get pods # 查看Pod状态
kubectl get svc # 查看Service端口
kubectl logs <Pod名称> # 查看Pod日志
kubectl exec -it <Pod名称> -- /bin/bash # 进入Pod调试
kubectl scale调整副本数(如将Nginx副本数扩至5):kubectl scale deployment nginx-deployment --replicas=5
ConfigMap(存储配置文件)和Secret(存储敏感信息)挂载到Pod中;PersistentVolume(PV)和PersistentVolumeClaim(PVC)实现数据持久化(如MySQL数据库);Horizontal Pod Autoscaler(HPA)根据CPU/内存使用率自动调整Pod副本数。通过以上步骤,可实现K8S与Linux应用的高效集成,利用K8S的编排能力提升Linux应用的部署效率、可扩展性和可靠性。