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,一经查实,立即删除!

相关文章

如何下载网页中嵌套的PDF

项目场景: 网页中常有发布的PDF文件,只有浏览功能 问题描述 想下载的话有时候会截图,或者联系网站管理员 解决方案: 1.使用谷歌浏览器或者360浏览器极速模式,在当前页面按F12 2.网络(Network)…

OpenSSL 安全漏洞(CVE-2023-3817)

厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: https://www.openssl.org/news/secadv/20230731.txt OpenSSL安全建议[2023年7月31日] 检查DH q参数值花费过多时间(CVE-2023-3817) 严重程度:低 问题总结:DH键或参数过长可能导致检查速度很…

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

有些人在使用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…

linux-rpm命令

rpm命令管理程序包:安装、升级、卸载、查询和校验 1、忽略依赖关系安装/卸载包 安装:rpm -Uvh 软件包名 --nodeps 卸载:rpm -e 软件包名 --nodes!!!!慎用!!&#xff01…

Qt之Gui的事件转换

QGuiApplication的实现类QGuiApplicationPrivate方法processWindowSystemEvent处理window系统事件 static void processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *e);在QWindowSystemInterface的处理事件方法中会调用上面的processWindowSystemEv…

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

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

pycharm手动安装常用插件

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

算法刷题day24:归并排序

目录 引言概念一、火柴排队二、归并排序三、逆序对的数量四、小朋友排队五、超级快速排序 引言 关于这个归并排序,考察的还是挺多的,在笔试面试中会问你,或者直接让你写一个归并排序,还有竞赛中有时也会考察,不过一般…

PG的JDBC对SQL中绑定变量个数的限制

瀚高数据库 目录 环境 症状 问题原因 解决方案 环境 系统平台:N/A 版本:N/A 症状 问题 有开发人员使用一条Insert values 语句,插入多行数据。例如:表A有88个字段,一条INSERT values …中包含500条数据。 报错…

六、矩阵问题

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数据库系统中用于分析处理,从而实现了持续监控和生产过程的改进。 一 背景 该企业…

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

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

Qt应用软件【文件篇】Linux平台QFileSystemWatcher与QFile操作GPIO

文章目录 GPIO权限问题使用Root权限运行应用程序更改GPIO文件的权限使用udev规则自动设置权限监视GPIO与读写GPIO注意事项GPIO权限问题 在Linux系统中,通过sysfs接口操作GPIO时,经常会遇到权限问题,因为默认情况下,访问/sys/class/gpio目录及其文件需要root权限。这可能会…

Docker数据卷的挂载

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

go语言基础 -- json的序列化

json序列化 package main import("fmt""encoding/json" )type Monster struct{Name stringAge intSkill string }// 结构体序列化 func serialize_struct() {monster : Monster{Name : "niumo",Age : 500,Skill : "bajiaoshan",}// 这…

微服务day05-Gateway网关

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

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

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

[网络安全提高篇] 一二五.恶意软件分析之PE文件解析和利用Python获取样本时间戳及溯源

2024新的战场,继续奋斗。 “网络安全提高班”新的100篇文章即将开启,包括Web渗透、内网渗透、靶场搭建、CVE复现、攻击溯源、实战及CTF总结,它将更加聚焦,更加深入,也是作者的慢慢成长史。换专业确实挺难的,Web渗透也是块硬骨头,但我也试试,看看自己未来四年究竟能将它…

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

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