.NetCore 使用k8s部署服务的过程中需要注意的地方以及遇到的问题
这里开始我准备了3台测试服务器,这里我使用了JumpServer管理起来了,这里我们来看下:
Master :192.168.0.236
Node1:192.168.0.237
Node2:192.168.0.238

这里k8s搭建的过程就略了,同时我们需要一个镜像仓库,这里安装Harbor,安装过程略
问题1:如何通过K8S 拉去我Harbor镜像仓库上的私有镜像?
首先我们创建我们的k8s资源,这里提供了三种方式:
从文本输入框创建、从文件创建、直接创建应用,要实现这一步需要去了解k8s yaml相关语法规则以及配置详细,这里我贴下一个测试案例,这个配置是拷贝出来的,自己创建也不了这么多,这里需要特别了解就是
资源对象:Pod、ReplicaSet、ReplicationController、Deployment、StatefulSet、DaemonSet、Job、CronJob、HorizontalPodAutoscaling
配置对象:Node、Namespace、Service、Secret、ConfigMap、Ingress、Label、ThirdPartyResource、 ServiceAccount
存储对象:Volume、Persistent Volume
策略对象:SecurityContext、ResourceQuota、LimitRange
这里创建一个Deployment为例子,这里就需要注意了,怎么来配置拉去镜像呢?
#创建 deployment 这是我们要部署的项目
apiVersion: apps/v1
kind: Deployment
metadata:
name: examimage-test # 部署项目的名称,必选
namespace: uoso-system # 项目部署在什么命名空间下
labels:
app: k8s-examimage # 标签,可以随意定义,这个标签在项目部署完成后还可以继续修改
spec:
replicas: 2 # 生成副本数量为2
selector:
matchLabels:
app: k8s-examimage
template:
metadata:
labels:
app: k8s-examimage
annotations:
app: examimage-clouster
spec:
containers:
- name: examimage
image: 私用仓库地址/stu-exam/examimage:pro-1.0 # 镜像的名字
volumeMounts:
- name: examimage-web # 卷名,随意定义
mountPath: /appexam/appsettings.json # 容器内的目录
readOnly: true # 只读
volumes:
- name: examimage-web # 卷名,与上面一样
hostPath: # 宿主机目录,这里可以选择网络存储等,下面注释的地方是网络存储
# nfs
# server: ip地址
path: /opt/testuoso/appsettings.json # 挂载文件(文件夹)结束
imagePullPolicy: IfNotPresent # 这里有三个值,这里的值表示的意思是"当镜像不存在时就去仓库拉取,存在时就直接使用"
imagePullSecrets:
- name: liyouming # 这里是当拉去镜像时的密码字典,这个要先定义好才能使用
resources:
limits:
cpu: 300m
memory: 3000Mi
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 80 # 这里的端口就是该镜像暴露的端口,即Dockerfile文件里面EXPOSE的端口
配置中添加了imagePullSecrets配置指定了保密字典配置名称,那么我们怎么配置 registrysecret-uoso11账户的保密字典呢?
这里可能发现k8s并不像功能模块一样,一个模块都有对应的添加,都是通过创建而来的,需要自定kind类型,前面也列举了 对象类型了,创建保密字典我们需要创建Secret类型

这里我找一个看一下

其中有些是系统生成的,我们实际创建的时候不需要这么多,我这边整理下,这里需要注意的data 和type,type 共有三种方式对应不同的写法,下面这个我们来创建下
kubernetes.io/dockerconfigjson 这个类型的,其他类型:kubernetes.io/service-account-token、Opaque
{
"kind": "Secret",
"apiVersion": "v1",
"metadata": {
"name": "liyouming",
"namespace": "uoso-system"
},
"data": {
".dockerconfigjson": "base64编码的一个字符串docker密钥" #这里又格式校验的
},
"type": "kubernetes.io/dockerconfigjson"
}
dockerconfigjson 配置的内容怎么获取呢?
就用master上的docker 远程登录下镜像仓库会生成:/root/.docker/config.json的文件,接下来我们来看下里面的内容,我们登录docker harbor的账户授权都在这里了,我这个多了几个

这里我退出几个就可以看到只剩下我远程仓库中的

下面我们将 这个base64加密下,加加密后的编码拷贝到.dockerconfigjson配置里面


之前创建的 liyouming 就创建成功了,现在我们来拉去镜像,接下来创建我们的部署,拷贝好之前写好的yaml文件创建

可以看到成功了 2个容器均应分布在了2个节点上,现在伸缩下 到6个,速度也是超快


到这里其实我们还是不能访问的,还需要添加服务
apiVersion: v1
kind: Service
metadata:
name: k8s-examimage # 定义该服务的名称,可随意填写,但是最好是有意义的名字
namespace: uoso-system # 这里是指定该服务运行在什么命名空间下,如果不要这行的话,那么该服务会运行在default命名空间下,在k8s里面,不同命名空间下的所有应用都都是隔开的
labels: # 设置该服务的标签
app: k8s-examimage
spec:
type: NodePort # 端口映射的方式
ports:
- port: 80 # 端口
targetPort: 80 # 分配Expose端口
nodePort: 80 # 外部端口
protocol: TCP
# clusterIP: 169.169.249.80 # 分配集群ip
selector:
app: k8s-examimage
创建服务后可以看到如下图:
现在看下我们之前的服务能不能访问,我们分别访问下 192.168.0.236、192.168.0.237、192.168.0.238,这里可以看到服务端口80

192.168.0.236 访问正常

192.168.0.237 访问正常

192.168.0.238 访问也正常

其实这里还有一个问题的就是挂载资料卷的问题?
前面yaml中写到的都是挂载到本机上的,但是多个节点不可能能每个节点都去写对应的路径配置文件,这是不科学的.
对于现有的采取措施,我自己的服务简单的系统内部配置文件,打包的时候就直接打到容器内部不做修改,统一采用远程配置中心(apollo)来出来配置修改
如果不需要热更,其实打包到容器内部就ok了,其次如果有需要可以采用NFS来做文件处理或者使用 K8S字段配置表来完成最好
.NetCore 使用k8s部署服务的过程中需要注意的地方以及遇到的问题的更多相关文章
- Windows平台下Oracle监听服务启动过程中日志输出
Windows平台下Oracle监听服务启动过程中日志输出记录. 日志目录:D:\app\Administrator\diag\tnslsnr\WIN-RU03CB21QGA\listener\tra ...
- Tomcat部署SSL证书过程中遇到的问题
在CentOS7中Tomcat部署SSL证书时遇到的问题 1.配置servlet.xml 配置tomcat/conf/server.xml 加入以下代码 <Connector port=&quo ...
- ELK安装过程中一些注意的地方
安装流程比较简单,只需要下载安装包,解压安装包,修改配置文件,然后启动组件即可,但还是遇到一些小问题,这里做一下记录. 各个组件版本号需要保持一样,例如都使用7.1.1版本 es不能以root账户启用 ...
- spring-data-redis 使用过程中需要注意的地方
1.序列化问题 <!-- SDR默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略. StringRedisTemplate默认采用的是String的序列化策略 ...
- Python服务Dokcer化并k8s部署实例
这篇文章记录了我试验将一个基于python的服务docker化并k8s部署的过程. 服务介绍Docker化设计业务代码改造创建docker镜像K8S部署设计yaml文件运行服务介绍这是一个用 pyth ...
- 【FAQ】接入HMS Core推送服务过程中一些常见问题总结
HMS Core 推送服务(Push Kit)是华为提供的消息推送平台,建立了从云端到终端的消息推送通道.开发者通过集成推送服务,可以向客户端应用实时推送消息,构筑良好的用户关系,提升用户的感知度和活 ...
- 【FAQ】干货满满,接入HMS Core应用内支付服务过程中一些常见问题总结(2)来啦
HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.该服务支持客户端和服务端两种开发形式,具体可以参考官方文档 上次,我们分享和总 ...
- 拥抱云原生,如何将开源项目用k8s部署?
微信搜索[阿丸笔记],关注Java/MySQL/中间件各系列原创实战笔记,干货满满. k8s以及云原生相关概念近年来一直比较火热,阿丸最近搞了个相关项目,小结一下. 本文将重点分享阿里开源项目otte ...
- 【性能测试实战】jmeter + k8s + 微服务 + skywalking + efk,测试都在学的热门技术
原文持续更新完善:https://www.cnblogs.com/uncleyong/p/15475614.html 前言:当前的热门主流技术是哪些?测开为啥那么火?90%以上的测试对测开认识不准确 ...
随机推荐
- react 练习参考
项目地址:https://gitee.com/dhclly/icedog.react React 练习项目 相关资源链接 React官方 https://reactjs.org React 中国 ht ...
- Javascript 实现倒计时效果
代码来自于网上. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- 成都,我们来啦 | Dubbo 社区开发者日
[关注 阿里巴巴云原生 公众号,回复关键词"报名",即可参与抽奖!] 活动时间:10 月 26 日 13:00 - 18:00 活动地点:成都市高新区交子大道中海国际中心 233 ...
- C# 处理接口返回的XML格式数据
using System.Xml; //引入命名空间 //模拟接口返回的数据 string str=@"<JZD_Message xmlns:xsd=""http: ...
- Lucene 写入一个文档到该文档可搜索延迟是多少?
我看的是最初版的lucene,1.4.3 结论是新写入的文档会先写入内存中,只有当到达一定阈值后才会刷新进磁盘,而搜索可以搜索到的数据由最初定义IndexSearcher时磁盘里的段数据决定,如果想要 ...
- Jquery选择器与样式操作
jquery选择器 jquery用法思想一 选择某个网页元素,然后对它进行某种操作 jquery选择器 jquery选择器可以快速地选择元素,选择规则和css样式相同,使用length属性判断是否选择 ...
- 2.原生js实现图片懒加载
网上查了很多图片懒加载的内容, 但基本上都是jQuery实现的, 没有说清楚其原理, 所以研究了一下 多的不说, 上代码, 看不明白的建议看下我的上一篇文章<1. 图解浏览器和用户设备的宽高等属 ...
- canvas的常用功能(电脑版)
前言: canvas可以单独算为前端的一大知识模块, 今天就研究一下. 先做下前文铺垫: ①创建canvas <canvas id="myCanvas" width=&quo ...
- 【Android】天气应用
模仿华为的"天气"应用写的一个小Demo.部分功能.动画效果没有实现,也没有过多考虑性能.Bug等其它方面的因素.写这个Demo的初衷是想熟悉下目前网上常用的一些框架. Demo采 ...
- Fundebug前端异常监控插件更新至 1.9.0,支持监控 HTTP 慢请求
摘要: 1.9.0新增 httpTimeout 配置选项,支持监控 HTTP 慢请求,同时修复了记录的 HTTP 响应时间偏小的 BUG. Fundebug提供专业的前端异常监控服务,可以第一时间捕获 ...