当前位置: 首页 > news >正文

Linux容器大师:K8s集群部署入门指南

引言

在云原生时代,Kubernetes就像一位"集群调度大师"🎮,轻松管理成千上万的容器化应用!本文将带你从零开始搭建生产级K8s集群,从基础概念到实战部署,从核心组件到安全运维。无论你是要搭建开发环境还是生产集群,这些技能都将助你轻松驾驭容器编排的浪潮!准备好你的Linux服务器,让我们一起探索K8s的奥秘吧~ 🌊

Kubernetes
Master节点
Worker节点
网络存储
监控运维

一、Kubernetes 基础概念

1.1 核心组件

组件功能描述
Master节点集群控制平面
Node节点运行工作负载的机器
PodKubernetes最小部署单元
Deployment管理Pod副本的声明式方式
Service定义Pod访问策略
kubelet节点代理,管理Pod生命周期
kube-proxy维护节点网络规则

1.2 基本工作流程

  1. 用户通过kubectl提交YAML配置
  2. API Server接收请求并验证
  3. Scheduler分配Pod到合适Node
  4. kubelet创建并监控Pod
  5. kube-proxy配置网络规则

二、集群部署方案选择

2.1 本地开发环境

工具特点适用场景
Minikube单节点集群,简单易用本地开发测试
Kind使用Docker容器作为节点CI/CD测试
MicroK8s轻量级生产级K8s边缘计算/IoT

2.2 生产环境部署

方案特点适用场景
kubeadm官方工具,灵活可控自定义集群
kOps自动化生产级集群AWS等云环境
RKERancher的K8s发行版混合云部署

三、使用kubeadm部署集群

3.1 环境准备(所有节点)

# 禁用swap
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab# 安装Docker
sudo apt-get update && sudo apt-get install -y docker.io
sudo systemctl enable --now docker# 安装kubeadm/kubelet/kubectl
sudo apt-get update && sudo apt-get 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-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

3.2 初始化Master节点

sudo kubeadm init \--pod-network-cidr=10.244.0.0/16 \--apiserver-advertise-address=<master-ip># 按照输出提示配置kubectl
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

3.3 加入Worker节点

# 在Master节点上获取join命令
kubeadm token create --print-join-command# 在Worker节点上执行输出的join命令
sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash <hash>

四、基本操作入门

4.1 集群状态检查

# 查看节点状态
kubectl get nodes -o wide# 查看所有资源
kubectl get all --all-namespaces# 查看集群信息
kubectl cluster-info

4.2 部署第一个应用

# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80
# 创建部署
kubectl apply -f nginx-deployment.yaml# 查看部署状态
kubectl get deployments
kubectl get pods -o wide

4.3 暴露服务

# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: NodePort
# 创建服务
kubectl apply -f nginx-service.yaml# 获取服务访问信息
kubectl get svc nginx-service# 测试访问(使用输出的NodePort)
curl http://<node-ip>:<node-port>

五、核心概念深入

5.1 Pod生命周期

  1. Pending:调度中
  2. Running:至少一个容器运行中
  3. Succeeded:所有容器成功终止
  4. Failed:至少一个容器异常终止
  5. Unknown:状态无法获取

5.2 控制器类型

类型用途
Deployment无状态应用部署
StatefulSet有状态应用部署
DaemonSet每个节点运行一个Pod
Job/CronJob批处理任务

5.3 服务发现

# 环境变量方式
kubectl exec <pod-name> -- env | grep SERVICE# DNS方式(集群内访问)
<service-name>.<namespace>.svc.cluster.local

六、存储管理

6.1 卷类型

# pod-with-volume.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-with-volume
spec:containers:- name: nginximage: nginxvolumeMounts:- name: html-volumemountPath: /usr/share/nginx/htmlvolumes:- name: html-volumehostPath:path: /data/htmltype: Directory

6.2 PersistentVolume(PV)示例

# pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: pv-volume
spec:capacity:storage: 10GiaccessModes:- ReadWriteOncehostPath:path: /mnt/data

6.3 PersistentVolumeClaim(PVC)示例

# pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pvc-claim
spec:accessModes:- ReadWriteOnceresources:requests:storage: 3Gi

七、集群维护

7.1 节点管理

# 标记节点不可调度
kubectl cordon <node-name># 排空节点(迁移Pod)
kubectl drain <node-name> --ignore-daemonsets# 恢复节点
kubectl uncordon <node-name>

7.2 升级集群

# 升级kubeadm
sudo apt-get update && sudo apt-get install -y kubeadm=1.23.5-00# 检查升级计划
sudo kubeadm upgrade plan# 升级Master节点
sudo kubeadm upgrade apply v1.23.5# 升级kubelet和kubectl
sudo apt-get update && sudo apt-get install -y kubelet=1.23.5-00 kubectl=1.23.5-00
sudo systemctl restart kubelet

八、监控与日志

8.1 基础监控

# 查看Pod日志
kubectl logs <pod-name># 实时日志流
kubectl logs -f <pod-name> -c <container-name># 进入Pod调试
kubectl exec -it <pod-name> -- /bin/bash

8.2 部署监控栈(Prometheus+Grafana)

# 添加Helm仓库
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts# 安装kube-prometheus-stack
helm install prometheus prometheus-community/kube-prometheus-stack

九、安全最佳实践

9.1 RBAC配置

# role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: defaultname: pod-reader
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "watch", "list"]
# rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: read-podsnamespace: default
subjects:
- kind: Username: janeapiGroup: rbac.authorization.k8s.io
roleRef:kind: Rolename: pod-readerapiGroup: rbac.authorization.k8s.io

9.2 网络策略

# network-policy.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: default-deny
spec:podSelector: {}policyTypes:- Ingress- Egress

十、学习资源推荐

10.1 官方文档

  • Kubernetes官方文档
  • kubeadm安装指南
  • Kubernetes API参考

10.2 交互式教程

  • Kubernetes官方互动教程
  • Katacoda Kubernetes课程

10.3 认证路径

  1. CKAD (Certified Kubernetes Application Developer)
  2. CKA (Certified Kubernetes Administrator)
  3. CKS (Certified Kubernetes Security Specialist)

总结 🎯

通过本文的系统学习,我们已经掌握了K8s集群的核心技能:

  1. 架构理解:Master/Worker节点协同原理 🧠
  2. 集群部署:kubeadm生产级部署方案 🏗️
  3. 应用管理:从Pod到Deployment的完整编排 📦
  4. 运维安全:监控日志与安全加固体系 🔍

云原生黄金法则

  • 声明式配置:所有资源YAML化 📜
  • 自动化运维:CI/CD流水线整合 🔄
  • 渐进式扩展:从小集群开始实践 🐣

记住:Kubernetes不是终点,而是云原生的起点! 现在就去部署你的第一个集群吧!🚀✨


PS:如果你在学习过程中遇到问题,别慌!欢迎在评论区留言,我会尽力帮你解决!😄

http://www.xdnf.cn/news/234019.html

相关文章:

  • 校平机:金属板材加工的核心设备
  • 1295. 统计位数为偶数的数字
  • 大小写问题
  • 5.运输层
  • 解决在Mac上无法使用“ll”命令
  • python与c++变量赋值的区别
  • 【Linux庖丁解牛】—环境变量!
  • 深入解析词嵌入(Word2Vec、GloVe)技术原理:从词语到向量的转变
  • Transformer 模型及深度学习技术应用
  • Langchain+文本摘要-refine
  • Java零基础入门Day3:程序流程控制
  • Flowith:解放思维的AI画布让创意与效率如泉涌
  • 动画震动效果
  • 【Bootstrap V4系列】学习入门教程之 加载必要文件和入门模板
  • javascript 深拷贝和浅拷贝的区别及具体实现方案
  • 【每日八股】复习 Redis Day4:线程模型
  • NLP 分词技术学习
  • 【Dify系列教程重置精品版】第四章:实现Dify的 hello world
  • ISO 26262认证步骤
  • 【Java面试笔记:进阶】30.Java程序运行在Docker等容器环境有哪些新问题?
  • 楼宇智能化三、五章【期末复习】
  • 芯知识|小体积语音芯片方案WTV/WT2003H声音播放ic应用解析
  • 楼宇智能化四章【期末复习】
  • (eNSP)Smart Link配置实验
  • MicroPython for esp32s3开发HX711称重模块指南
  • rk3568 A/B系统 OAT升级 实践
  • 全面了解CSS语法 ! ! !
  • 聊一聊接口自动化测试断言处理策略
  • 用户意图驱动:GEO优化策略之内容精准匹配
  • PID中低通滤波算法的详细讲解