window环境下使用k8s部署.net core项目

news2025/1/18 9:05:20

前提:已经部署镜像到Docker

在项目发布目录下新建.yaml文件,内容如下(以下仅举例出两种方式内容,可按需自由配置)
 --方式一(创建deployment 、服务、指定命名空间)

# ------------------- 注意层级结构,层级不对构建会报错 ------------------- #
apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8s-api-demo
  namespace: k8s-api
  labels:
    k8s-app: k8s-api-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: k8s-api-demo
  template:
    metadata:
      labels:
        k8s-app: k8s-api-demo
    spec:
      containers:
      - name: k8s-api-demo
        image: demoapifordocker # 定义Pod启动的容器镜像地址
        imagePullPolicy: IfNotPresent # k8s默认值为Always,总是从远端拉取镜像,通过设置IfNotPresent或Never来使用本地镜像
        ports:
        - containerPort: 80
---
# ------------------- Service ------------------- #
kind: Service
apiVersion: v1
metadata:
   labels:
     k8s-app: k8s-api-demo
   name:k8s-api-demo
   namespace: k8s-api
spec:
   type: NodePort
   ports:
     - port: 80
       targetPort: 80
   selector:
     k8s-app: k8s-api-demo

在发布目录按住shift+加右键打开powerShell,按顺序执行以下命令

--创建yaml文件中的命名空间

kubectl create namespace k8s-api

--根据yaml配置文件构建
kubectl create -f 文件名.yaml


到这一步如果没有报错信息,那就已经完成部署

--查看端口,http://localhost:端口号

kubectl get svc -n k8s-api

--查看容器运行状态

kubectl get pod -n k8s-api

 映射到本机端口访问(port-forward 对应pod名称)

kubectl port-forward k8s-api-68bbbbc657-cqzjn -n k8s-api 8091:80

但对于外部依旧无法访问,如果需要暴露供外部直接访问,则需要创建 service

kubectl expose pod k8s-api-pod --name k8s-api-service --type=NodePort

获取服务

kubectl get service

服务会有一个CLUSTER-IP,可以在集群内使用CLUSTER-IP:80来访问该服务,如果是在集群外部,可以使用NodeIP:端口(节点所在服务器IP)来访问。


--方式二

 直接构建pod

apiVersion: v1
kind: Pod # 定义Kubernetes资源的类型为Pod
metadata:
  name: k8s-api-pod # 定义资源的名称
  labels: # 为Pod贴上标签,后面会介绍其用处
    app: k8s-api-pod
spec: # 定义资源的状态,对于Pod来说,最重要属性就是containers
  containers: # containers一个数组类型,如果你希望部署多个容器,可以添加多项
    - name: coreapi # 定义本Pod中该容器的名称
      image: demofordocker # 定义Pod启动的容器镜像地址
      imagePullPolicy: IfNotPresent # k8s默认值为Always,总是从远端拉取镜像,通过设置IfNotPresent或Never来使用本地镜像
      ports:
        - containerPort: 80 # 定义容器监听的端口(与Dockerfile中的EXPOSE类似,只是为了提供文档信息)
      livenessProbe: # 存活探针定义
        httpGet:
          path: /swagger/index.html # 存活探针请求路径
          port: 80 #存活探针请求端口

在发布目录按住shift+加右键打开powerShell,按顺序执行以下命令

kubectl create -f 文件名.yaml

(构建在默认命名空间(default)下)

kubectl get pod

映射到本机端口访问(port-forward 对应pod名称)

kubectl port-forward k8s-api-68bbbbc657-cqzjn -n k8s-api 8091:80

但对于外部依旧无法访问,如果需要暴露供外部直接访问,则需要创建 service

kubectl expose pod k8s-api-pod --name k8s-api-service --type=NodePort

获取服务

kubectl get service

服务会有一个CLUSTER-IP,可以在集群内使用CLUSTER-IP:80来访问该服务,如果是在集群外部,可以使用NodeIP:端口(节点所在服务器IP)来访问。

部署遇到的一些问题

--get deploymentment获取不到

后面加 -n kube-system

--命名空间查询: kubectl get namespace

--部署后运行失败,pod状态显示 ImagePullBackOff或者ErrPullOff

 这种情况是因为yaml文件中未配置从本地镜像获取,导致去线上拿;需要删除后重新开始

可通过执行以下命令查看pod Events中记录的错误记录,默认命名空间下可省略 -n 命名空间名

kubectl describe pod pod名称 -n 命名空间名


--删除pod

kubectl delete pod pod名 -n 命名空间名
 直接执行删除pod指令,会发现删除之后还是又会产生一个新的,实际上删除对应deployment即可

查询deployment

kubectl get deployment -n 命名空间名

删除deployment

kubectl delete deployment deployment名 -n 命名空间名

此时再查询命名空间下pod,可以看到已经没有了

参考以下文章:

.NET Core + K8S 玩转容器编排 - 「圣杰」 - 博客园 (cnblogs.com)

(二)搭建dotNetCore项目发布到k8s - 一滴雨、₯㎕ - 博客园 (cnblogs.com)
k8s中正确删除一个pod - effortsing - 博客园 (cnblogs.com)
k8s 创建删除命名空间--namespace_k8s create --names-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1496491.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多线程系列(十五) -常用并发工具类详解

一、摘要 在前几篇文章中,我们讲到了线程、线程池、BlockingQueue 等核心组件,其实 JDK 给开发者还提供了比synchronized更加高级的线程同步组件,比如 CountDownLatch、CyclicBarrier、Semaphore、Exchanger 等并发工具类。 下面我们一起来…

嵌入式工程师必备知识点

嵌入式工程师必备知识点 一、基础知识与理论二、编程语言与工具三、嵌入式操作系统四、通信协议与接口技术五、设计与测试 嵌入式工程师作为现代电子工程领域的核心角色,其职责涵盖了从硬件设计、软件开发到系统测试等多个方面。为了胜任这一职位,嵌入式…

一次一对一服务引起的沉思和笑话

前情提要 客户需求: 分析页面代码和接口请求协议和参数需求,将人工下载视频怎么获得最终的视频链接,这一逻辑清晰的展示并讲解清除。我询问了是否需要成品爬虫,他说代码他自己能搞定。 我给的价格选择: 第一种、首…

mac 下redis

安装 Redis brew install redis 安装完成后,我们可以使用以下命令来确认 Redis 是否正确安装: redis-cli ping 启动 Redis redis-server 后台启动 Redis,可以使用以下命令: redis-server --daemonize yes 指定配置文件启动…

Sentinel 面试题及答案整理,最新面试题

Sentinel的流量控制规则有哪些,各自的作用是什么? Sentinel的流量控制规则主要包括以下几种: 1、QPS(每秒查询量)限流: 限制资源每秒的请求次数,适用于控制高频访问。 2、线程数限流&#xf…

C--8--解决因配置文件中字符编码不一致问题导致的错误

1、介绍: ASCII 1个字节1个文字 ANSI 2个字节1个文字 UNICODE 3或4个甚至更多字节1个文字 ASCII、ANSI、UNICODE这三种压缩后,变为UTF-8、UTF-16、UTF-32。 ASCII、ANSI、UNICODE 是字符编码,即给全世界每…

1.2_3 TCP/IP参考模型

文章目录 1.2_3 TCP/IP参考模型(一)OSI参考模型与TCP/IP参考模型(二)5层参考模型(三)5层参考模型的数据封装与解封装 1.2_3 TCP/IP参考模型 (一)OSI参考模型与TCP/IP参考模型 TCP/I…

open-spider开源爬虫工具:抖音数据采集

在当今信息爆炸的时代,网络爬虫作为一种自动化的数据收集工具,其重要性不言而喻。它能够帮助我们从互联网上高效地提取和处理数据,为数据分析、市场研究、内容监控等领域提供支持。抖音作为一个全球性的短视频平台,拥有海量的用户…

哈希专题 - leetcode 1. 两数之和 - 简单难度

leetcode 1. 两数之和 leetcode 1. 两数之和 简单难度 哈希1. 题目详情1. 原题链接2. 基础框架 2. 解题思路1. 题目分析2. 算法原理3. 时间复杂度 3. 代码实现4. 知识与收获 leetcode 1. 两数之和 简单难度 哈希 1. 题目详情 给定一个整数数组 nums 和一个整数目标值 target…

万马合一之js解答

输入m和n 两个数,m和n表示一个mn 的棋盘。输入棋盘内的数据。棋盘中存在数字和".“两种字符,如果是数字表示Q该位置是一匹马,如果是”."表示该位置为空的,棋盘内的数字表示为该马能走的最大步数。例如棋盘内某个位置一个…

ICCV 2023 超分辨率(Super-Resolution)论文汇总

文章目录 图像超分辨率(Image Super-Resolution) 1、经典图像超分辨率(Classical image SR) 2、基于参考的图像超分辨率(Reference-Based image SR) 3、高效&轻量化图像超分辨率(Efficient/…

Unity引擎关于APP后台下载支持的实现问题

1)Unity引擎关于APP后台下载支持的实现问题 2)Prefab对DLL中脚本的引用丢失 3)Unity DOTS资源加载问题 4)UnitySendMessage和_MultiplyMatrixArrayWithBase4x4_NEON调用导致崩溃 这是第376篇UWA技术知识分享的推送,精选…

Unity背景模糊图片高斯模糊高性能的实现方案

环境: unity2021.3.x 效果: 模糊前: 模糊后: 模糊前: 模糊后: 实现核心思路(shader): SubShader {CGINCLUDE#include "UnityCG.cginc"sampler2D _MainTex; // 主纹理half4 _MainTe…

CubeMX入门教程(1)——环境搭建

目录 1、为什么要用CubeMX? 2、如何安装CubeMX? 3、HAL固件库的安装 1、为什么要用CubeMX? STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C …

BUUCTF---[极客大挑战 2019]BabySQL1

1.这道题和之前做的几道题是相似的,这道题考的知识点更多。难度也比之前的大一些 2.尝试万能密码 or 1#发现过滤了or,使用1和1,发现他对单引号也进行了过滤。于是我尝试进行双写绕过,发现可以通过了。 3.由之前的做题经验可知,这道题会涉及到…

wps没保存关闭了怎么恢复数据?恢复文件教程

Microsoft Word是我们不可或缺的工具。很多小伙伴都遇到在WPS中编辑文件时,它可能会突然闪退,或者忘记及时保存文件就直接关闭了,导致我们辛苦编辑的文档丢失。面对这种情况我们该如何应对,尽量减小损失呢?接下来让我为…

Java - Spring MVC 实现跨域资源 CORS 请求

据我所知道的是有三种方式:Tomcat 配置、拦截器设置响应头和使用 Spring MVC 4.2。 设置 Tomcat 这种方式就是引用别人封装好的两个 jar 包,配置一下web.xml就行了。我也并不推荐,这里放两个我在网上找到的配置相关文章,感兴趣可…

遥感分析时什么情况下需要做大气校正?

经常会遇到这样的问题:什么情况需要做大气校正产生?这个问题取决于传感器和应用目标,总的来说,如果要做光谱分析,那么大气校正是必须要做的。本文对于在什么情况下选择什么样的大气校正方法,给出了一些依据…

(3)(3.3) MAVLink高延迟协议

文章目录 前言 1 配置 2 说明 3 消息说明 前言 ArduPilot 支持 MAVLink 高延迟协议(MAVLink High Latency)。该协议专为卫星或 LoRA 等低带宽或高成本链路而设计。 在此协议中,每 5s 只发送一次 HIGH_LATENCY2 MAVLink 信息。对 MAVLink 命令或请求&#xff08…

今日头条 _signature逆向分析

声明:本文仅作学习交流,请遵守法律法规,不要恶意爬取网站。 网址:aHR0cHM6Ly93d3cudG91dGlhby5jb20v 接口:aHR0cHM6Ly93d3cudG91dGlhby5jb20vaG90LWV2ZW50L2hvdC1ib2FyZC8 本文提到的接口是头条的今日热榜接口&…