欢迎光临
我们一直在努力

k8s入门2-将程序发部到k8s

k8s已经安装完成了,接下来就想实际使用一下了。

先把思路整理成一张简单的图:

通过设计图,可以看出来,主要由两部分组成,1部分是文件,2部分的命令。通过这两部分就可以完成任务。

首先我先创建一个app.py文件。

这个就是实际需要执行的业务。这里是一个hello world的简单小程序。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello, Kubernetes!'

@app.route('/health')
def health_check():
return 'OK', 200

if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)

第2步为了使程序运行起来,需要配置python运行环境。通过requirements.txt文件来实现,文件内容如下:

Flask==2.3.3

命令行安装一下环境

pip install –no-cache-dir -r requirements.txt

接下来,先在本地测试一下。python app.py。

 * Running on all addresses (0.0.0.0)
 * Running on http://127.0.0.1:5000
 * Running on http://192.168.33.74:5000
Press CTRL+C to quit

如果可以看到以上信息,则说明测试成功了。

接下来,我们创建docker镜像。

创建dockerfile.

FROM python:3.10-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install –no-cache-dir -r requirements.txt

COPY app.py .

EXPOSE 5000

CMD ["python", "app.py"]

创建镜像

docker build -t hello-k8s:latest .

(TraeAI-4) D:\\LEO\\project\\test3\\k8s-test [1:0] $ docker build -t hello-k8s:latest .
[+] Building 0.3s (10/10) FINISHED docker:desktop-linux
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 204B 0.0s
=> [internal] load metadata for docker.io/library/python:3.10-slim 0.1s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/5] FROM docker.io/library/python:3.10-slim@sha256:70f65c721aaddfb22b20ed6ec12606c59d9592493c5 0.0s
=> => resolve docker.io/library/python:3.10-slim@sha256:70f65c721aaddfb22b20ed6ec12606c59d9592493c5 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 85B 0.0s
=> CACHED [2/5] WORKDIR /app 0.0s
=> CACHED [3/5] COPY requirements.txt . 0.0s
=> CACHED [4/5] RUN pip install –no-cache-dir -r requirements.txt 0.0s
=> CACHED [5/5] COPY app.py . 0.0s
=> exporting to image 0.1s
=> => exporting layers 0.0s
=> => exporting manifest sha256:14484ee5ad887573cfd12ac62cbf7eb5547ff03226021a1c4234d5e12b02f89b 0.0s
=> => exporting config sha256:d69d28bf3d152a2e5b862be56583bac59c13ab81873688aa94be4c2403458c43 0.0s
=> => exporting attestation manifest sha256:3752a877e2f72a934e2ab20ebba7f2c45da6956a44e5fbe16a3c035 0.0s
=> => exporting manifest list sha256:1f6514df860bdc38626c9989bbacd3884019f056e3a70aeb84db30f89ad0b2 0.0s
=> => naming to docker.io/library/hello-k8s:latest 0.0s
=> => unpacking to docker.io/library/hello-k8s:latest

如果可以看到以上信息,则也说明镜像创建成功了。

最后启动k8s命令如下:

准备k8s用到的配置文件deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-k8s-deployment
labels:
app: hello-k8s
spec:
replicas: 3
selector:
matchLabels:
app: hello-k8s
template:
metadata:
labels:
app: hello-k8s
spec:
containers:
– name: hello-k8s
image: hello-k8s:latest
ports:
– containerPort: 5000
livenessProbe:
httpGet:
path: /health
port: 5000
initialDelaySeconds: 5
periodSeconds: 10
readinessProbe:
httpGet:
path: /health
port: 5000
initialDelaySeconds: 5
periodSeconds: 5

apiVersion: v1
kind: Service
metadata:
name: hello-k8s-service
spec:
type: NodePort
selector:
app: hello-k8s
ports:
– protocol: TCP
port: 80
targetPort: 5000
nodePort: 30007

启动这个配置

kubectl apply -f deployment.yaml

(TraeAI-4) D:\\LEO\\project\\test3\\k8s-test [0:0] $ kubectl apply -f deployment.yaml
deployment.apps/hello-k8s-deployment unchanged
service/hello-k8s-service unchanged

如果看到以上输出则说明已经成功了。

整体回顾一下

第一步准备要运行的程序,确保本地可以运行。

第二步创建docker镜像,这步需要准备dockerfile文件。

第三步部署到k8s上,这步需要development这个文件。

以上三部完成,就成功的在k8s上部署了一个自己开发的应用了。

赞(0)
未经允许不得转载:171主机测评 » k8s入门2-将程序发部到k8s
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址