k8s最佳应用部署方案,k8s快速部署平台

首页 > 技术 > 作者:YD1662023-04-18 02:34:50

Kubernetes节点是集群里运行工作负载的工作机器(物理的VM或者物理服务器等)。这些节点由Kubernetes master控制,并且通过持续监控来维护应用程序的预期状态。之前它们被称为minion。和master类似,集群里的每个Kubernetes节点运行两个进程:

投票应用

k8s最佳应用部署方案,k8s快速部署平台(9)

这里开始尝试在Kubernetes上实际运行一个应用程序。不过首先需要在本地安装并运行Kubernetes。

安装Kubernetes

现在,Kubernetes在Docker社区版17.12 里开箱即用。如果你没有安装社区版,可以在https://www.docker.com/community-edition下载。

安装MiniKube

在本地运行Kubernetes,需要安装MiniKube。它会创建一个本地的VM并且运行一个单节点集群。不要在这上面运行生产集群。它最好仅用来做开发和测试。

单节点集群

要运行一个单节点集群,我们仅仅需要运行minikube start命令。然后,一个VM,一个集群和Kubernetes就运行起来了。

$ minikube start

Starting local Kubernetes v1.10.0 cluster...

Starting VM...

Getting VM IP address...

Moving files into cluster...

Setting up certs...

Connecting to cluster...

Setting up kubeconfig...

Starting cluster components...

Kubectl is now configured to use the cluster.

Loading cached images from config file.

运行kubectl version来验证环境搭建成功,同时检查Kubernetes的版本。

$ kubectl version

Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.1", GitCommit:"3a1c9449a956b6026f075fa3134ff92f7d55f812", GitTreeState:"clean", BuildDate:"2018-01-04T20:00:41Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"darwin/amd64"}

Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"clean", BuildDate:"2018-03-26T16:44:10Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

投票应用

这是一个基于微服务架构的简单应用,包括5个简单的服务。

k8s最佳应用部署方案,k8s快速部署平台(10)

  1. Voting-App:应用前端,用Python编写,用户使用它来投票
  2. Redis:内存内数据库,作为实时存储使用
  3. Worker:.Net服务,从Redis里获得投票并存储到Postgres数据库里
  4. DB:PostgreSql数据库,用作数据库。
  5. Result-App:应用前端,用Node.js编写,展示投票结果。

Git clone并且cd到投票应用程序的代码库里。

“k8s-specifications”文件夹里包含该投票应用服务的Kubernetes yaml定义。每个服务有两个yaml文件:一个服务文件和一个部署文件。服务文件定义pod的逻辑组及其策略。下面是投票程序里结果服务的服务文件:

apiVersion: v1

kind: Service

metadata:

name: result

spec:

type: NodePort

ports:

- name: "result-service"

port: 5001

targetPort: 80

nodePort: 31001

selector:

app: result

部署文件用来定义应用程序的预期状态,比如任意时间点应该运行着的副本数量。如下是投票应用的结果部署文件。

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

name: result

spec:

replicas: 1

template:

metadata:

labels:

app: result

spec:

containers:

- image: dockersamples/examplevotingapp_result:before

name: result

创建服务和部署对象:

$ kubectl create -f k8s-specifications/

deployment "db" created

service "db" created

deployment "redis" created

service "redis" created

deployment "result" created

service "result" created

deployment "vote" created

service "vote" created

deployment "worker" created

已经好了!你的应用已经被成功部署到这个单节点集群里,可以查看运行着的Pod和服务的列表。

$ kubectl get pods

NAME READY STATUS RESTARTS AGE

db-86b99d968f-s5pv7 1/1 Running 0 1m

redis-659469b86b-hrxqs 1/1 Running 0 1m

result-59f4f867b8-cthvc 1/1 Running 0 1m

vote-54f5f76b95-zgwrm 1/1 Running 0 1m

worker-56578c48f8-h7zvs 1/1 Running 0 1m

$ kubectl get svc

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

db ClusterIP 10.109.241.59 <none> 5432/TCP 2m

kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23m

redis ClusterIP 10.102.242.148 <none> 6379/TCP 2m

result NodePort 10.106.7.255 <none> 5001:31001/TCP 2m

vote NodePort 10.103.28.96 <none> 5000:31000/TCP 2m

投票应用暴露在30001端口,结果应用暴露在31001端口。你可以使用localhost:port来访问应用。还可以使用IP访问,IP可以通过minikube ip命令得到。

k8s最佳应用部署方案,k8s快速部署平台(11)

k8s最佳应用部署方案,k8s快速部署平台(12)

上一页1234下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.