从部署开始了解原理
这里用部署一个tomcat来了解:
部署Tomcat
步骤1:创建Tomcat Docker镜像
- 创建一个名为
Dockerfile
的文件,并将以下内容复制到其中:
FROM tomcat:latest
COPY ./webapps/ /usr/local/tomcat/webapps/
- 将你的Tomcat应用程序打包成一个WAR文件,并将其复制到
Dockerfile
所在的目录中。 - 在终端中,导航到包含
Dockerfile
的目录,并运行以下命令来构建Docker镜像:
docker build -t my-tomcat:latest .
步骤2:创建Deployment
- 在Kubernetes集群中创建一个Deployment,使用刚才创建的Tomcat Docker镜像。以下是一个示例 YAML 文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-tomcat-deployment
spec:
replicas: 3 # 根据需要调整副本数
selector:
matchLabels:
app: my-tomcat
template:
metadata:
labels:
app: my-tomcat
spec:
containers:
- name: my-tomcat
image: my-tomcat:latest
ports:
- containerPort: 8080
- 使用以下命令来创建Deployment:
kubectl apply -f my-tomcat-deployment.yaml
步骤3:创建Service
- 创建一个Service来暴露Tomcat容器的端口,以便从外部进行访问。以下是一个示例 YAML 文件:
apiVersion: v1
kind: Service
metadata:
name: my-tomcat-service
spec:
selector:
app: my-tomcat
ports:
- protocol: TCP
port: 8080 # Tomcat容器的端口号
targetPort: 8080 # Service将暴露的端口号
- 使用以下命令来创建Service:
kubectl apply -f my-tomcat-service.yaml
步骤4:访问Tomcat应用程序
- 等待一段时间,让Deployment和Service正常运行。然后,你可以通过访问Service的IP地址和暴露的端口号来访问Tomcat应用程序。可以使用以下命令获取Service的IP地址:
kubectl get services my-tomcat-service -o jsonpath='{.spec.clusterIP}'
- 将获取到的IP地址和端口号(默认为8080)组合起来,就可以通过浏览器或命令行访问Tomcat应用程序了。例如,在浏览器中输入
http://<Service IP地址>:8080/
,或者在命令行中执行curl <Service IP地址>:8080/
。
这样,你就成功地在Kubernetes中部署了一个Tomcat应用程序。
对ymal文件解释
文件解析my-tomcat-deployment.yaml
kind: Deployment
metadata:
name: my-tomcat-deployment
spec:
replicas: 3 # 根据需要调整副本数
selector:
matchLabels:
app: my-tomcat
template:
metadata:
labels:
app: my-tomcat
spec:
containers:
- name: my-tomcat
image: my-tomcat:latest
ports:
- containerPort: 8080
解释:
这段代码是一个Kubernetes部署配置文件,用于创建一个名为"my-tomcat-deployment"的Deployment。Deployment是Kubernetes中的一种资源对象,用于描述应用程序的副本集。
解析如下:
kind: Deployment
:指定这是一个Deployment资源对象。metadata
:包含有关Deployment的元数据信息。name: my-tomcat-deployment
:指定Deployment的名称为"my-tomcat-deployment"。
spec
:包含Deployment的配置信息。replicas: 3
:指定Deployment应该运行的副本数为3。可以根据需要调整这个值。selector
:定义如何选择要管理的Pod。matchLabels
:指定标签选择器,用于匹配具有特定标签的Pod。app: my-tomcat
:指定Pod必须具有"app: my-tomcat"标签才能被选中。
template
:定义Pod的模板。metadata
:包含有关Pod的元数据信息。labels
:指定Pod的标签。app: my-tomcat
:指定Pod具有"app: my-tomcat"标签。
spec
:包含Pod的配置信息。containers
:定义容器列表。- name: my-tomcat
:指定容器的名称为"my-tomcat"。image: my-tomcat:latest
:指定容器使用的镜像为"my-tomcat:latest"。ports
:定义容器暴露的端口列表。- containerPort: 8080
:指定容器将监听的端口号为8080。
`template`:定义Pod的模板。
`metadata`:包含有关Pod的元数据信息。
`labels`:指定Pod的标签。
`app: my-tomcat`:指定Pod具有"app: my-tomcat"标签。
# 这一块相当于给新建的pod**命名**
service文件中有一段;
spec:
selector:
app: my-tomcat
#这里是使用 my-tomcat的pod
解析my-tomcat-service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-tomcat-service
spec:
selector:
app: my-tomcat
ports:
- protocol: TCP
port: 8080 # Tomcat容器的端口号
targetPort: 8080 # Service将暴露的端口号
解释:
这段代码是一个Kubernetes的Service资源定义,用于创建一个名为"my-tomcat-service"的服务。该服务将暴露Tomcat容器的8080端口,以便其他应用程序可以通过这个端口访问到Tomcat容器。
具体解释如下:
apiVersion
: 指定了Kubernetes API的版本号为v1。kind
: 指定了要创建的资源类型为Service。metadata
: 包含了关于Service的一些元数据信息。name
: 指定了Service的名称为"my-tomcat-service"。
spec
: 定义了Service的具体配置。selector
: 选择器用于匹配带有"app: my-tomcat"标签的Pod。这意味着只有带有这个标签的Pod才会被Service所管理。ports
: 定义了Service暴露的端口信息。protocol
: 指定了端口使用的协议为TCP。port
: 指定了Service将暴露的端口号为8080。targetPort
: 指定了Tomcat容器需要监听的端口号也为8080。这样,当有请求到达Service时,它将转发到对应的Tomcat容器的8080端口上。