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上部署了一个自己开发的应用了。