部署步骤
- 编写dockerfile,制作镜像。
- 使用控制器部署pod,部署时需要指定制作的镜像。常见控制器有deployment、statefulset、daemonset。
- 把需要访问交互的应用端口暴露出来,方便数据交互。暴露方式有service、ingress。
- 暴露出来后,客户端就可以正常访问运维了。
使用pod.yml创建pod
编写yml文件
apiVersion: v1
kind: Pod #指定资源类型,对于Pod,应该设置为Pod
metadata:
name: my-pod #Pod的名称
labels: #为Pod添加一个标签
app: my-app
annotations:
description: "This is a sample Pod" #描述
spec:
containers: #定义Pod中包含的容器
- name: my-container #容器的名称
image: nginx:latest #使用的容器镜像
ports: #定义容器监听的端口和协议
- containerPort: 80
protocol: TCP
resources:
limits: #指定Pod使用的资源的最大限制,如CPU和内存
cpu: "0.5"
memory: "512Mi"
requests: #指定Pod最低要求的资源,如CPU和内存
cpu: "0.25"
memory: "256Mi"
使用create命令或apply命令来创建pod
kubectl create -f pod.yaml
使用deployment创建pod
部署步骤
编写yml文件
apiVersion: apps/v1 #指定 Kubernetes API 的版本。对于 Deployment,通常使用 apps/v1
kind: Deployment #指定资源类型,对于 Deployment,应该设置为 Deployment
metadata:
name: my-java-app # Deployment 的名称
spec:
replicas: 3 # 副本数,即要创建的 Pod 的数量
selector:
matchLabels:
app: my-java-app # 用于选择要管理的 Pod 的标签
template:
metadata:
labels:
app: my-java-app # Pod 的标签
spec:
containers:
- name: my-java-app # 容器的名称
image: my-java-app # 容器的镜像
ports:
- containerPort: 8080 # 容器监听的端口号
上面的image属性没有指定镜像仓库的地址,默认是从Docker Hub拉取镜像,如果如果你的镜像存储在Google Container Registry,你可以这样指定镜像:
image: gcr.io/my-project/my-java-app
使用kubectl apply命令来创建你的部署:
kubectl apply -f my-java-app-deployment.yaml
暴露Kubernetes部署:你需要暴露你的Kubernetes部署,这样你的应用就可以被外部访问。你可以使用kubectl expose命令来暴露部署:
kubectl expose deployment my-java-app --type=LoadBalancer --port=8080
能直接创建pod吗
在使用kubectl create -f deployment.yaml
命令创建Deployment时,它会自动创建和管理Pod副本集。Deployment资源定义了Pod模板,Kubernetes会根据该模板创建和管理Pod副本,但Deployment本身不直接创建单个Pod。
每当创建一个新的Deployment资源,Kubernetes会根据指定的配置创建一个或多个Pod副本,并确保Pod副本的数量与指定的副本数保持一致。Deployment资源会根据指定的策略进行滚动升级、扩容、缩容等操作,以保证应用程序的高可用性和可靠性。
因此,使用kubectl create -f deployment.yaml
命令会创建Deployment资源,并由Kubernetes自动负责根据Deployment的配置创建和管理Pod副本集。不需要单独使用kubectl create -f pod.yaml
命令来创建Pod。