k8s:py项目发布完整流程
k8s:py项目发布流程
1. 编写Dockerfile
# cat Dockerfile
FROM python:3.6-slim
USER root
RUN apt-get update && apt-get install gcc -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
ADD . /app
WORKDIR /app
RUN pip install -r requirement.txt
EXPOSE 8000
CMD [ "uvicorn", "main:app","--host", "0.0.0.0", "--port", "8000" ]
2. 验证Docker镜像
3. 编写Pod资源清单
要学会借鉴官网!!!,演示一遍
首先要问清楚业务是有状态还是无状态,无状态就选deployment,有状态就选statefulset。我这里是个小程序,无状态应用。

Kubernetes版本变化很快,搞k8s一定要学会看官网。
官方案例
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
改:是要标签对的上就OK了
##########################################################################
#Author: zisefeizhu
#QQ: 2********0
#Date: 2020-06-16
#FileName: delpoyment.yaml
#URL: https://www.cnblogs.com/zisefeizhu/
#Description: The test script
#Copyright (C): 2020 All rights reserved
###########################################################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: businesscard-deployment
spec:
selector:
matchLabels:
app: businesscard
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: businesscard
spec:
imagePullSecrets:
- name: business-card
containers:
- name: businesscard
imagePullPolicy: "IfNotPresent"
image: xxxxxx/business-card:v1
ports:
- containerPort: 8000
4. 编写Service清单
官方案例
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
改:标签对的上就OK!
cat service.yaml
##########################################################################
#Author: zisefeizhu
#QQ: 2********0
#Date: 2020-06-16
#FileName: service.yaml
#URL: https://www.cnblogs.com/zisefeizhu/
#Description: The test script
#Copyright (C): 2020 All rights reserved
###########################################################################
apiVersion: v1
kind: Service
metadata:
name: businesscard
spec:
#type: NodePort
selector:
app: businesscard
ports:
- protocol: TCP
port: 8000
5. 编写ingress清单
这块就要根据不同的ingress-controller 编写不同的ingress,比如nginx、traefik 等
##########################################################################
#Author: zisefeizhu
#QQ: 2********0
#Date: 2020-06-17
#FileName: nginx-ingress.yaml
#URL: https://www.cnblogs.com/zisefeizhu/
#Description: The test script
#Copyright (C): 2020 All rights reserved
###########################################################################
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: businesscard
spec:
# tls:
# - hosts:
# - businesscard.stage.realibox.com
# secretName: businesscard-ingress-secret
rules:
- host: card.linux.com
http:
paths:
- path: /
backend:
serviceName: businesscard
servicePort: 8000
6. 验证
资源pod、svc、ingress验证
# kubectl get pods,svc,ingress
NAME READY STATUS RESTARTS AGE
pod/businesscard-deployment-f69768dd9-zc56p 1/1 Running 1 26h
pod/nginx-deployment-6b474476c4-4644v 1/1 Running 0 4h28m
pod/nginx-deployment-6b474476c4-b2dwh 1/1 Running 0 4h28m
pod/nginx-deployment-6b474476c4-hdsgv 1/1 Running 0 4h28m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/businesscard ClusterIP 10.68.32.93 <none> 8000/TCP 25h
service/kubernetes ClusterIP 10.68.0.1 <none> 443/TCP 3d11h
service/nginx ClusterIP 10.68.185.184 <none> 80/TCP 4h28m
NAME CLASS HOSTS ADDRESS PORTS AGE
ingress.extensions/businesscard <none> card.linux.com 80 6h11m
ingress.extensions/ingress-test <none> test.ingress.com 80 24h
ingress.extensions/nginx <none> nginx.linux.com 80 4h28m
客户端验证

验证成功。
k8s:py项目发布完整流程的更多相关文章
- IIS项目发布完整流程
第一步: 发布项目 使在IIS上发布是防止源码泄露 第二步: 打开IIS(如果没有就自己安装一个)打开IIS步骤 控制面板>系统安全>管理工具>IIS管理器 填写网站的名称和之前发布 ...
- 建立django项目的完整流程
简单的django登录项目 1.首先建立工程,建立工程请参照:https://www.cnblogs.com/effortsing/p/10394511.html 2.在Firstdjango工程项目 ...
- IOS App打包发布完整流程
注册成为开发者 登录苹果开发者中心,点击Accounts,在这里需要你填写你的Appple ID进行登录,如果没有,点击这里申请一个,填写信息就成,这里就不再赘述.申请完成之后,使用申请的AppID进 ...
- 服务端技术进阶(一)web项目的部署(发布)流程
web项目的部署(发布)流程 在myeclipse下新建web工程abc.系统设置默认如下: 项目保存位置:workspace目录\abc.Source文件夹:src,保存所有的java类文件(.ja ...
- 将项目发布到Maven中央仓库的不完整纪要
背景 有几个Utils性质的Jar需要跨项目引用,原本想部署私有Maven仓库,后来感觉太麻烦,索性直接发布到中央库,引用时也方便. 发布成功之后,觉得某些细节还是有必要记录一下. 资源 Sonaty ...
- Linux项目发布流程
Linux项目发布流程(一) 1.安装pyhton3.7 的依赖包 yum -y groupinstall "Development tools" yum -y install z ...
- jenkins+docker+k8s项目发布
目录 一.简介 二.新建docker-build工程 三.项目部署 四.访问测试 一.简介 1.该章节基于jenkins.Harbor.pipeline.k8s来做发布,如对这些不熟悉,请按以下进入学 ...
- 单点登录(十三)-----实战-----cas4.2.X登录启用mongodb验证方式完整流程
我们在之前的文章中中已经讲到了正确部署运行cas server 和 在cas client中配置. 在此基础上 我们去掉了https的验证,启用了http访问的模式. 单点登录(七)-----实战-- ...
- 基于 K8s 做应用发布的工具那么多, 阿里为啥选择灰姑娘般的 Tekton ?
作者 | 邓洪超,阿里云容器平台工程师, Kubernetes Operator 第二人,云原生应用标准交付与管理领域知名技术专家 导读:近年来,越来越多专门给 Kubernetes 做应用发布的 ...
随机推荐
- Web 前端必备的各种跨域方式汇总
Web 前端必备的各种跨域方式汇总 跨域方式汇总 同源策略 协议相同 + 域名相同 + 端口相同 https://www.xgqfrms.xyz/index.html https://www.xgqf ...
- 微信公众号 & 付费阅读
微信公众号 & 付费阅读 付费功能 付费阅读 付费功能使用说明 1.付费功能介绍 开通了付费功能的公众号,运营者可以在编辑时对原创文章的部分或全部内容设置收费.对于付费图文,用户未付费前可免费 ...
- c++ 遍历当前程序的线程
#include <iostream> #include <Windows.h> #include <Psapi.h> #include <TlHelp32. ...
- lua调用dll导出的函数
参考手册 hello.dll #include "pch.h" #include "lua.hpp" #pragma comment(lib, "lu ...
- NGK公链存储技术,如何开创应用落地新格局?
尽管无人预测未来,但是资本的眼光总是那么灵敏,最近几年,国际资本市场纷纷将目光投到了公链市场上.从TPS高点备受抢占,再到DApp生态的不断涌现,再到目前Staking和Defi的新概念生态的不断发力 ...
- [转]hpp.h与.h的区别
原文网址:https://blog.csdn.net/liuzhanchen1987/article/details/7270005 hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实 ...
- H5 常见问题汇总及解决方案
原文链接:http://mp.weixin.qq.com/s/JVUpsz9QHsNV0_7U-3HCMg H5 项目常见问题汇总及解决方案 -- 由钟平勇分享 转自 https://github.c ...
- display: inline、block、inline-block、flex和inline-flex
inline 共享一行 不能修改width.height属性,大小由内容撑开 padding属性 top.right.bottom.left设置都有效:margin属性只有left.right设置有效 ...
- 使用python编写量子线路打印的简单项目,并使用Sphinx自动化生成API文档
技术背景 该文章一方面从量子线路的打印着手,介绍了一个简单的python量子线路工程.同时基于这个简单的小工程,我们顺带的介绍了python的API文档自动化生成工具Sphinx的基本使用方法. 量子 ...
- list.add(int index, E element)和list.addAll(list1)
List.add(int index, E element): 在列表的指定位置插入指定元素(可选操作).将当前处于该位置的元素(如果有的话)和所有后续元素向右移动(在其索引中加 1). 参数:ind ...