k8s部署restful服务

它的目录格式如下,一切操作都是在当前目录上操作的,在linux环境下操作

在已经安装docker k8s的基础上,首先是创建镜像,我们这里面代码用的是python,实现的功能是两个数相除。

创建镜像时有三个文件Dockerfile, requirements.txt, divide.py

Dockerfile的内容


FROM python:3.6.3  // FROM:指定创建镜像的基础镜像
COPY . /divide // 复制宿主机数据到镜像内部使用
WORKDIR /divide //工作目录,类似于cd命令
RUN pip install -r requirements.txt // 运行Linux系统的命令使用
ENTRYPOINT ["python"] //指定运行容器启动过程执行命令,覆盖CMD参数
CMD ["divide.py"] // 指定容器启动执行的命令;启动容器中的服务

requirements.txt

flask
flask_restful

divide.py

from flask import Flask
from flask_restful import reqparse, Api, Resource

app = Flask(__name__)
api = Api(app)

parser = reqparse.RequestParser()

parser.add_argument('a')
parser.add_argument('b')
class PredictSentiment(Resource):
    def get(self):
        # use parser and find the user's query
        args = parser.parse_args()
        a, b = args['a'], args['b']
        c = int(a) / int(b)

        return {'result': c, }

# Setup the Api resource routing here
# Route the URL to the resource
api.add_resource(PredictSentiment, '/')

if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0')
app.run(debug=False)

最开始app.run()中的参数如下,

在我本机跑这个divide.py的时候通过http://127.0.0.1:5000/?a=1&b=2访问是好使的,但是制作完docker 镜像后http://127.0.0.1:5000/?a=1&b=2,访问不到,我也不知道是为什么,加一个host参数就好使了,但是地址前缀变为http://172.22.101.85/,具体什么原理我也不知道。

制作docker 

docker build -t divide:1.0 .

大家千万别忘了后面有个 . 

我一般建完镜像后都会运行一下该镜像是否好使,否则怕创建k8s服务出错,不知道是谁的问题

docker run -it -p 5000:5000 divide:1.0

运行完之后,如果好使,就会出现一个地址直接访问就ok了,

但是我这里有一个bug, 因为这个地址是带两个参数的,我用curl,访问的时候就好像只能传一个参数,我不知道为什么,还没有解决

接下来就是k8s中的内容了

创建pod.yaml

apiVersion: v1
kind: Pod
metadata: 
  name: restful-divide
  labels:
    app: divide
spec:
  containers:
    - name: divide
      image: multiply:1.0
      ports:
        - containerPort: 5000
      imagePullPolicy: Never

kubectl create -y pod.yaml

imagePullPolicy: Never 这个非关键,要不然可能会要把本地制作的镜像先传到dockerhub,再拉下来才能使用

创建svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: restful-divide-svc
spec:
  selector:
    app: divide
  type: NodePort
  ports:
    - protocol: TCP
      port: 5000
      targetPort: 5000

kubectl create -y svc.yaml

就创建成功了

kubectl get svc

就可以查到端口号了

就可以访问了

但是有两个bug,什么时候有时间再説吧

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你好!对于Kubernetes(k8s部署HugeGraph,你可以按照以下步骤进行操作: 1. 首先,你需要创建一个HugeGraph的Kubernetes部署配置文件。你可以使用YAML或JSON格式的文件来描述你的部署配置。配置文件中应包含有关HugeGraph服务的信息,例如镜像名称、端口映射、卷挂载和环境变量等。 2. 接下来,你可以使用kubectl命令或Kubernetes管理界面(如Dashboard)来创建一个HugeGraph的Kubernetes部署。例如,你可以使用以下kubectl命令来创建一个名为"hugegraph-deployment"的部署: ``` kubectl create -f hugegraph-deployment.yaml ``` 其中,"hugegraph-deployment.yaml"是你之前准备的部署配置文件。 3. 一旦部署成功,你可以使用kubectl命令或Kubernetes管理界面来检查HugeGraph部署的状态。例如,你可以使用以下命令来获取HugeGraph部署的Pod信息: ``` kubectl get pods ``` 这将显示HugeGraph部署的所有Pod及其状态。 4. 如果HugeGraph部署成功并且所有Pod都正常运行,你可以通过服务暴露访问HugeGraph。你可以使用kubectl命令或Kubernetes管理界面来获取服务的外部IP地址和端口号。例如,你可以使用以下命令来获取HugeGraph服务的信息: ``` kubectl get services ``` 这将显示HugeGraph服务的名称、类型、Cluster IP、外部 IP 和端口等信息。 5. 一旦你获取了HugeGraph服务的外部IP地址和端口号,你就可以使用任何兼容HTTP协议的工具(如浏览器、cURL或Postman等)来访问HugeGraph。通过向HugeGraph服务发送RESTful API请求,你可以执行各种图数据库操作。 以上是一个基本的步骤概述,你可以根据你的具体需求和环境来进行调整和配置。希望对你有所帮助!如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值