什么是Pod ?
当你在Kubernetes中部署一个应用程序时,你通常会使用Pod作为最小的可部署单元。Pod是一个可以包含一个或多个容器的组。这些容器在Pod内部共享网络和存储,并可以通过localhost直接通信。这种设计使得它们能够协同工作,共享数据,并能够一起被调度和管理。
创建pod服务
Pod 中运行两个相互关联的服务,例如一个 Web 前端(比如 NGINX)和一个后端服务(比如 Apache),以下是一个示例 YAML 文件:
apiVersion: v1 kind: Pod metadata: name: dual-service-pod spec: containers: - name: frontend-container image: nginx:latest ports: - containerPort: 80 - name: backend-container image: httpd:latest ports: - containerPort: 8080
在这个配置中,我们定义了一个 Pod,其中包含两个容器。第一个容器 frontend-container 运行 NGINX(监听端口80),用于前端服务。第二个容器 backend-container 运行 Apache(监听端口8080),用于后端服务。
使用以下命令将其应用到 Kubernetes 集群中:
kubectl apply -f dual-service-pod.yaml
同时运行 NGINX 和 Apache 服务。
详细:
1、apiVersion: 定义了使用的 Kubernetes API 版本,这里使用的是 v1 版本。
2、kind: 指定了对象的类型,这里是 Pod。
3、metadata: 包含有关 Pod 的元信息,例如名称(dual-service-pod)。
spec: 定义了 Pod 的规范,包括 Pod 中包含的容器。
4、containers: 列出了 Pod 中包含的容器列表。
5、name: 容器的名称,这里有两个容器,一个是 frontend-container,一个是 backend-container。
6、image: 容器所使用的镜像,frontend-container 使用 NGINX 镜像,backend-container 使用 Apache 镜像。
7、ports: 定义了容器开放的端口,frontend-container 开放了80端口,backend-container 开放了8080端口。
获取所有 Pod 列表
kubectl get pods
获取 Pod 的详细信息
kubectl describe pod <pod-name>
删除 Pod
kubectl delete pod <pod-name>
日志查看
kubectl logs <pod-name>
进入容器
kubectl exec -it dual-service-pod -c frontend-container /bin/sh
-it: 创建一个交互式的终端。
dual-service-pod: 你要进入的 Pod 的名称。
-c frontend-container: 指定要进入的容器名称。
/bin/sh: 启动一个 shell 以便你可以与容器进行交互。