gitlab流水線與k8s集群的聯通

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工具…