k8s用自己话说,就是一种容器编排工具,部署好应用,再创建绑定应用的服务,就可以实现的服务访问了。这个理论还是得去看重点谈理论的文章,此处我们只记录本项目部署过程。

背景介绍

之前已实现gitlab-ci自动集成代码,部署到tomcat容器,并推送到阿里云镜像仓库。

此项目使用阿里云的k8s容器服务部署应用。

一系列准备工作,先参考阿里云文档

快速创建Kubernetes集群

https://help.aliyun.com/document_detail/85903.html?spm=a2c4g.11186623.6.555.534c4b4bY7F07R

SSH访问Kubernetes集群

https://help.aliyun.com/document_detail/86491.html?spm=5176.11065259.1996646101.searchclickresult.37524c20dma8gQ

通过以上SSH访问Kubernetes集群的负载均衡地址登录到集群master,进行以下操作

创建secret

为了代码安全,我们将镜像仓库设为私有,私有仓库就需要对k8s的授权,在k8s master建secret

kubectl create secret docker-registry test-secret --docker-server=registry-vpc.cn-shanghai.aliyuncs.com/testimage/test --docker-username=uraliyun_name --docker-password=repo_passwd --docker-email=mail@mail.com

创建挂载卷

由于我项目的特殊需求,在镜像里除了war包外还有一个外部配置文件,我需要将外部配置文件挂载到pod的指定目录下

现将配置文件传到本服务器中,此处先将配置文件做成configmap,在文件所在路径下执行

kubectl create configmap test.properties --from-file test.properties

以yaml文件的形式创建deploy

创建yaml文件

vim test.yaml
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: test-backend-tomcat
labels:
app: testbackend
spec:
replicas: 1 #副本集,定义pod数
selector:
matchLabels:
app: testbackend
template:
metadata:
labels: #标签,pod svc等资源是以标签关联,所以不同应用要打上不同标签
app: testbackend
spec:
imagePullSecrets: #创建的secret
- name: test-backend-secret
containers:
- name: test-backend-tomcat
image: registry-vpc.cn-shanghai.aliyuncs.com/testimage/test-backend:1 #镜像
resources: #资源限制,最大值与请求值
limits:
cpu: "0.5"
memory: 100Mi
requests:
cpu: "0.2"
memory: 50Mi
ports:
- containerPort: 8080
volumeMounts: #挂载卷
- name: test-backend-volume
mountPath: /rogueone/testconfig/
- name: test-backend-log-volume #将worker节点上/logs/test-backend做成一个名为test-backend-log-volume的存储卷,再将该存储卷挂载在pod的容器里的/logs下
mountPath: /logs
volumes:
- name: test-backend-volume
configMap:
name: test.properties
- name: test-backend-log-volume
hostPath: #卷的类型是hostpath,即worker节点目录挂载到容器类型的卷
path: /logs/test-backend
type: Directory

以yaml文件生成相关资源,并查看

kubectl create -f appstore.yaml
kubectl get deployment|grep test-backend-tomcat

创建关联以上deploy的nodeport 类型的svc

创建yaml文件

vim test_svc.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
ports:
- port: 30080 #服务端口,供集群内部访问使用
targetPort: 8080 # 容器端口,容器中提供服务的端口
nodePort: 30001 #节点端口,在节点上对外开放的端口
selector:
app: testbackend #此处标签要与deploy中matchlabel一致

根据以上yaml文件创建对应的服务,并查看

kubectl create -f  test_svc.yaml
kubectl get svc |grep nginx-service

此时在k8s的master与worker上都开放了对应的节点端口可以访问到容器服务

通过阿里云负载均衡访问到k8s

创建一个负载均衡,通过不同端口区别不同服务,同一个端口负载到k8s三台master对应的节点端口。

gitlab-ci + k8s 之k8s (二)的更多相关文章

  1. K8s 部署 Gitlab CI Runner

    K8s 版本:1.20.6 GitLab CI 最大的作用是管理各个项目的构建状态.因此,运行构建任务这种浪费资源的事情交给一个独立的 Gitlab Runner 来做就会好很多,而且 Gitlab ...

  2. Jenkins和Gitlab CI/CD自动更新k8s中pod使用的镜像说明

    Jenkins 使用Jenkins的话,完成的工作主要有如下步骤: 1.从Gogs或Gitlab仓库上拉取代码 2.使用Maven编译代码,打包成jar文件 3.根据jar文件使用相对应的Docker ...

  3. k8s Gitlab CI/CD 之自动编译Docker镜像并推送到指定的Registry

    环境介绍: 说明 节点 ip 系统 Gitlab Server git.ds.com 10.0.1.179 CentOS 7.5.1804 Gitlab Runner   10.0.1.178 Cen ...

  4. 手把手详解持续集成之GitLab CI/CD

    一.环境准备 首先需要有一台 GitLab 服务器,然后需要有个项目:这里示例项目以 Spring Boot 项目为例,然后最好有一台专门用来 Build 的机器,实际生产中如果 Build 任务不频 ...

  5. .Net Core自动化部署系列(三):使用GitLab CI/CD 自动部署Api到Docker

    之前写过使用Jenkins实现自动化部署,最近正好没事研究了下GitLab的自动化部署,顺便记录一下. 使用GitLab部署我们需要准备两件事,第一个起码你得有个GitLab,自己搭建或者使用官方的都 ...

  6. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目

    在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...

  7. .NetCore 配合 Gitlab CI&CD 实践 - 单体项目

    前言 上一篇博文 .NetCore 配合 Gitlab CI&CD 实践 - 开篇,主要简单的介绍了一下 GitLab CI 的持续集成以及持续部署,这篇将通过 GitLab CI 发布一个 ...

  8. GitLab CI构建SpringBoot-2.3应用

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. [转]gitlab ci/cd 发布

    转自 https://meigit.readthedocs.io/en/latest/configure_gitlab_i18n_and_create_gitlab_ci_with_gitlab_ru ...

  10. 在 Kubernetes 上安装 Gitlab CI Runner Gitlab CI 基本概念以及 Runner 的安装

    简介 从 Gitlab 8.0 开始,Gitlab CI 就已经集成在 Gitlab 中,我们只要在项目中添加一个.gitlab-ci.yml文件,然后添加一个Runner,即可进行持续集成.在介绍 ...

随机推荐

  1. hdu1847 Good Luck in CET-4 Everybody!(巴什博弈)

    http://acm.hdu.edu.cn/showproblem.php?pid=1847 从1开始枚举情况,找规律.1先手胜2先手胜3先手败4先手胜5先手胜... n只要能转移到先手败,就可以实现 ...

  2. 29、粘包现象(struct模块)

    昨天我们所做的套接字是有漏洞的,它会出现粘包现象,没有发现这个问题的我们今天会进行演示.今天也会稍微讲解一下基于udp的套接字. 本篇导航: 基于udp的套接字 粘包现象 粘包 解决粘包方法 stru ...

  3. mac上mysql8.0以tar.gz方式手动安装

    一.下载 官网地址: https://dev.mysql.com/downloads/mysql/ 选择:macOS 10.14 (x86, 64-bit), Compressed TAR Archi ...

  4. JS如何判断浏览器类型和详细区分IE各版本浏览器

    /* * 描述:判断浏览器信息 * 编写:LittleQiang_w * 日期:2016.1.5 * 版本:V1.1 */ //判断当前浏览类型 function BrowserType() { va ...

  5. shell字符串的用法

    shell字符串的用法 注意:shell4.2和shell4.1会有差别,较低版本的shell可能不支持某些功能 获取字符串长度:${#string} 获取子串: 注:(左边的第一个字符是用 0 表示 ...

  6. 国内阿里maven仓库镜像maven配置文件maven仓库速度快

    国内连接maven官方的仓库更新依赖库,网速一般很慢,收集一些国内快速的maven仓库镜像以备用. 最新更新:2016年11月11日 18:05:40 阿里云提供Maven私服,我把配置文件贴一下,自 ...

  7. CentOS7开启docker远程访问并在idea中连接使用

    CentOS7开启docker远程访问并在idea中连接使用 1.编辑/usr/lib/systemd/system/docker.service,配置远程访问.主要是在[Service]这个部分,添 ...

  8. 一步步教你轻松学K-means聚类算法

    一步步教你轻松学K-means聚类算法(白宁超  2018年9月13日09:10:33) 导读:k-均值算法(英文:k-means clustering),属于比较常用的算法之一,文本首先介绍聚类的理 ...

  9. 修改openssh显示版本号

    问题描述: 漏洞安全对使用的软件扫描漏洞,都是依据软件的版本号探测的,直接升级软件风险太大,因此规避风险,修改软件版本号实现其目的! 问题解决: strings xxx |grep xxx   //实 ...

  10. window下zookeeper的下载启动和报错等问题

    在使用dubbo等需要用到zookeeper,之前window下本地部署,启动一直有问题,后面折腾了下才部署成功,此次记录下来. 将zookeeper下载之后,解压到指定目录即可,无需安装.例如:解压 ...