当前位置: 首页 > news >正文

西安建网站哪家好企业网站蓝色模板下载

西安建网站哪家好,企业网站蓝色模板下载,百度cdn wordpress,网站制作与网页制作k8s,作为目前最流行的容器编排中间件,大家应该都听说过,很多公司也都在用,但基本都是运维在管理k8s,开发人员一般涉及不到,开发人员只需要写业务代码,然后运维人员负责制作镜像,然后…

k8s,作为目前最流行的容器编排中间件,大家应该都听说过,很多公司也都在用,但基本都是运维在管理k8s,开发人员一般涉及不到,开发人员只需要写业务代码,然后运维人员负责制作镜像,然后用k8s拉取镜像,启动容器,对外提供服务,这一套,现在都是自动化的,但是我觉着作为业务研发,也应该要清楚这一套流程的实现机制,这样在出问题的时候,可以多一些排查的思路,而不是只能干等着运维同事排查。
接下来,我就以一个python项目的启动过程举例,来看一下一个python项目是如何在k8s中部署起来的。

(1)、第一步,编写python的业务代码
(2)、第二步,使用预先写好的Dockerfile文件制作docker镜像,镜像中会包含执行python文件的命令定义
(3)、第三步,将docker镜像推到本地的镜像仓库,比如:docker提供的registry或者VMvare提供的harbor,后者是对registry的扩展,添加了很多企业级功能,目前大部分企业一般都用后者来管理镜像
(4)、第四步,编写k8s的的yaml文件,yaml文件中会指定从企业的镜像仓库拉取镜像,然后以此创建pod,对外提供服务

以上就是将一个python项目容器化启动的流程,下面我们具体操作一下。
先看一下目录

文章目录

  • 1、编写python的业务代码
  • 2、编写Dockerfile文件,制作docker镜像
    • 2.1、编写Dockerfile文件
    • 2.2、制作docker镜像
  • 3、将docker镜像推送到本地registry镜像仓库
    • 3.1、启动一个带认证功能的registry
      • 3.1.1、创建加密的用户名和密码文件
      • 3.1.2、启动带认证功能的registry
      • 3.1.3、验证认证功能
    • 3.2、推送docker镜像
  • 4、编写k8s的yaml文件
    • 4.1、创建kubenetes secret
    • 4.2、编写yaml文件
  • 5、根据yaml文件,创建pod

1、编写python的业务代码

这部分业务代码,参考了极客时间的<深入剖析kubernetes>专栏课。
这段python代码很简单,就是从环境变量里读取NAME的值,打印在hello后面,如果获取不到,就将world打印在hello后面。

from flask import Flask
import socket
import osapp = Flask(__name__)@app.route('/')
def hello():html = "<h3>Hello {name}!</h3>" \"<b>Hostname:</b> {hostname}<br/>"return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname())if __name__ == "__main__":app.run(host='0.0.0.0', port=80)

代码里,引用了flask框架来发布web服务,我们使用requirements.txt来声明我们引用的包,requirements.txt文件在python代码的同级目录下。

2、编写Dockerfile文件,制作docker镜像

2.1、编写Dockerfile文件

这个Dockerfile文件,也是参考极客时间的<深入剖析kubernetes>专栏课,每一行代码都是一个Dockerfile的命令原语。这些原语具体的含义,都做了注释

# 使用官方提供的Python开发镜像作为基础镜像,我们制作出来的镜像,就会包含python的基础开发环境
FROM python:2.7-slim# 将工作目录切换为/app,类似于一个cd /app命令
WORKDIR /app# 将当前目录下的所有内容复制到/app下
ADD . /app# 使用pip命令安装这个python应用所需要的依赖
RUN pip install --trusted-host pypi.python.org -r requirements.txt# 允许外界访问容器的80端口
EXPOSE 80# 设置环境变量
ENV NAME=World# 设置容器进程为:python app.py,即:这个Python应用的启动命令
CMD ["python", "app.py"]

2.2、制作docker镜像

docker build -t py_container .
-t意思是给这个镜像起一个名字,创建成功的话,使用docker image ls可以查看我们创建的这个镜像在这里插入图片描述

3、将docker镜像推送到本地registry镜像仓库

3.1、启动一个带认证功能的registry

3.1.1、创建加密的用户名和密码文件

# 安装工具,Ubuntu系统
apt-get install -y apache2-utils# 创建认证文件(用户:admin,密码:123456)
mkdir -p /opt/registry/auth
htpasswd -Bbn admin 123456 > /opt/registry/auth/htpasswd

3.1.2、启动带认证功能的registry

docker run -d -p 5000:5000 \--name registry \  -v /opt/registry/auth:/auth \-v /opt/registry/data:/var/lib/registry \-e "REGISTRY_AUTH=htpasswd" \-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \--restart always \registry:2

3.1.3、验证认证功能

我们访问一下我们此前推送到registry的镜像列表

root@1121-67dff6765fc00 # curl http://localhost:5000/v2/_catalog
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}

可以看到,认证失败。此时我们加上此前设置的用户名密码,就可以访问registry成功

root@1121-67dff6765fc00 # curl -u admin:123456 http://localhost:5000/v2/_catalog
{"repositories":["py-container"]}

3.2、推送docker镜像

#将我们此前制作的镜像打上一个tag
docker tag cf756704a3dc localhost:5000/py-container:0.0.1
#将打好tag的镜像推送到仓库
docker push localhost:5000/py-container:0.0.1

4、编写k8s的yaml文件

4.1、创建kubenetes secret

我们需要将这个regcred配置到yaml中,然后kubenetes就可以访问到需要认证才可以访问的本地registry

kubectl create secret docker-registry regcred \--docker-server=localhost:5000 \--docker-username=admin \--docker-password=123456

4.2、编写yaml文件

这个yaml文件很简单,就是创建了一个名为py-container-deployment的deployment,这个deployment管理了2个pod,pod的镜像从本地registry中拉取。yaml文件的末尾,我们增加了imagePullSecrets来引用此前创建的kubenetes secret,以此可以访问需要加密访问的registry

apiVersion: apps/v1
kind: Deployment
metadata:name: py-container-deployment
spec:selector:matchLabels:app: py-containerreplicas: 1template:metadata:labels:app: py-containerspec:containers:- name: py-podimage: localhost:5000/py-container:0.0.1ports:- containerPort: 80imagePullSecrets:- name: regcred

5、根据yaml文件,创建pod

kubectl create -f py_pod.yaml

查看pod的启动情况
在这里插入图片描述

http://www.dtcms.com/a/499616.html

相关文章:

  • 成都模板建站代理网站优化要做哪些工作
  • Java MyBatis(一)--- 注解和XML的使用
  • 东莞官方网站 优帮云网站怎么做推广和优化
  • win64_11gR2_client.zip 怎么安装?Oracle 11g 客户端详细安装步骤
  • 建设向58同城的网站给客户做网站需要提供
  • flink sql 所有函数详细用例
  • Flink 1.20 flink-config.yml 配置详解
  • 湖州网站集约化平台南京做网站哪家公司好
  • 【深度学习新浪潮】2025全球机器学习技术大会:Agent技术突破与产业落地全景解析
  • 长沙整站优化梅河口信息网
  • Linux入门:动静态库的理解与加载
  • 云上救火指南:AWS常见服务告警的快速恢复与最小影响方案
  • 九号线香网站建设淘客网站后台怎么做
  • FPGA 入门 3 个月学习计划表
  • 专业的做网站网站做外链好嘛
  • ios android 小程序 蓝牙 CRC16_MODBUS
  • 沧州网站建设优化案例怎么创建一个网站
  • 【小沐杂货铺】基于Three.js渲染三维风力发电机(WebGL、vue、react、WindTurbine)
  • Socket 网络编程
  • 哪里可以做网站网站兼容性怎么解决
  • 网站备案流程实名认证哪个平台做网站好
  • 最版网站建设案例中国建设银行开户行查询
  • 衡水网站制作多少钱世界著名产品设计作品
  • 我们如何更好地相处和协作?
  • Vlanif的作用
  • 62.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--自训练ML模型
  • 北京住房城乡建设网站秦皇岛手机网站制作公司
  • 【SpringBoot从初学者到专家的成长18】SpringBoot中的数据持久化:JPA与Hibernate的结合
  • Ubuntu服务器已下载Nginx安装包的安装指南
  • 高可用Prometheus问题集锦