.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来做文件处理

原文地址:https://www.cnblogs.com/liyouming/p/11738542.html

时间: 2024-10-13 22:19:54

.NetCore 使用k8s部署服务的过程中需要注意的地方以及遇到的问题的相关文章

Windows平台下Oracle监听服务启动过程中日志输出

Windows平台下Oracle监听服务启动过程中日志输出记录. 日志目录:D:\app\Administrator\diag\tnslsnr\WIN-RU03CB21QGA\listener\trace\listener.log 日志输出内容: Sat Aug 06 20:38:44 2016 系统参数文件为D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora 写入d:\app\administrator

SCCM OSD 部署Windows 8过程中跳过WIFI连接

从Windows 8开始,带有无线网卡的计算机,在系统的安装过程中通常会弹出需要你选择WIFI进行无线网络连接的界面.直至已连接WIFI或选择跳过此功能后,系统安装才能继续进行.这是个非常实用的功能,但是对于想通过SCCM实现Windows 8以上操作系统完全自动化部署的IT管理员来说,这个功能就显得比较麻烦.取消这项功能需要通过生成自定义的XML结合SCCM任务序列来实现. 第一步:安装最新版本的Windows ADK 下载Microsoft Deployment Toolkit 2013 U

个人简历制作过程中应注意的地方

简历作为一个人求职面试的工具,需要大家好好准备,注意其中的问题,才能制作出一份毫无缺陷的精美简历.今天小编就将告诉大家个人简历制作当中的禁忌,让大家在今后制作简历时,少犯这些错误.1.内容不要重复.过多有得人为了让简历看上去内容丰富,就将一个方面的小内容,不断在简历中重复提出,导致简历内容十分混乱,让人看上去杂乱无章.2.不要过于轻率制作简历是一件很严肃,很重要的事情.简历的好坏可能直接影响面试的结果.因此简历制作完成后,最好进行多次检查,把不需要的地方删除,只保留最重要的内容. 3.不要笔迹潦

关于找工作的过程中需要注意的地方

在辞职之后,我迅速的投入到找工作的大军中,很快,工作有了回应,我一直期待进入的两个公司给我了回信,但是都需要一段时间的报批Offer,第一个公司需要等待一周多的时间,第二个公司本来说要很快的把进度提前的,结果HR一直没有给我打电话,而技术那边对我的印象一直都还不错,一直说会要我.着一周的时间里,我也面试了其他的公司,但是由于要求回复的时间太短,无一例外的被我推掉了,但是很不幸,我之前一直说我没有问题的公司都没有录用我,此时的我感觉很无助,两家公司的说法都是我工作的年限太短,而且他们判断的标准是我

jQuery Validation Plugin使用过程中需要注意的地方

1.是针对Form表单的校验,也就是说一定要是form对象才能调用validate方法 2.默认情况下,表单提交的时候才会触发校验,比如:$("form").submit()或者点提交按钮type=submit.为了改变触发校验方式,可以调用Validator对象的form()方法来手动触发校验. 3.调用Validator的valid()方法来判断校验是否通过,resetForm()方法可以重置表单. 4.只读(readonly)元素是无法应用校验规则的 4.菜鸟教程:http://

Rancher 2.0部署过程中常见问题分析与解决

本文是Rancher 2.0部署与使用过程中常见的问题及其解决方法,多数问题整理收集自Rancher官方技术交流群内用户的提问与反馈.欢迎扫描文末二维码,添加Rancher小助手为好友,加群获得更多技术支持. 本文主要内容为: 1.部署Rancher 2.0的环境需求 推荐使用的操作系统 推荐的硬件配置 支持的docker版本 防火墙需要允许通过的端口 2.部署过程中的常见问题及排查思路 环境信息残留 openssh版本过低问题 nodeport端口只有一台机器能访问 部署使用calico网络部

十五、MDT 2013 Update 1批量部署-利用微软WDS部署服务实现MDT部署组播(多播)

MDT 2013 Update 1在客户端部署会占用不少带宽,利用微软的WDS部署服务,可以实现部署组播,在多个客户端部署时可以有效的节省网络带宽,同时提供多个客户端的部署速度. 一.WDS部署服务 其实只要默认值 查看多播传输,里面没配置多播传输 二.MDT 2013 UPDATE 1控制台下配置组播(多播) 修改对应的共享文件夹属性 选取 "Enable multicast for this deployment share",下面有说明需要WDS支持,不过为啥微软不标明也可以支持

Windows Server 2012 R2 WDS部署服务之一安装

WDS概念: Windows Deploy Services (windows 部署服务)在企业中实现操作系统自动部署 WDS安装条件: WDS需要域环境,DNS服务器,DHCP服务器,因为Windows部署服务使用的预启动执行环境 (PXE) 依靠 DHCP 进行 IP 寻址.另外,WDS服务器的分区必须是NTFS格式 WDS实验环境: 2012dc1:DC,DHCP,DNS以及WDS都安装在这台server上 下面开始,首先启动服务器管理器,添加角色 选择在2012dc1上安装角色 由于之前

部署 nagios nrdp 插件过程中遇到的问题总结

在ubuntu 14.04 系统探索部署 nagios nrdp 插件过程中,遇到如下问题? 测试 http: ip /nrdp/ 提交结果的页面中,总是报如下错误: <result> <status>-1</status> <message>BAD COMMAND FILE</message> </result> <result> <status>-1</status> <message&g