@TOC
前言
首先我们要先理解k8s中的几个比较核心的概念
他们分别是Deployment、POD、Service
简单理解
deployment: 控制Pod副本数量
pod:管理容器
service:对外发布服务
详细解释
pod(容器组)
是 Kubernetes 中最小的调度单元,它可以包含一个或多个容器,并共享相同的网络命名空间和存储卷。Pod 提供了部署应用程序所需的环境,并且可以被创建、删除或替换。
Deployment
是用来定义和管理 Pod 的高级控制器。它描述了应用程序的期望状态,例如需要运行的 Pod 数量、使用的镜像版本等信息。Deployment 会负责根据这些描述来创建、删除或更新 Pod,以确保实际运行的 Pod 符合期望状态。
Service
是用来暴露 Pod 提供的服务给其他应用程序或用户的方式。Service 定义了一组 Pod 的访问策略,通过标签选择器将请求路由到匹配的 Pod 上。Service 可以提供负载均衡、服务发现、内部集群通信等功能。
应用
环境
Ip | 主机名 | cpu | 内存 | 硬盘 |
---|---|---|---|---|
192.168.10.11 | master01 | 2cpu双核 | 4G | 100G |
192.168.10.12 | worker01 | 2cpu双核 | 4G | 100G |
192.168.10.13 | worker02 | 2cpu双核 | 4G | 100G |
已部署k8s-1.27
步骤
创建资源控制器deployment(created就是创建好了)
注:deployment会自动创建pod
kubectl create deployment nginx --image=nginx:1.20
查看
kubectl get pod -o wide
-o wide 查看详细信息
可以看到pod在worker01上成功运行
可以在集群内进行ip访问
curl 10.244.5.2
可以看到访问到了
而外界是访问不到的
让外界访问则需要service
创建service
kubectl expose deployment nginx --name=nginx-svc --port=80 --type=NodePort
--name 服务名称
--port 容器内暴露的端口
type=BodePort 表示对外暴露端口,端口号随机,外部主机通过这个端口可以访问
查看
kubectl get service nginx-svc
可以看到对外暴露的端口为32639
访问
访问到了
实验完成