Kubernetes入门:从概念到实践的完整指南
<h2>前言</h2><p>Kubernetes(K8s)是当今最流行的容器编排平台,是DevOps工程师的必备技能。本文从概念到实践,带你快速入门K8s。</p>
<h2>一、K8s是什么?</h2>
<p>Kubernetes是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。</p>
<p><strong>核心功能:</strong></p>
<ul>
<li>自动装箱:根据资源需求自动调度容器</li>
<li>自我修复:失败容器自动重启</li>
<li>水平扩展:一键扩缩容</li>
<li>服务发现:内置DNS和服务发现</li>
<li>负载均衡:自动分发流量</li>
</ul>
<h2>二、核心概念</h2>
<h3>1. Pod</h3>
<p>最小部署单元,一个Pod可以包含一个或多个容器。</p>
<h3>2. Deployment</h3>
<p>管理Pod的副本数量和更新策略。</p>
<h3>3. Service</h3>
<p>定义一组Pod的访问策略,提供稳定的访问入口。</p>
<h3>4. ConfigMap & Secret</h3>
<p>配置管理和敏感信息存储。</p>
<h3>5. Namespace</h3>
<p>资源隔离的逻辑分组。</p>
<h2>三、环境搭建</h2>
<pre><code># 安装kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
# 安装minikube(本地K8s)
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
# 启动集群
minikube start</code></pre>
<h2>四、第一个应用部署</h2>
<h3>1. 创建Deployment</h3>
<pre><code># 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: nginx:1.21
ports:
- containerPort: 80</code></pre>
<h3>2. 创建Service</h3>
<pre><code># service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
type: NodePort</code></pre>
<h3>3. 部署应用</h3>
<pre><code>kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
# 查看状态
kubectl get pods
kubectl get services
kubectl get deployments</code></pre>
<h2>五、常用命令</h2>
<pre><code># 查看资源
kubectl get pods -n default
kubectl get deployments
kubectl get services
# 查看详情
kubectl describe pod <pod-name>
kubectl logs <pod-name>
# 进入容器
kubectl exec -it <pod-name> -- /bin/bash
# 扩缩容
kubectl scale deployment nginx-deployment --replicas=5
# 删除资源
kubectl delete -f deployment.yaml
kubectl delete pod <pod-name></code></pre>
<h2>六、配置管理</h2>
<pre><code># ConfigMap
kubectl create configmap app-config --from-literal=key1=value1
# Secret
kubectl create secret generic db-secret --from-literal=password=secret123
# 在Pod中使用
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: password</code></pre>
<h2>七、常见问题</h2>
<p><strong>Q: Pod一直处于Pending状态?</strong></p>
<p>A: 检查节点资源是否足够,或是否有污点/容忍配置问题。</p>
<p><strong>Q: ImagePullBackOff?</strong></p>
<p>A: 镜像不存在或没有权限拉取,检查镜像名称和imagePullSecrets。</p>
<h2>总结</h2>
<p>K8s是容器编排的事实标准,掌握Pod、Deployment、Service等核心概念是入门第一步。建议在minikube上多练习,熟悉kubectl命令。</p>
<p><em>本文由AI辅助创作。</em></p>
</div>
<div id="MySignature" role="contentinfo">
---
📌 **如果觉得文章对你有帮助,欢迎点赞👍收藏⭐!**
💬 有问题或建议?欢迎在评论区留言讨论~
🔗 更多技术干货请关注作者:弥烟袅绕
📚 本文地址:https://www.cnblogs.com/czlws/p/19788447<br><br>
来源:https://www.cnblogs.com/czlws/p/19788447
頁:
[1]