K8S学习

51 阅读2分钟

什么是k8s?

  • k8s是一个开源的容器编排平台,常用于自动化部署,扩展和管理容器化应用,它提供了负载均衡,服务发现,自动化部署,滚动更新等功能

K8s 常见的组件有哪些?

  • APIServer
    • 集群的入口,处理所有REST操作
  • Etcd
    • 分布式键值存储,用于保存集群的状态
  • Controller Manager
    • 负责控制循环,用于管理集群的状态
  • Scheduler
    • 负责将Pod调度到合适的节点
  • Kubelet
    • 在每个节点上运行,管理pod的生命周期
  • kube proxy
    • 负责服务发现和负载均衡
  • namespace
    • Namespace 主要用于逻辑上的分组和隔离,用于将集群中的资源进行逻辑分组的机制。它允许在同一个 Kubernetes 集群中创建多个虚拟集群,便于不同团队或项目之间的资源隔离和管理

如何安装k8s

安装docker
sudo apt-get update sudo apt-get install -y docker.io sudo systemctl enable docker sudo systemctl start docker

brew install minikube
minikube start
kubectl get pods -A

如何启动一个k8s服务

启动一个服务通常涉及创建一个 Deployment 来管理应用程序的 Pods,然后创建一个 Service 来暴露这些 Pods。以下是启动一个 K8s 服务的步骤

  •  创建一个 Deployment

    • Deployment 用于管理一组 Pods,并确保它们以所需的状态运行
    apiVersion: apps/v1
    kind: Deployment
    metadata: 
        name: my-app 
    spec: 
     replicas: 3 
     selector: 
     matchLabels: 
       app: my-app 
     template: 
        metadata: 
         labels: 
         app: my-app 
        spec: 
            containers: 
            - name: my-app-container 
              image: nginx:latest # 替换为你的应用镜像 
            - ports: 
              containerPort: 80
    
    启动一个deployment
    
    kubectl apply -f deployment.yaml
    
  • 创建一个 Service

    Service 用于暴露 Pods,使其能够被外部访问或在集群内部进行通信。

    service.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      type: NodePort # 或使用 ClusterIP, LoadBalancer 等类型
      selector:
        app: my-app
      ports:
        - port: 80
          targetPort: 80
          nodePort: 30001 # 指定 NodePort(可选)
    
    启动一个service
    kubectl apply -f service.yaml
    

验证服务

你可以使用以下命令查看 Deployment 和 Service 的状态:

查看 Pods 状态:
kubectl get pods
查看 Service 状态:
kubectl get services