什么是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