什么是 Kubernetes?
Kubernetes 是一种开源容器编排平台,可以帮助开发人员在生产环境中自动化部署,管理和扩展容器化应用程序。它是 Google 的 Borg 系统的开源版本,旨在帮助开发人员更轻松地管理容器化应用程序。
Kubernetes 提供了一种方法来管理多个 Docker 容器,可以自动处理容器的弹性、伸缩、负载平衡和故障转移,从而简化了应用程序的部署和管理。
准备
在开始本文之前,我们需要安装以下软件:
- Docker
- kubectl
- minikube
手动创建 Kubernetes hello world
我们先手动创建一个 Kubernetes 应用程序。在开始之前,建议您先快速阅读一下以下的概念:
- Pod:一个 Pod 包含一个或多个 Docker 容器,共享网络和存储的空间。Pod 是 Kubernetes 应用程序的最小部署单元。
- Deployment:Deployment 是定义 Pod 和 ReplicaSet 的模板。它可以管理应用程序的版本控制和滚动更新。
第一步:创建一个 Docker 镜像
我们首先需要创建一个 Docker 镜像。将以下代码保存为 Dockerfile:
FROM alpine:latest CMD echo "Hello, World!"
在您的终端中,进入 Dockerfile 所在的目录,并使用以下命令构建 Docker 镜像:
docker build -t hello-world-app .
第二步:创建一个 Pod
现在我们需要创建一个 Pod,可以在 Kubernetes 群集中运行该镜像。将以下 YAML 文件保存为 hello-world-pod.yaml:
apiVersion: v1 kind: Pod metadata: name: hello-world-pod spec: containers: - name: hello-world image: hello-world-app
使用 kubectl 命令将该文件应用于 Kubernetes 群集:
kubectl apply -f hello-world-pod.yaml
现在我们可以查看 Pod 的状态:
kubectl get pods
您应该看到一个包含以下内容的输出:
NAME READY STATUS RESTARTS AGE hello-world-pod 1/1 Running 0 20s
第三步:暴露 Pod
现在我们已经运行了一个 Pod,但是我们无法在本地机器上访问该 Pod。我们需要将 Pod 公开以便可以在本地机器上访问它。将以下 YAML 文件保存为 hello-world-svc.yaml:
-- -------------------- ---- ------- ----------- -- ----- ------- --------- ----- --------------- ----- --------- ---- ----------- ------ - ----- ---- ----- -- ----------- -- ----- --------
使用 kubectl 命令将该文件应用于 Kubernetes 群集:
kubectl apply -f hello-world-svc.yaml
现在我们可以查看 Pod 的状态:
kubectl get services
您应该看到一个包含以下内容的输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-world-svc NodePort 10.101.36.105 <none> 80:31332/TCP 16s
现在我们可以使用以下命令查找在本地机器上暴露的端口:
minikube service hello-world-svc --url
复制 URL 并在浏览器中打开。您应该看到以下输出:
Hello, World!
使用 Deployment 部署
使用 Deployment 可以更好地管理应用程序的版本控制和滚动更新。
第一步:创建一个 Deployment
使用以下 YAML 文件创建 Deployment:
-- -------------------- ---- ------- ----------- ------- ----- ---------- --------- ----- --------------- ----- --------- ------------ ---- ----------- --------- - --------- --------- ------- ---- ----------- ----- ----------- - ----- ----------- ------ ---------------
使用 kubectl 命令将该文件应用于 Kubernetes 群集:
kubectl apply -f hello-world-dep.yaml
现在我们可以查看 Deployment 的状态:
kubectl get deployments
您应该看到一个包含以下内容的输出:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hello-world-dep 3 3 3 3 13s
第二步:更新应用程序
更新应用程序时,您可以在更新 Deployment 后根据需要使用 kubectl 命令滚动更新 Pods。
使用以下命令更新应用程序:
kubectl set image deployment/hello-world-dep hello-world=hello-world-app:v2
现在我们可以查看 Deployment 的状态:
kubectl get deployments
您应该看到一个包含以下内容的输出:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hello-world-dep 3 3 3 3 4m25s
第三步:回滚更新
如果需要回滚更新,您可以使用以下命令:
kubectl rollout undo deployment/hello-world-dep
现在我们可以查看 Deployment 的状态:
kubectl get deployments
您应该看到一个包含以下内容的输出:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hello-world-dep 3 3 3 3 5m45s
结论
Kubernetes 是一种强大的容器编排平台,使开发人员可以轻松地部署、管理和扩展容器化应用程序。在本文中,我们讨论了如何手动创建一个 Kubernetes 应用程序,并使用 Deployment 部署进行版本控制和滚动更新。
我们建议您继续学习 Kubernetes,并尝试使用它来运行更复杂的应用程序。Kubernetes 文档和教程可以提供丰富的信息,帮助您了解 Kubernetes 并为实际应用程序部署做好准备。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67105e5c5f551281026a4aaf