什么是Kubernetes(K8s)?

Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。它由Google开发并捐赠给云原生计算基金会(CNCF)。K8s的核心功能包括负载均衡、服务发现、自动扩缩容、滚动更新和故障恢复等。

核心概念

Pod
Pod是K8s的最小调度单元,包含一个或多个容器(通常为1个)。Pod内的容器共享网络和存储资源。

Deployment
Deployment用于定义Pod的部署方式,支持声明式更新(如版本回滚)和副本管理。

Service
Service为Pod提供稳定的网络访问入口,支持负载均衡和服务发现。

Namespace
Namespace用于逻辑隔离资源(如开发、测试、生产环境),默认为default

安装与配置

Minikube(本地开发)
Minikube是单节点K8s集群工具,适合本地学习和测试:

# 安装Minikube(需提前安装Docker或Hypervisor)
minikube start --driver=docker
minikube status

kubectl(命令行工具)
kubectl是操作K8s集群的核心工具:

# 查看集群节点
kubectl get nodes
# 查看Pod
kubectl get pods -A

部署第一个应用

  1. 创建Deployment
    通过YAML文件定义Nginx的Deployment:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            ports:
            - containerPort: 80
    

    执行命令:

    kubectl apply -f nginx-deployment.yaml
    

  2. 暴露Service
    将Deployment暴露为Service(NodePort类型):

    kubectl expose deployment nginx-deployment --type=NodePort --port=80
    kubectl get svc
    

  3. 访问应用
    使用Minikube获取访问URL:

    minikube service nginx-deployment --url
    

常用命令速查

  • 查看资源状态
    kubectl get pods,svc,deploy
    

  • 查看Pod日志
    kubectl logs <pod-name>
    

  • 进入Pod终端
    kubectl exec -it <pod-name> -- /bin/bash
    

  • 删除资源
    kubectl delete -f nginx-deployment.yaml
    

学习资源推荐

通过实践和阅读文档逐步掌握核心功能,如Ingress、ConfigMap、StatefulSet等高级特性。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐