国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

K8S容器內(nèi)安裝cur/telnet命令(Alpine Linux離線環(huán)境安裝curl/telnet或其他工具)

這篇具有很好參考價值的文章主要介紹了K8S容器內(nèi)安裝cur/telnet命令(Alpine Linux離線環(huán)境安裝curl/telnet或其他工具)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

背景

需求:

  • 微服務(wù)的基礎(chǔ)是鏡像,通常在最小化的Linux鏡像中安裝jdk,然后運(yùn)行編譯好的java程序。將鏡像運(yùn)行到K8S上就得到了微服務(wù)Pod,Pod通常使用安裝K8S時配置的私有網(wǎng)段,與宿主機(jī)不同。
  • 很多時候需要排查從Pod網(wǎng)段內(nèi)訪問K8S宿主機(jī)網(wǎng)段、其它外部Linux網(wǎng)段或域名接口等等,需要在Pod容器內(nèi)執(zhí)行curl或telnet等常用命令。
  • 但普遍最常用的最小化的Linux容器鏡像AlpineLinux中默認(rèn)沒有curl、telnet等工具,需要手動安裝。

解決:

  • 方式一:(推薦不能停機(jī)的Pod使用)在個人電腦上創(chuàng)建可以上網(wǎng)的alpine Linux容器,獲取curl安裝包,傳輸?shù)終8S容器內(nèi)手動安裝。
  • 方式二:(推薦可以停機(jī)、尚未上線的Pod使用)重新準(zhǔn)備新的基礎(chǔ)鏡像供開發(fā)使用,制定標(biāo)準(zhǔn),后續(xù)使用的最小化鏡像都必須默認(rèn)安裝curl/telent等工具。

解決

方式一:容器不停機(jī)安裝curl

簡要步驟:

  1. 本地獲取curl安裝包:確認(rèn)生產(chǎn)使用的alpine版本、拉取鏡像運(yùn)行容器、下載apk安裝包。
  2. 將curl安裝包復(fù)制到K8S宿主機(jī):scp或lrzsz上傳文件至K8S服務(wù)器。
  3. 將curl安裝包復(fù)制到目標(biāo)Pod容器:kubectl cp復(fù)制文件到具體容器。
  4. 容器內(nèi)安裝apk:登錄容器安裝curl。
  5. 測試curl的使用。
  6. 優(yōu)點(diǎn)/缺點(diǎn)。

1.本地獲取curl安裝包:

確認(rèn)生產(chǎn)alpine版本為3.8:
在K8S上,通過k9s工具/K8S-dashboard/docker exec等命令登錄目標(biāo)容器,執(zhí)行命令cat /etc/os-release查看系統(tǒng)版本。

bash-4.4# hostname 
file-tg-cfd48df98-fnzbv
bash-4.4# cat /etc/os-release 
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.8.2
PRETTY_NAME="Alpine Linux v3.8"
HOME_URL="http://alpinelinux.org"
BUG_REPORT_URL="http://bugs.alpinelinux.org"
bash-4.4# 

在本人電腦(或其它運(yùn)行docker可以上網(wǎng)的服務(wù)器)上,搜索拉取鏡像,運(yùn)行容器

PS C:\Users\Czm> docker pull alpine:3.8
3.8: Pulling from library/alpine
486039affc0a: Pull complete
Digest: sha256:2bb501e6173d9d006e56de5bce2720eb06396803300fe1687b58a7ff32bf4c14
Status: Downloaded newer image for alpine:3.8
docker.io/library/alpine:3.8
PS C:\Users\Czm> docker run -itd --name al38 alpine:3.8 /bin/sh
1e4353774d57297b44c10dafd4b30335015aae80bcee342dcf929bdf3f0bba92
PS C:\Users\Czm> docker ps
CONTAINER ID   IMAGE                                        COMMAND       CREATED         STATUS          PORTS     NAMES
1e4353774d57   alpine:3.8                                   "/bin/sh"     3 seconds ago   Up 2 seconds              al38

登錄容器下載apk安裝包:

PS C:\Users\Czm> docker exec -it al38 /bin/sh

更換alpine apk源為國內(nèi)源:

# 清華大學(xué)源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
# 阿里云源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 中科大源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

創(chuàng)建存放apk的目錄,下載curl及其依賴:

/ # mkdir curl
/ # cd curl/ 
/curl # apk fetch curl -R -o /curl
Downloading libssh2-1.9.0-r1
Downloading zlib-1.2.11-r1
Downloading musl-1.1.19-r11
Downloading libcurl-7.61.1-r3
Downloading busybox-1.28.4-r3
Downloading libressl2.7-libssl-2.7.5-r0
Downloading nghttp2-libs-1.39.2-r0
Downloading libressl2.7-libcrypto-2.7.5-r0
Downloading ca-certificates-20191127-r2
/curl # ls
busybox-1.28.4-r3.apk               curl-7.61.1-r3.apk                  libressl2.7-libcrypto-2.7.5-r0.apk  libssh2-1.9.0-r1.apk                nghttp2-libs-1.39.2-r0.apk
ca-certificates-20191127-r2.apk     libcurl-7.61.1-r3.apk               libressl2.7-libssl-2.7.5-r0.apk     musl-1.1.19-r11.apk                 zlib-1.2.11-r1.apk
/curl #
/curl # apk fetch busybox-extras -R -o /curl
Downloading busybox-extras-1.28.4-r3

打包所有apk文件為一個tar包,方便傳輸:

/ # tar -zcvf czm-231110-Alpine3.8-curl.telnet.tgz /curl/

2.將curl安裝包復(fù)制到K8S宿主機(jī):scp或lrzsz上傳文件至K8S服務(wù)器。

退出容器命令行,返回Windows cmd,執(zhí)行docker cp命令,復(fù)制tar包到Windows。

PS C:\Users\Czm> docker ps
CONTAINER ID   IMAGE                                        COMMAND       CREATED        STATUS        PORTS     NAMES
1e4353774d57   alpine:3.8                                   "/bin/sh"     16 hours ago   Up 16 hours             al38
3127f7c3a2bd   anapsix/alpine-java:8_server-jre_unlimited   "/bin/bash"   7 weeks ago    Up 17 hours             tz
PS C:\Users\Czm> docker cp al38:/czm-231110-Alpine3.8-curl.telnet.tgz d:/czm-231110-Alpine3.8-curl.telnet.tgz
Successfully copied 2.78MB to d:\czm-231110-Alpine3.8-curl.telnet.tgz
PS C:\Users\Czm>

將tar包傳輸?shù)終8S服務(wù)器

[sysma@prod-k8s-0001 ~]$ pwd
/home/sysma
[sysma@prod-k8s-0001 ~]$ ll |grep Alpine
-rw-r--r-- 1 sysma sysma    2781771 Nov 10 10:07 czm-231110-Alpine3.8-curl.telnet.tgz

3.將curl安裝包復(fù)制到目標(biāo)Pod容器:kubectl cp復(fù)制文件到具體容器。

[sysma@prod-k8s-0001 ~]$ ll |grep Al
-rwxr-xr-x 1 sysma sysma        365 Oct 31 09:28 07_getAllDeploy.sh
-rw-r--r-- 1 sysma sysma    2781771 Nov 10 10:07 czm-231110-Alpine3.8-curl.telnet.tgz
drwxr-xr-x 5 sysma sysma        326 Nov  3 09:30 czm_BathAlterDeployEnv
[sysma@prod-k8s-0001 ~]$ kubectl cp czm-231110-Alpine3.8-curl.telnet.tgz file-tg-cfd48df98-fnzbv:/ -c file-tg -n media
Error from server (NotFound): pods "file-tg-cfd48df98-fnzbv" not found
[sysma@prod-k8s-0001 ~]$ kubectl cp czm-231110-Alpine3.8-curl.telnet.tgz file-tg-9b658c46-xkd48:/ -c file-tg -n media
[sysma@prod-k8s-0001 ~]$ 

4. 容器內(nèi)安裝apk:登錄容器安裝curl。

使用K9S工具登錄容器
alpine 安裝telnet,K8S,Docker,Linux,kubernetes,linux,容器
選擇不是sider-car的容器
alpine 安裝telnet,K8S,Docker,Linux,kubernetes,linux,容器
剛才kubectl 復(fù)制的文件已經(jīng)到了容器內(nèi)部。
alpine 安裝telnet,K8S,Docker,Linux,kubernetes,linux,容器
解壓,然后安裝curl工具,貌似apk無法自動解決依賴問題,需要按如下順序安裝之前下載的apk安裝包:
alpine 安裝telnet,K8S,Docker,Linux,kubernetes,linux,容器
實(shí)際操作如下:

bash-4.4# ls
busybox-1.28.4-r3.apk               libcurl-7.61.1-r3.apk               mii-tool-1.60_git20140218-r2.apk    zlib-1.2.11-r1.apk
busybox-extras-1.28.4-r3.apk        libressl2.7-libcrypto-2.7.5-r0.apk  musl-1.1.19-r11.apk
ca-certificates-20191127-r2.apk     libressl2.7-libssl-2.7.5-r0.apk     net-tools-1.60_git20140218-r2.apk
curl-7.61.1-r3.apk                  libssh2-1.9.0-r1.apk                nghttp2-libs-1.39.2-r0.apk
bash-4.4# apk add --no-network nghttp2-libs-1.39.2-r0.apk 
WARNING: Ignoring APKINDEX.adfa7ceb.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.efaa1f73.tar.gz: No such file or directory
(1/1) Installing nghttp2-libs (1.39.2-r0)
Executing glibc-bin-2.29-r0.trigger
OK: 24 MiB in 30 packages
bash-4.4# apk add --no-network libssh2-1.9.0-r1.apk 
WARNING: Ignoring APKINDEX.adfa7ceb.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.efaa1f73.tar.gz: No such file or directory
(1/1) Installing libssh2 (1.9.0-r1)
Executing glibc-bin-2.29-r0.trigger
OK: 24 MiB in 31 packages
bash-4.4# apk add --no-network libcurl-7.61.1-r3.apk 
WARNING: Ignoring APKINDEX.adfa7ceb.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.efaa1f73.tar.gz: No such file or directory
(1/1) Installing libcurl (7.61.1-r3)
Executing glibc-bin-2.29-r0.trigger
OK: 24 MiB in 32 packages
bash-4.4# apk add --no-network curl-7.61.1-r3.apk 
WARNING: Ignoring APKINDEX.adfa7ceb.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.efaa1f73.tar.gz: No such file or directory
(1/1) Installing curl (7.61.1-r3)
Executing busybox-1.28.4-r3.trigger
OK: 24 MiB in 33 packages
bash-4.4# 

5. 測試curl的使用。

從容器內(nèi)部發(fā)送任意curl請求,成功。如圖是post請求發(fā)送一個500MB文件到對端服務(wù)器
alpine 安裝telnet,K8S,Docker,Linux,kubernetes,linux,容器

6. 優(yōu)點(diǎn)/缺點(diǎn)。

優(yōu)點(diǎn):pod不用重啟,業(yè)務(wù)不用中斷。
缺點(diǎn):傳輸安裝包復(fù)雜,需要提前準(zhǔn)備相同版本alpine系統(tǒng)鏡像。容器重啟后curl、telnet工具丟失,還得重復(fù)再裝一次。

方式二:容器停機(jī),改為使用自定義基礎(chǔ)鏡像

就不詳細(xì)寫了,需要詳細(xì)過程的留言。
簡要步驟:文章來源地址http://www.zghlxwxcb.cn/news/detail-767487.html

  1. 本地創(chuàng)建純凈alpine Linux容器
  2. 登錄alpine Linux容器安裝自定義軟件
  3. 提交自定義容器為鏡像:使用docker commit命令提交基礎(chǔ)鏡像。
  4. 聯(lián)系開發(fā)更換底層基礎(chǔ)鏡像:將自定義鏡像推送至harbor倉庫,通知開發(fā)修改dockerfile,將FROM 基礎(chǔ)鏡像修改為自定義鏡像。
  5. 重新部署并登錄容器測試:登錄容器后,自帶curl和其他命令。
    優(yōu)點(diǎn):一勞永逸,一次安裝之后多次更新微服務(wù)都能在基礎(chǔ)鏡像容器中使用curl命令。
    缺點(diǎn):容器需要重新發(fā)布,業(yè)務(wù)需要中斷。

結(jié)束

到了這里,關(guān)于K8S容器內(nèi)安裝cur/telnet命令(Alpine Linux離線環(huán)境安裝curl/telnet或其他工具)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • k8s基礎(chǔ):使用kubectl set image命令更新Deployment中容器的鏡像

    在Kubernetes中,使用 kubectl 更新Deployment中容器的鏡像,可以使用以下命令: 例如,如果你有一個名為 myapp 的 Deployment,其中包含一個名為 mycontainer 的容器,你想將鏡像從 myregistry/myimage:v1 更新到 myregistry/myimage:v2 ,可以執(zhí)行: 這條命令將會觸發(fā)一個滾動更新,根據(jù)你的Deploy

    2024年04月26日
    瀏覽(24)
  • KylinOSv10安裝K8S時Coredns容器報錯

    KylinOSv10安裝K8S時Coredns容器報錯

    KylinOSv10安裝K8S時Coredns容器報錯。使用同一套利用kubeadm工具的安裝腳本,相同的參數(shù)變量,在操作系統(tǒng)版本不同的兩組服務(wù)器上安裝K8S后,其中一組出現(xiàn)coredns容器持續(xù)重啟的問題。(報錯:applying cgroup configuration for process caused “No such device or address”) coredns容器的具體報錯

    2024年02月04日
    瀏覽(37)
  • 安裝 k8s集群的問題:默認(rèn)容器運(yùn)行時從 Docker 改為 Containerd

    安裝 k8s集群的問題:默認(rèn)容器運(yùn)行時從 Docker 改為 Containerd

    ??The Begin??點(diǎn)點(diǎn)關(guān)注,收藏不迷路?? 從 Kuberetes 1.20 版本開始,Kuberetes官方 已經(jīng)將默認(rèn)的容器運(yùn)行時從Docker改為Containerd。 因此,從 Kubernetes 1.20 開始,Kuberetes官方將支持使用 Docker和Containerd 作為容器運(yùn)時,也意味著Kubemetes從Docker的依賴中解耦了出來。 在 Kubernetes1.24 及之后

    2024年04月14日
    瀏覽(27)
  • CentOS安裝k8s單機(jī)/集群及一些命令

    CentOS安裝k8s單機(jī)/集群及一些命令

    目錄 前言 1. 安裝docker 2.?安裝要求 3.準(zhǔn)備網(wǎng)絡(luò)(如果只裝單機(jī)版可跳過此部) 4. 準(zhǔn)備工作 5. 安裝 5.1. 配置阿里云yum k8s源 5.2?安裝kubeadm、kubectl和kubelet 5.3?初始化,只在master執(zhí)行,子節(jié)點(diǎn)不要執(zhí)行 5.3.1 一些錯誤(沒有錯誤直接忽略) 5.4?使用kubectl工具 5.5 子節(jié)點(diǎn)加入(單機(jī)

    2024年01月17日
    瀏覽(44)
  • K8S集群安裝與部署(Linux系統(tǒng))

    K8S集群安裝與部署(Linux系統(tǒng))

    一、環(huán)境說明:CentOS7、三臺主機(jī)(Master:10.0.0.132、Node1:10.0.0.133、Node2:10.0.0.134) 二、準(zhǔn)備環(huán)境: 映射 關(guān)閉防火墻 三、etcd集群配置 安裝etcd(Master) 修改etcd配置文件/etc/etcd/etcd.conf(Master) 安裝K8S節(jié)點(diǎn)組件、etcd、flannel以及docker(Node1和Node2) 修改etcd配置文件/etc/etcd/et

    2024年02月11日
    瀏覽(22)
  • K8s組件:etcd安裝、使用及原理(Linux)

    K8s組件:etcd安裝、使用及原理(Linux)

    1.1 介紹 分布式系統(tǒng)架構(gòu)中對一致性要求很高,etcd就滿足了分布式系統(tǒng)中的一致性要求。 實(shí)現(xiàn)了分布式一致性鍵值對存儲的中間件,支持跨平臺,有活躍的社區(qū)。 etcd 是基于go實(shí)現(xiàn)的一個分布式鍵值對存儲(類比Redis),設(shè)計用來可靠而快速的保存關(guān)鍵數(shù)據(jù)并提供訪問。通過分布

    2024年02月03日
    瀏覽(23)
  • 容器與K8s

    容器與K8s

    容器 vs 虛擬機(jī) 三個概念: ? ? ? ? Docker鏡像除了運(yùn)行程序也打包了程序運(yùn)行環(huán)境。 ? ? ? ? 存放鏡像的倉庫,需要login之后拉去響應(yīng)的鏡像。 ? ? ? ? 基于Docker鏡像創(chuàng)建的linux容器,本質(zhì)是宿主機(jī)上的一個進(jìn)程,與其他資源隔離。 圖2? Docker容器典型使用流程 首先開發(fā)者在

    2024年01月19日
    瀏覽(15)
  • K8S:K8S自動化運(yùn)維容器Docker集群

    K8S:K8S自動化運(yùn)維容器Docker集群

    (1)K8S全程為Kubernetes,由于K到S直接有8個字母簡稱為K8S。 (2)版本:目前一般是1.18~1.2.0,后續(xù)可能會到1.24-1.26,1.24版本后丟棄了docker(如需要使用需要第三方插件配合),目前最新版本是1.27 (3)官網(wǎng):https://kubernetes.io GitHub:GitHub - kubernetes/kubernetes: Production-Grade Container S

    2024年02月10日
    瀏覽(43)
  • k8s如何進(jìn)入容器

    k8s如何進(jìn)入容器

    首先查看你要進(jìn)入容器的NAME kubectl get pod | awk \\\'{print $1}\\\' 注:如果有命名空間需要加上命名空間 命名空間查看方式(箭頭標(biāo)注為命名空間) kubectl -n 命名空間 get pod | awk \\\'{print $1}\\\' -n:命名空間 找到容器后進(jìn)入容器 kubectl exec -it podname[剛剛查到的容器名字] /bin/bash exec:進(jìn)入容器

    2024年02月09日
    瀏覽(20)
  • k8s容器集群管理

    k8s容器集群管理 k8s簡介 容器技術(shù)的發(fā)展 使用kubeadm安裝k8s kubectl Kubernetes 架構(gòu) k8s節(jié)點(diǎn) 節(jié)點(diǎn)與控制面之間的通信 控制器 k8s容器 Kubernetes 對象 Kubernetes 對象管理 Kubernetes 對象管理 指令式命令 Kubernetes 對象管理 指令式對象配置 k8s對象管理 聲明式對象配置 使用 Kustomize 對 Kubern

    2024年02月10日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包