赞
踩
kubernetes,简称 K8s,是用 8 代替名字中间的 8 个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效(powerful)。Kubernetes 提供了应用部署,规划,更新,维护的一种机制。
Docker 像是一个小型的虚拟机,在软件层面提供虚拟化,屏蔽了操作系统以及硬件的实现。它将应用程序的代码、工具库和运行环境全部封装到了一个容器中,因此大大降低了测试和部署的难度。
简单的应用,直接使用 Docker 部署即可完成。但是如果需要部署的是架构复杂、规模庞大的应用,它们需要根据访问量自动分配服务器、网络资源,并且在某个容器宕机之后自动进行灾难恢复、故障转移,这个时候就需要用到 Kubernates 了。
简单来说,Kubernates 可以给 Docker 容器提供资源自动分配,做到灾难恢复、故障转移。
在这整个体系中,Control Plane 会通过一系列的 API 来监控节点的网络状态以平衡服务器的负载。
搭建 Kubernates 服务有两种方式:
除此之外,还可以使用 Minikube 这款免费开源的 Kubernates 集群部署工具。
主要使用 Minikube 来完成 Kubernates 集群的部署工作。
工具:Visual Studio Code、Minikube
① 安装 VsCode 的 Kubernates 插件;
② 创建 deployment.yaml 文件,之后输入 deployment,编辑器即可自动给出基本的模版文件;
在 VsCode 中,可以看到任意属性的相关提示。
apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp image: <Image> resources: limits: memory: "128Mi" cpu: "500m" ports: - containerPort: <Port>
默认情况下,一个 Pod 只能与同一集群下的其他 Pod 进行通信。如果需要将 Pod 中的应用端口暴露,需要用到 Kubernates 中的另一个组件——Services/服务。
在 Kubernates 中提供了最原始的 NodePort 服务,可以将 Pod 中的应用端口暴露给外网。在此之上,Kubernates 还提供 LoadBalancer 和 Ingress 来实现更加复杂的负载均衡服务。
③ 在 deployment.yaml 文件中,使用 ---
来进行文件的分隔。输入 Service
可以提示生成最基本服务添加模版。
此处可以使用 selector
来指定应当将数据转发到哪一个 Port 上;type 可以指定服务转发的类型;nodePort 可以指定暴露到外网的端口(可省略该参数让 Kubernates 自动分配)。
至此,deployment.yaml 编写完成。
④ 安装 Minikube 工具:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
此时,如果安装了 Docker,则不需要安装 kubectl 工具,否则需要额外安装该工具。安装最新稳定版的命令:
# 下载最新版本的命令
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 二进制校验
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
# 安装 kubectl 工具
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
是否安装成功,使用 kubectl version
命令查看版本。
⑤ 使用命令部署应用:
kubectl apply <deployment.yaml/部署文件路径名称>
⑥ 使用命令查看相关状态:
# 查看 Pod 的运行状态
kubectl get pods
# 查看所有的服务
kubectl get services
⑦ 访问集群:
minikube service <ApplicationName>
如果部署的是 Web 服务,正常情况下,会直接在浏览器中打开服务。
⑧ 动态更新:
如果想要更新 Kubernates 中的某些配置,可以在修改 yaml 文件之后,重新执行 kubectl apply <FileName>
命令来完成。这个时候就会直接完成静默更新。
参考资料:
【Kubernetes (k8s) 10分钟快速入门】 https://www.bilibili.com/video/BV1DL4y187cL/?share_source=copy_web&vd_source=6de80ff9f17ce8c00bfb41f8d5c0afef
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。