gitlab流水线与k8s集群的连接,首先是通过gitlab-ci.yml文件中的命令,通过runner执行器实例运行对应的kubectl命令实现的。
那么runner执行器实例执行器如何执行kubectl命令,执行环境的配置,kubectl命令如何与k8s集群互认,以及从git push到k8s集群的运行,都需要逐步进行配置并确定连通性。
这个流程应当是:
IDE->gitlab->gitlab runner->shell->docker+kubectl->k8s集群

1.runner与k8s的连接

我们安装gitlab runner肯定是为了构建自动化流水线的。现在考虑如何将自动化流水线与k8s相连接。

1.1 执行器实例机器kubectl安装

首先我在gitlab runner的runner实例的执行器(我选的shell)运行的位置安装kube,方便kubectl命令的执行。

  1. 下载。换google的官方源难以yum安装,尝试使用io提供的文件。
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

我是x86架构的centos7.4内核的系统,如上命令即可。如果是arm架构等其他情况,可以修改对应的位置。
下载后转移到自己的PATH下即可。一般放到/usr/local/bin/下就行。
为了保持学习的态度,我们可以通过echo $PATH命令查看自己系统的PATH有哪些。他会返回一系列用:结尾的字符串,这些就是你的PATH地址。
2. 下一步,修改kubectl文件的可执行权限。
在这里插入图片描述

# 在kubectl存放的位置检查一下权限
ls -la kubectl
# 可以看到只有所有者有读写权限。考虑到中标麒麟的权限管理严格,我计划给所有用户执行权限。
sudo chmod 711 kubectl
# 更改完后查询权限
ls -la kubectl
# 可以看到执行权限被添加了
  1. 转移到bin下
sudo mv kubectl /usr/local/bin/
  1. 验证安装成功
kubectl version --client#返回值为
Client Version: v1.34.0
Kustomize Version: v5.7.1

说明安装成功了

1.2 测试gitlab能否正常连接kubectl

我们操作k8s执行的整个链条为:

  • 通过IDE在本地编辑gitlab-ci.yml文件。
  • 文件指导gitlab,通过文件中的tag和gitlab中注册的runner实例tag匹配,选择gitlab runner特定执行器执行相关命令。
  • 执行器选择使用shell
  • shell命令使用kubectl命令
  • kubectl按照IDE中编辑的deployment.yaml和service.yaml,将要执行的内容部署到K8S集群上

我需要确认gitlab-ci.yml能正常命令shell级别的kubectl能正常执行。既确认IDE到kubectl的连接。
首先修改gitlab-ci.yml内容为:

stages:- build- deployvariables:DOCKER_DRIVER: overlay2DOCKER_TLS_CERTDIR: ""build:stage: buildtags:- shellscript:- docker --versiondeploy:stage: deploytags:- shellscript:- kubectl version --client

之后进行commit和push。
之后前往gitlab->demo项目->构建->作业 下查看build和deploy是否正常反馈。
build里会看到Job succeeded的字样:

# 省略一大段
$ docker --version
Docker version 17.03.2-ce,build f5ec1e2
Job succeeded

deploy里也会看到:

# 省略一大段
$ kubectl version --client
Client Version: v1.34.0
Kustomize Version: v5.7.1
Job succeeded

至此我可以确认IDE->gitlab->gitlab runner->shell->docker/kubectl是正常的。

1.3 将k8s集群与kubectl连接

在端口开通没有障碍的情况下,直接在k8s节点复制config文件到kubectl运行的位置是最方便的,命令如下:

# 在k8s主节点执行
scp /etc/kubernetes/admin.conf 目标机器用户名@IP地址:/etc/kubernetes/config

考虑到我这边开通机器到机器的权限比较麻烦,我选择手动复制。从k8s的master机器,或者通过kubephere手动拷贝config内容。
到了本地机器之后,在本地执行环境配置:

echo "export KUBECONFIG=/etc/kubernetes/config" >> ~/.bashrc
source ~/.bashrc

你的config文件存储位置/etc/kubernetes/config不是这个的话,记得进行修改。
测试一下能不能连接集群

kubectl get nodes

执行上述命令你会发现,哎他通不了

1.4 集群和本级策略开通

基于内网环境,各种端口默认是不能通信的,那么需要调查确定需要开通哪些权限。

1.4.1 开通端口的确认

k8s集群的kubernetes API server服务监听端口需要确认。k8s默认监听6443端口,进行API server。
受限网络环境下,我申请到开通一个策略的时间代价是很长的,所以我倾向于先确认再后续操作。下面通过命令确认开通情况。

ps -ef | grep kube-apiserver | grep -E 'secure-port|bind-address'

正常情况你能在返回中看到–secure-port=6443

1.4.2 端口监听情况确认

查看端口监听情况是否正常

sudo netstat -tnlp | grep kube-apiserver

正常你会看到kube-apiserver监听:::6443,就是监听的6443端口,看到:::*,就是所有来源的都收。

1.4.3 开通策略

runner机器-》k8s master节点,需要开通all-〉6443
因为runner机器与k8s master节点通信的端口是随机的。所以这一侧应该是要开通all.

1.4.4 端口策略开通测试

通过telnet命令测试端口开通情况。

# 将100.100.100.100替换为你的k8s集群地址
telnet 100.100.100.100 6443
# 返回-》
Trying 100.100.100.100...
Connected to 100.100.100.100
Escape character is '^]'.

但是,在中标麒麟7.4里默认没有telnent,我选择从外部下载telnet之后安装,包也很简单,不需要额外下载依赖。
直接从能联网的centos7.9机器使用yumdownloader --resolve telnet就可以下载到。怎么安装和下载,可以参照我: gitlab安装指导里面的部分进行。

1.5 为执行器指引配置文件位置

在gitlab-ci.yml中编辑一行variables

variables:          # 告诉 Runner kubeconfig 在哪KUBECONFIG: "<to your config flie path>/config"

具体位置改成你存放config文件的位置。

1.6 集成连通性测试

gitlab-ci.yml中编辑一行kubectl get nodes。
之后执行推送。
到gitlab流水线中查看deploy阶段情况。
能正常展示你的几个节点的列表那就是和k8s集群通常起来了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/96464.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/96464.shtml
英文地址,请注明出处:http://en.pswp.cn/web/96464.shtml

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

相关文章

【Linux】常用命令速查表

Linux 常用命令速查表查看进程内存映射pmap -x <pid> # 查看进程的内存映射信息查看系统架构uname -m # 查看操作系统架构&#xff08;x86_64 / arm64 等&#xff09;磁盘与文件du -sh /home/* # 查看 /home 下每个用户目录的大小&#x…

Windows下编译SLEPc

本文记录在Windows下编译SLEPc的流程。 零、环境 操作系统Windows 11VS Code1.92.1MSYS2msys2-x86_64-20250830 一、安装依赖 1.1、依赖 首先&#xff0c;下载并安装MSYS2&#xff0c; 打开MSYS2 MINGW64控制台&#xff0c;运行以下命令安装依赖包&#xff0c; pacman -S …

运动生理实验室解决方案 人体生理实验整体解决方案

&#xff08;一&#xff09;、硬件参数 集成化折叠式无创型生理实验平台&#xff1a;1.1、 集成化设计:至少包含设备操作台、可收纳式交互实验桌、可收纳式检查床、生物信号 采集处理系统、计算机工作站集成于一体的高度集成设计&#xff1b;&#xff08;o561-6o623…

Axure RP 9 最新版安装包+安装步骤Win系统适用(附安装包)

Axure RP 9​ 是一款专业的 ​原型设计工具&#xff0c;主要用于 ​网站、APP、软件等产品的界面设计和交互原型制作。 一、准备工作 ​下载好安装包​ Axure RP 9安装包下载&#xff1a;https://pan.quark.cn/s/bc2b35011106 二、开始安装 第一步&#xff1a;双击运行安装包…

AutoMQ 亮相首尔:KafkaKRU 分享日志流处理新思路

全球 Kafka 社区都在关注 AutoMQ&#xff01;凭借在 Kafka 生态的独特创新&#xff0c;AutoMQ 深受 Kafka 用户喜爱&#xff0c;已成为众多企业和开发者的首选实时数据解决方案。昨天&#xff0c;我们非常高兴看到来自韩国的 KafkaKRU 核心社区在首尔举办第2届官方线下交流会。…

从零开始使用 axum-server 构建 HTTP/HTTPS 服务

axum-server 是 Rust 生态中为 axum 框架设计的高性能服务器实现&#xff0c;基于 hyper&#xff08;底层 HTTP 引擎&#xff09;和 tower&#xff08;服务抽象&#xff09;构建&#xff0c;支持 HTTP/1、HTTP/2 及 HTTPS。本教程将从环境准备到实战功能&#xff0c;一步步带你…

电路运行的核心-RTC

1. 时钟芯片是什么&#xff1f;时钟芯片&#xff0c;更准确的名称是实时时钟芯片&#xff0c;英文是 Real-Time Clock&#xff0c;简称 RTC。它是一个专用的集成电路&#xff0c;其核心功能是追踪时间和日历。你可以把它想象成电子设备里的一个“电子表”或“日历钟”。关键特性…

AR消防头盔:火场救援的智能“透视眼”

在浓烟弥漫、能见度几乎为零的火场中&#xff0c;消防员们依靠什么来精准掌握队友的位置和状态&#xff1f;答案是AR智能消防头盔&#xff08; www.teamhelper.cn &#xff09;。这种头盔通过多种定位技术的融合&#xff0c;为消防员提供了强大的团队协作和指挥协同能力&#x…

基于大模型的个性化推荐系统实现探索与应用

前言 如果你一直在跟着Fanstuck博主的脚步探索AI大模型的相关内容&#xff0c;从最初的大模型Prompt工程解析&#xff0c;DeepSeek全面解析&#xff0c;到实际的私有化大模型开发部署&#xff0c;再到深入NL2SQL、知识图谱大模型和ChatBI等更高阶应用.我是Fanstuck&#xff0c…

【已解决】Echarts 力学布局图谱切换图例的时候线条残留在了画布上

在用Vue3封装 ECharts 的力导向图&#xff08;graph force&#xff09;时&#xff0c;我遇到一个问题&#xff1a;点击图例切换节点显隐后&#xff0c;线条残留在原位置&#xff0c;画布出现“脏线条”。&#xff08;问题如下&#xff1a;&#xff09;这个问题本质上是因为…&…

Vue动态实时字数限制

文章目录&#x1f680; Vue.js 动态实时字数限制指南1. 核心实现方法1.1 使用计算属性 (Computed Property)1.2 结合计算属性的 Setter/Getter1.3 使用监听器 (Watcher)1.4 使用自定义指令 (Custom Directive)1.5 原生 maxlength 属性结合 Vue2. 特殊场景处理2.1 处理粘贴操作2…

荣耀手机无法连接win11电脑,错误消息:“无法在此设备上加载驱动程序 (hn_usbccgpfilter.sys)。”解决方案

错误发生背景&#xff1a; 本人于2024年月底买了一部荣耀Magic7 RSR手机&#xff0c;当时在win10的rog电脑上可以正常连接&#xff0c;但是后面换了一个acer的win11电脑后&#xff0c;一开始可以正常连接&#xff0c;但是要我下载荣耀Hisuite&#xff08;荣耀手机助理&#xff…

springboot env 多环境配置入门与实战

Spring Boot3 Env 项目地址 https://gitee.com/supervol/loong-springboot-study &#xff08;记得给个start&#xff0c;感谢&#xff09; Env 概述 在 Spring Boot 3 开发中&#xff0c;多环境配置是核心能力之一&#xff0c;其目的是为不同场景&#xff08;如开发、测试、…

利用conda打包/复刻生信环境

01、写在前面 大家拿到自己的服务器(趁开学| 入手足够完成硕博生涯的生信环境)后可能需要安装很多的软件与包&#xff0c;Linux中许多包的安装依赖过多、安装复杂。而conda作为一个能够直接安装超过90%软件的"管家"&#xff0c;能够像Windows和手机中的应用商店那样…

数据分析:合并

&#x1f537; DA37&#xff1a;统计运动会项目报名人数&#xff08;仅输出有人报名的项目&#xff09;✅ 题目描述给定两个 CSV 文件&#xff1a;items.csv&#xff1a;包含项目信息&#xff08;item_id, item_name, location&#xff09;signup.csv&#xff1a;包含员工报名信…

高并发内存池(一):项目介绍和ThreadCache(线程缓存)实现

前言&#xff1a;本文将要介绍的高并发内存池&#xff0c;它的原型是Google的⼀个开源项⽬tcmalloc&#xff0c;全称Thread-Caching Malloc&#xff0c;近一个月我将以学习为目的来模拟实现一个精简版的高并发内存池&#xff0c;并对核心技术分块进行精细剖析&#xff0c;分享在…

RK3399平台ffmpeg-VPU硬编码录制USB摄像头视频、H264或MJPEG编码

文章目录 1 前言2 项目内容详细说明2.0 功能2.1 工程文件夹说明 3 代码3.1 CameraThread类3.1 CameraThreadImpl类 4 资源下载 1 前言 在某项目中需要在RK3399平台实现USB摄像头画面的实时预览、视频录制、拍照存储等功能。   先来看需要实现的最终效果。    ffmpeg USB摄…

解决蓝牙耳机连win11电脑画质依托答辩问题

以wh910n蓝牙耳机为例 设置-系统-声音-输出&#xff08;耳机&#xff09;-常规&#xff08;输出点不允许&#xff09;然后删除wh910n蓝牙设备 重新配对蓝牙耳机

独立显卡和集成显卡切换电脑卡住了怎么办?

你是不是也遇到过这种情况——正忙着切换显卡呢&#xff0c;电脑突然就卡住了&#xff0c;鼠标不动、屏幕定格&#xff0c;怎么按都没反应&#xff1f;其实这种问题挺常见的&#xff0c;尤其是用了双显卡的笔记本或者工作站。别急着强制关机&#xff0c;嗯&#xff0c;咱们一步…

Java根据模版导出PDF文件

问题 工作中经常有这样的需求&#xff0c;将一些数据&#xff0c;导出为下图的PDF文件&#xff0c;那Java怎么做呢&#xff1f;今天手把手教你 准备模版 模版地址&#xff1a;https://download.csdn.net/download/ZHUSHANGLIN/91923381 修改模版使用AcrobatProPortable工具…