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

前提:已经部署镜像到Docker

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

# ------------------- 注意层级结构,层级不对构建会报错 ------------------- #
apiVersion: apps/v1
kind: Deployment
metadata:name: k8s-api-demonamespace: k8s-apilabels:k8s-app: k8s-api-demo
spec:replicas: 1selector:matchLabels:k8s-app: k8s-api-demotemplate:metadata:labels:k8s-app: k8s-api-demospec:containers:- name: k8s-api-demoimage: demoapifordocker # 定义Pod启动的容器镜像地址imagePullPolicy: IfNotPresent # k8s默认值为Always,总是从远端拉取镜像,通过设置IfNotPresent或Never来使用本地镜像ports:- containerPort: 80
---
# ------------------- Service ------------------- #
kind: Service
apiVersion: v1
metadata:labels:k8s-app: k8s-api-demoname:k8s-api-demonamespace: k8s-api
spec:type: NodePortports:- port: 80targetPort: 80selector: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来说,最重要属性就是containerscontainers: # 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.mzph.cn/news/726369.shtml

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

相关文章

电脑远程桌面选项变成灰色没办法勾选怎么办?

有些人在使用Windows系统自带的远程桌面工具时,会发现系统属性远程桌面选项卡中勾选启用“允许远程连接到此计算机”。 导致此问题出现的原因主要是由于组策略或者注册表设置错误造成的。 修复远程桌面选项变灰的两种方法! 方法一:设置本地组…

从spark streaming与structured streaming看spark core与spark sql的区别

导读 Spark中针对流式数据处理的方案有: Spark StreamingStructured Streaming 本文通过对比spark streaming与structured streaming,来深入理解spark core与spark sql的区别。 Spark Streaming 基于微批(DStream) Spark Streaming是基于微批(Micro batc…

1.【Labview白话系列】Labview数组精讲

题主经过写文章一段时间的发现,许多同学对该软件的理解和编程能力是不太一样的,有些知识相对一些同学较为简单,但是有些同学提问就比较困难。那么针对这个问题,题主打算出一期说白话系列的专栏,在该栏目中用最通俗的大…

pycharm手动安装常用插件

下载插件 (1)下载地址:JetBrains Marketplace 这里以语言包为例子 2、中文语言包 进入pycharm中的设置,点击plugins,选从磁盘中安装插件

六、矩阵问题

73、矩阵置零(中等) 题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a…

应用案例 | Softing echocollect e网关助力汽车零部件制造商构建企业数据库,提升生产效率和质量

为了提高生产质量和效率,某知名汽车零部件制造商采用了Softing echocollect e多协议数据采集网关——从机器和设备中获取相关数据,并直接将数据存储在中央SQL数据库系统中用于分析处理,从而实现了持续监控和生产过程的改进。 一 背景 该企业…

【国家机关办公建筑 大型公共建筑的能耗监测、集中统一管理】安科瑞能耗监测系统整体解决方案

背景 为全面推进大型公建节能管理工作,需建立大型公建节能监管体系,逐步建立起全国联网的大型公建能耗监测平台,在大型公建安装分项计量装置,通过远程传输等手段及时采集分析能耗数据,实现对大型公建的实时动态监测、汇…

Docker数据卷的挂载

目录 1 概念 2 常用命令 3 操作步骤(主要讲在创建容器时的挂载) 3.1 挂载在默认目录 3.2 挂载在自定义目录 4 附加内容(查看容器的挂载情况) 1 概念 数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。这样容器内…

微服务day05-Gateway网关

Gateway网关 为了防止微服务能被任何身份的人访问,需要对访问微服务的人做身份认证和权限校验。网关的功能就是对访问用户进行身份认证和权限校验。网关具有3种功能: 身份验证和权限校验:网关作为微服务入口,需要校验用户是是否…

git 如何将多个提交点合并为一个提交点 commit

文章目录 核心命令详细使用模式总结示例 核心命令 git merge branch2 是将分支branch2的提交点合并到本地当前分支。 而在执行这条命令的时候,加一个选项--squash就表示在合并的时候将多个提交点合并为一个提交点。 git merge --squash branch2 先看squash单词的意…

React Hooks 完全指南:无类组件革命

目录 ​编辑 前言 Hooks的前世 函数组件 类组件 状态和生命周期的管理 Hooks用途以及相应代码 状态管理 用于生命周期管理和副作用操作的 Hooks 用于上下文管理的 Hooks 其他用途的 Hooks 前言 React Hooks 是在 React 16.8 版本中引入的一个非常强大的新特性&…

建筑外窗遮阳系数测试的太阳光模拟器

太阳光模拟器是一种用于测试建筑外窗遮阳系数的高科技设备。它能够模拟太阳光照射房屋的情景,帮助建筑师和设计师更好地了解建筑外窗的遮阳性能,从而提高建筑的能源效率和舒适度。 这种模拟器的工作原理非常简单,它通过使用高亮度的光源和精…

scrapy 爬虫:多线程爬取去微博热搜排行榜数据信息,进入详情页面拿取第一条微博信息,保存到本地text文件、保存到excel

如果想要保存到excel中可以看我的这个爬虫 使用Scrapy 框架开启多进程爬取贝壳网数据保存到excel文件中,包括分页数据、详情页数据,新手保护期快来看!!仅供学习参考,别乱搞_爬取贝壳成交数据c端用户登录-CSDN博客 最终…

Bee Mobile组件库重磅升级

Bee Mobile组件库重磅升级! 丰富强大的组件移动预览快速上手create-bee-mobile Bee Mobile组件库重磅升级! Bee Mobile组件库最新 v1.0.0 版本,支持最新的 React v18。 主页:Bee Mobile 丰富强大的组件 一共拥有50多个组件&…

Java面向对象总结 ( 知识点 | 代码详解 )

类和对象 什么是类? ● 概念:具有相同特征(同一类)事物的抽象描述,如人类,车类,学生类等。 类的结构: ● 变量: 事物属性的描述(名词) ● 方法: 事物的行为(可以做…

基于Flask的宠物领养系统的设计与实现

基于Flask的宠物领养系统的设计与实现 涉及技术:python3.10flaskmysql8.0 系统分为普通用户和管理员两种角色,普通用户可以浏览搜索宠物,申请领养宠物;管理员可以分布宠物信息,管理系统等。 采用ORM模型创建数据&am…

QT----云服务器部署Mysql,Navicat连接1698 -Access denied for user ‘root‘@‘‘

阿里云有活动,白嫖了一年的新加坡轻量级服务器,有点卡,有时候要开梯子 白嫖300元优惠券 目录 1 安装启动Mysql服务2 更改连接权限2.1 Navicat连接报错1698 -Access denied for user root 3 qt连接云服务器数据库 1 安装启动Mysql服务 我使用…

f5——>字符串三角

暴力破解,双层循环,注意复制到新列表用append,这样更不容易出错 格式还是“”.join(str)

Grid网格布局的基本使用

文章目录 什么是网格布局属性display 属性grid-row-gap 属性, grid-column-gap 属性, grid-gap 属性grid-template-areas 属性grid-auto-flow 属性justify-items 属性 , align-items 属性, place-items 属性justify-content 属性 …

Java高频面试之集合篇

Java 中常用的容器有哪些? ArrayList 和 LinkedList 的区别? ArrayList 是基于数组实现的,LinkedList 是基于链表实现的. ArrayList实现了RandomAccess接口,可基于下标访问. LinkedList 实现了Deque /dek/,可以当做双端队列使用. 插入效率对比 如果从头部…