您的位置:首页 > 汽车 > 时评 > 百度投放广告_上海建筑公司名称大全_网站设计与建设_免费seo推广计划

百度投放广告_上海建筑公司名称大全_网站设计与建设_免费seo推广计划

2024/12/28 14:41:06 来源:https://blog.csdn.net/m0_61634551/article/details/144332246  浏览:    关键词:百度投放广告_上海建筑公司名称大全_网站设计与建设_免费seo推广计划
百度投放广告_上海建筑公司名称大全_网站设计与建设_免费seo推广计划

Windows下Docker Desktop+k8s安装和部署程序

一、安装Docker Desktop+Kubernetes

1.需要安装windows版的docker

安装 Docker Desktop,启用Hyper-V、虚拟机平台和容器

https://www.docker.com/get-started/

2.启用Kubernetes

打开Docker-Desktop,启用Kubernetes

点击左上角:设置,选择Kubernetes选项卡,启用Kubernetes,点击 Apply & restart

安装好后

在这里插入图片描述

手动安装

请从Kubernetes https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/ 下载kubectl。找到最新的稳定版本并下载Windows版的kubectl.exe文件。

验证安装
kubectl version --shortClient Version: v1.27.2
Kustomize Version: v5.0.1
Server Version: v1.27.2

测试Kubernetes安装

运行以下命令检查Kubernetes是否正常运行:

kubectl get nodesNAME             STATUS   ROLES           AGE   VERSION
docker-desktop   Ready    control-plane   34m   v1.27.2

3.下载k8s-for-docker-desktop

下载地址:https://github.com/AliyunContainerService/k8s-for-docker-desktop
注意:需要根据Docker-Desktop的Kubernetes版本,选择对应的分支下载
例子:我的Kubernetes是v1.27.2
下载则是:https://github.com/AliyunContainerService/k8s-for-docker-desktop/tree/v1.27.2

安装

在Windows上,使用 PowerShell

 .\load_images.ps1
  • 如果因为安全策略无法执行 PowerShell 脚本,请在 “以管理员身份运行” 的 PowerShell 中执行 Set-ExecutionPolicy RemoteSigned 命令。
  • 如果需要,可以通过修改 images.properties 文件自行加载你自己需要的镜像

4.启用dashboard

cd F:\k8s-for-docker-desktop-1.27.2
kubectl create -f kubernetes-dashboard.yaml
kubectl proxy

配置控制台访问令牌

注意:然后另外打开一个Windows PowerShell,扫描到k8s解压的目录下
配置控制台访问令牌,授权kube-system默认服务账号

cd F:\k8s-for-docker-desktop-1.27.2
kubectl apply -f kube-system-default.yaml

查看控制台访问令牌
对于Windows环境,在k8s目录下用Windows PowerShell依次执行下面三行代码

$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
kubectl config set-credentials docker-desktop --token="${TOKEN}"
echo $TOKEN

访问Kubernetes仪表盘

通过如下 URL 访问 Kubernetes dashboard

http://127.0.0.1:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login

二、在Kubernetes上部署应用程序

1.创建demo程序

app/app.py

from flask import Flask, render_template, request, jsonify# Create Flask app instance
app = Flask(__name__)# Basic route that returns plain text
@app.route('/')
def home():return 'Welcome to Flask Demo!'# Route that returns HTML
@app.route('/hello/<name>')
def hello(name):return f'<h1>Hello, {name}!</h1>'# Route that renders a template
@app.route('/greet')
def greet():return render_template('greet.html', message='Welcome to our website!')# Route that handles POST requests
@app.route('/api/data', methods=['POST'])
def receive_data():data = request.get_json()return jsonify({'status': 'success','received_data': data})# Route with query parameters
@app.route('/search')
def search():query = request.args.get('q', '')return f'Search query: {query}'if __name__ == '__main__':app.run(debug=True)

app\templates\greet.html

<!DOCTYPE html>
<html lang="zh">
<head><title>Greeting Page</title>
</head>
<body><h1>{{ message }}</h1>
</body>
</html>

2.创建Dockerfile文件,构建Docker镜像

在项目的根目录中创建一个Dockerfile

# Use official Python image as base
FROM python:3.9-slim# Set working directory
WORKDIR /app# Set environment variables
ENV PYTHONDONTWRITEBYTECODE=1 \PYTHONUNBUFFERED=1 \FLASK_APP=app.py \FLASK_ENV=production# Install system dependencies
RUN apt-get update \&& apt-get install -y --no-install-recommends \gcc \python3-dev \&& rm -rf /var/lib/apt/lists/*# Install Python dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt# Copy application code
COPY . .# Expose port
EXPOSE 5000# Run the application
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]

运行

# Build the image
docker build -t flask-demo20241208 .# Run the container
docker run --rm -p 5000:5000 --name flask-demo20241208 flask-demo20241208

在这里插入图片描述
在这里插入图片描述

3.Kubernetes部署配置

在项目根目录中创建Kubernetes部署文件k8s-deployment.yaml, 以定义Kubernetes部署和服务。

apiVersion: apps/v1
kind: Deployment
metadata:name: flask-app-deployment20241208  # 部署的名称labels:app: flask-app20241208  # 给资源打标签,便于筛选和管理
spec:replicas: 2  # 定义副本数量以确保高可用selector:matchLabels:app: flask-app20241208  # 匹配 Pod 的标签,确保服务与 Pod 绑定template:metadata:labels:app: flask-app20241208  # Pod 的标签,需与 selector 对应spec:containers:- name: flask-app20241208  # 容器名称image: flask-app20241208:latest  # 使用构建的镜像名称和标签ports:- containerPort: 5000  # 容器内部监听的端口env:- name: FLASK_APPvalue: "app.py"  # 设置 Flask 的主程序文件- name: FLASK_ENVvalue: "production"  # 设置 Flask 的运行环境- name: PYTHONDONTWRITEBYTECODEvalue: "1"  # 禁止生成 .pyc 文件- name: PYTHONUNBUFFEREDvalue: "1"  # 设置 Python 日志为非缓冲模式resources:  # 资源限制requests:memory: "128Mi"  # 请求的最小内存cpu: "250m"  # 请求的最小 CPUlimits:memory: "256Mi"  # 最大允许使用的内存cpu: "500m"  # 最大允许使用的 CPUlivenessProbe:  # 存活探针,用于检测服务是否存活httpGet:path: "/"  # 检测的路径port: 5000  # 检测的端口initialDelaySeconds: 5  # 初始延迟periodSeconds: 10  # 检测间隔readinessProbe:  # 就绪探针,用于检测服务是否准备好接收流量httpGet:path: "/"  # 检测的路径port: 5000  # 检测的端口initialDelaySeconds: 5  # 初始延迟periodSeconds: 10  # 检测间隔restartPolicy: Always  # 容器策略:始终重启
---
apiVersion: v1
kind: Service
metadata:name: flask-app-service20241208  # 服务的名称labels:app: flask-app20241208  # 标签与 Deployment 一致
spec:selector:app: flask-app20241208  # 匹配 Deployment 的标签ports:- protocol: TCPport: 5000  # 服务暴露的端口targetPort: 5000  # 转发到容器的端口type: LoadBalancer  # 服务类型,LoadBalancer 用于云环境负载均衡

文件说明:

  1. Deployment 部分
    • 定义了 replicas 为 2,确保至少有两个 Pod 在运行,以提供高可用性。
    • 配置了 livenessProbereadinessProbe 探针,保证应用的健康状态和流量接收。
    • 使用了环境变量,保持和 Dockerfile 的配置一致。
    • 资源限制通过 resources 配置,避免容器占用过多资源。
  2. Service 部分
    • 定义了一个 LoadBalancer 类型的服务,使外部可以通过 HTTP 访问应用。
    • 将外部的 80 端口映射到容器的 5000 端口。
  3. 文件结构一致性
    • 镜像名 flask-app:latest,需要确保镜像在 Kubernetes 部署前已经构建并上传到容器注册表。

此文件适用于标准的 Flask 应用部署到 Kubernetes 集群中,并支持水平扩展和高可用配

4.在Kubernetes上部署应用程序

  1. 将部署应用于Kubernetes:
kubectl apply -f k8s-deployment.yamldeployment.apps/flask-app-deployment20241208 created
service/flask-app-service20241208 created

Deployment 资源
管理 Pod 的创建、更新和生命周期。

Service 资源
暴露应用(Pod)以便内部或外部访问。

2.验证部署和服务:

检查 Pod 的状态:
kubectl get pods
kubectl get deployments
kubectl get services

访问服务:

运行:

kubectl get svc flask-app-service20241208重启
kubectl rollout restart -n default deployment flask-app-deployment20241208

其他常用命令

删除部署
kubectl delete -n default deployment flask-app-deployment20241208
重启
kubectl rollout restart -n default deployment flask-demo-deployment20241208

在这里插入图片描述

通过执行这些步骤,您已经成功地在Windows机器上安装了Kubernetes,并将flask项目部署到了Kubernetes集群。此设置允许您利用容器化和编排的好处,为您的应用程序提供可扩展性、容错性和高效的资源管理。

常见问题

docker login失败

docker logout然后docker login 

Failed to pull image “flask-app20241208:latest”: rpc error: code = Unknown desc = Error response from daemon: pull access denied for flask-app20241208, repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied

镜像未推送到容器注册表:
flask-app20241208:latest 镜像可能仅存在于本地,尚未推送到公共或私有容器注册表登录 Docker Hub 或其他注册表:
docker login给镜像打标签,包含注册表地址(例如 Docker Hub):
docker tag flask-demo20241208:latest docker.io/username/flask-demo20241208:1.0推送镜像到注册表:
docker push docker.io/username/flask-demo20241208:1.0更新 k8s-deployment.yaml 中的镜像名称:
image: docker.io/username/flask-demo20241208:1.0

参考资料

https://www.cnblogs.com/heyangyi/p/18061223

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com