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

K8s 生產(chǎn)環(huán)境問題匯總及解決方案(持續(xù)更新 ing)

這篇具有很好參考價(jià)值的文章主要介紹了K8s 生產(chǎn)環(huán)境問題匯總及解決方案(持續(xù)更新 ing)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

一、前端頁面顯示?503 Service Temporarily Unavailable

問題背景

解決方案

原理

二、Dockfile 構(gòu)建鏡像失?。篧hen using COPY with more than one source file, the destination must be a directory and end with a /?

問題背景

解決方案

原理

三、前端頁面顯示 502 Bad Gateway

問題背景?

解決方案

原理


一、前端頁面顯示?503 Service Temporarily Unavailable

時(shí)間:2023-04-19? ? ? ? k8s 版本:v1.18.4

問題背景

????????Kubernetes 中的前端項(xiàng)目 Pod 運(yùn)行正常,但訪問通過 Ingress 代理的域名時(shí)頁面出現(xiàn)“503 Service Temporarily Unavailable”的錯(cuò)誤,查看 log 日志也無報(bào)錯(cuò)信息。

解決方案

????????我最初是 service.yaml 和 ingress.yaml 里的 name 名稱為 gtp,然后我又修改為 gpt,在修改前沒 kubectl delete 原來的資源,當(dāng)我刪除原來的為 gtp 名稱的 ingress 和 service 資源后,前端頁面就可以正常訪問了。

原理

????????問題出在修改資源名稱時(shí)未刪除舊資源。當(dāng)我將名稱從 gtp 修改為 gpt 時(shí),應(yīng)該首先使用 kubectl delete 刪除舊的資源(即原先的 Ingress 和 Service),然后再應(yīng)用新的資源配置。如果沒有刪除舊資源,可能會(huì)導(dǎo)致以下問題:

  1. Ingress 混淆:如果舊的 Ingress 和新的 Ingress 都存在,它們可能會(huì)爭奪同一個(gè)域名和路徑。這可能導(dǎo)致 Ingress 控制器在處理請(qǐng)求時(shí)混淆,從而選擇錯(cuò)誤的后端服務(wù)。當(dāng)你刪除了舊的 Ingress 資源后,Ingress 控制器開始將流量正確路由到新的后端服務(wù)。

  2. 后端服務(wù)沖突:類似地,如果舊的 Service 和新的 Service 都存在且監(jiān)聽相同的端口,可能會(huì)導(dǎo)致端口沖突或 Kubernetes 無法正確將流量路由到預(yù)期的后端服務(wù)。刪除舊的 Service 資源后,Ingress 控制器可以將流量路由到正確的后端服務(wù)。

????????總之,當(dāng)你修改資源名稱時(shí),務(wù)必確保先刪除舊資源,以避免出現(xiàn)混淆和沖突。在應(yīng)用新的資源配置之前,使用 kubectl delete 刪除舊資源,然后再使用 kubectl apply 應(yīng)用新資源配置。這樣可以確保 Ingress 控制器將流量正確路由到新的后端服務(wù)。

二、Dockfile 構(gòu)建鏡像失敗:When using COPY with more than one source file, the destination must be a directory and end with a /?

K8s 生產(chǎn)環(huán)境問題匯總及解決方案(持續(xù)更新 ing)

問題背景

????????COPY 根據(jù)通配符 * 匹配到多個(gè)多個(gè)文件,所以語法錯(cuò)誤,鏡像構(gòu)建不成功,push 到鏡像倉庫失敗。?

解決方案

在 COPY 最后面加個(gè) / 即可。

原理

? ?COPY 指令的語法是 COPY <src> <dest>,其中 <src> 是要復(fù)制的源文件或目錄,<dest> 是目標(biāo)路徑。在這個(gè)例子中,. 表示當(dāng)前目錄,所以 COPY . . 的含義是將構(gòu)建上下文的當(dāng)前目錄中的所有文件和目錄復(fù)制到容器的工作目錄(由 WORKDIR 指令設(shè)置)。

與?COPY target/*.jar . 有以下幾點(diǎn)區(qū)別:

  1. COPY . . 是將整個(gè)構(gòu)建上下文的當(dāng)前目錄的內(nèi)容復(fù)制到容器的工作目錄。而 COPY target/*.jar . 僅復(fù)制 target 目錄下所有的 .jar 文件到容器的工作目錄。

  2. COPY . . 不需要指定目標(biāo)路徑以 / 結(jié)尾,因?yàn)樗窃趯⒄麄€(gè)目錄復(fù)制到另一個(gè)目錄。而 COPY target/*.jar . 復(fù)制多個(gè)文件時(shí)需要以 / 結(jié)尾,表示目標(biāo)是一個(gè)目錄。

????????使用哪種 COPY 取決于您的需求。如果您需要將整個(gè)構(gòu)建上下文的所有文件復(fù)制到容器中,可以使用 COPY . .。如果您只需要復(fù)制特定的文件或目錄,可以使用類似 COPY target/*.jar . 的語法。

三、前端頁面顯示 502 Bad Gateway

時(shí)間:2023-08-3? ? ? ? k8s 版本:v1.25.4

問題背景?

? ? ? ? 新建了個(gè) service 資源類型為 nodePort 后端指定一組 pod 標(biāo)簽,service 創(chuàng)建成功;使用 Nginx 代理了這個(gè) nodePort 端口使外部可以訪問,結(jié)果訪問前端頁面顯示??502 Bad Gateway。

解決方案

1. 查看 Nginx 錯(cuò)誤日志:

2023/08/03 15:01:52 [error] 29229#29229: *1116307 connect() failed (111: Connection refused) while connecting to upstream, client: 10.22.11.237, server: valetorder.xxx.com, request: "GET / HTTP/1.1", upstream: "http://10.0.4.173:31193/", host: "valetorder.uat.dusto-yc.com"
2023/08/03 15:01:52 [error] 29229#29229: *1116307 connect() failed (111: Connection refused) while connecting to upstream, client: 10.22.11.237, server: valetorder.xxx.com, request: "GET / HTTP/1.1", upstream: "http://10.0.4.172:31193/", host: "valetorder.uat.dusto-yc.com"

????????初步排查是否后端服務(wù)器(upstream)正常運(yùn)行,并且監(jiān)聽了配置文件中指定的端口(例如:31193)

2. 查看后端 pod 的運(yùn)行狀態(tài)

是 running 狀態(tài),無異常

3.?判斷 service 與指定的 pod 是否關(guān)聯(lián)了

[root@idc-master-01 yaml]# kubectl describe svc -n uat valet-order-uat-out
Name:                     valet-order-uat-out
Namespace:                uat
Labels:                   app.kubernetes.io/name=valet-order-uat
                          io.cattle.field/appId=valet-order-uat
Annotations:              <none>
Selector:                 app=valet-order-uat
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.102.177.78
IPs:                      10.102.177.78
Port:                     http  80/TCP
TargetPort:               80/TCP
NodePort:                 http  31193/TCP
Endpoints:                <none>
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

[root@idc-master-01 yaml]# kubectl get pods --selector app=valet-order-uat -n uat
No resources found in uat namespace.

Endpoints 為空且查找不到有?app=valet-order-uat 標(biāo)簽的 pod,那就是 service 資源有問題。

4. 修改 service 資源中的 selector 字段的值

指定 pod 資源文件如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: valet-order-uat
    vvv: 1.0.1
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app.kubernetes.io/name: valet-order-uat

????????我在 service 中的 selector 選擇了?app: valet-order-uat 標(biāo)簽,導(dǎo)致沒有匹配到,改為?app.kubernetes.io/name: valet-order-uat 即可。

最終頁面成功訪問。

原理

? ? ? ? 上面 Pod 資源中的 spec.selector.matchLabels 使用的是一個(gè)復(fù)合標(biāo)簽,即 app.kubernetes.io/name: valet-order-uat。而在 Service 資源中的 selector 使用的是簡單的單個(gè)標(biāo)簽 app: valet-order-uat。

????????由于標(biāo)簽的匹配規(guī)則是精確匹配,所以 Service 的 selector 并不會(huì)與 Pod 資源的 spec.selector.matchLabels 完全匹配。因此,Service 將不會(huì)與該 Pod 直接關(guān)聯(lián),且不會(huì)將流量導(dǎo)向該 Pod。

????????當(dāng) Pod 資源中的 metadata.labelsspec.selector.matchLabels 同時(shí)打了不同的標(biāo)簽,Service 將只會(huì)根據(jù) spec.selector.matchLabels 來選擇與之關(guān)聯(lián)的 Pod。

????????在 Kubernetes 中,Service 的 selector 字段用于選擇與之關(guān)聯(lián)的 Pod。selector 字段包含一個(gè)標(biāo)簽鍵值對(duì)的 map,其中定義了 Service 要選擇哪些標(biāo)簽的 Pod 與之關(guān)聯(lián)。而 Pod 的 metadata.labels 字段是用來標(biāo)識(shí) Pod 的特性和屬性的標(biāo)簽。

????????當(dāng) Service 創(chuàng)建或更新時(shí),它會(huì)根據(jù) spec.selector.matchLabels 字段的標(biāo)簽鍵值對(duì)來選擇與之匹配的 Pod。Pod 的 metadata.labels 字段中的標(biāo)簽不會(huì)影響這個(gè)選擇過程。文章來源地址http://www.zghlxwxcb.cn/news/detail-433538.html

到了這里,關(guān)于K8s 生產(chǎn)環(huán)境問題匯總及解決方案(持續(xù)更新 ing)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • k8s問題匯總

    k8s問題匯總

    本文章為記錄使用k8s遇到的問題和解決方法, 文章持續(xù)更新中... curl: (7) Failed connect to test.com:8080; Connection refused error execution phase kubelet-start: error uploading crisocket: Unauthorized To see the stack trace 網(wǎng)頁提示信息Client sent an HTTP request to an HTTPS server. 原因: 因?yàn)橹苯邮褂胕p:端口的方式是

    2024年02月12日
    瀏覽(61)
  • Spring Cloud 使用 k8s 作為注冊(cè)中心 開發(fā)環(huán)境 和 生產(chǎn)環(huán)境

    Spring Cloud 使用 k8s 作為注冊(cè)中心 開發(fā)環(huán)境 和 生產(chǎn)環(huán)境

    因?yàn)?k8s 本身就有擁有注冊(cè)中心,和配置中心的功能。如果還是用 Nacos、Eureka、Consul 之類的注冊(cè)中心組件,就有點(diǎn)冗余了。當(dāng)然這些組件還是可以繼續(xù)用的。 所以,本教程,教授 Spring Cloud 使用 k8s 的注冊(cè)中心。在開發(fā)環(huán)境和生產(chǎn)環(huán)境 的教程! 下面以一個(gè)最簡單的 服務(wù)消費(fèi)

    2024年02月15日
    瀏覽(112)
  • k8s 集群 搭建過程問題匯總

    1. 為k8s集群添加內(nèi)網(wǎng)域名 修改core-dns 的configmap ,添加hosts 2. 修改apiserver server端口號(hào),支持NodePort?指向80 修改master 節(jié)點(diǎn)?vim /etc/kubernetes/manifests/kube-apiserver.yaml - --service-node-port-range=1-65535 然后記得重啟? (此處我是kubeadmin 安裝的k8s 集群) 刪除pod 完后,會(huì)自動(dòng)重啟

    2024年02月14日
    瀏覽(19)
  • 記一次Redisson連接k8s環(huán)境Redis報(bào)UnknownHostException-域名解析錯(cuò)誤問題解決

    記一次Redisson連接k8s環(huán)境Redis報(bào)UnknownHostException-域名解析錯(cuò)誤問題解決

    一直聽說Redisson分布式鎖好用,終于在項(xiàng)目上使用了!在本地測試完畢,一上測試環(huán)境,運(yùn)維就反饋服務(wù)沒起來,拉日志一看,是以下報(bào)錯(cuò) 主要報(bào)錯(cuò)信息是 于是乎,上github看了一下,發(fā)現(xiàn)這還是一個(gè)比較熱門dns解析失敗的問題,好多人都遇到了同樣的問題。想著開源項(xiàng)目,這

    2024年02月04日
    瀏覽(26)
  • 使用kubeadm搭建生產(chǎn)環(huán)境的多master節(jié)點(diǎn)k8s高可用集群

    使用kubeadm搭建生產(chǎn)環(huán)境的多master節(jié)點(diǎn)k8s高可用集群

    環(huán)境centos 7.9 目錄 ?1.對(duì)安裝 k8s 的節(jié)點(diǎn)進(jìn)行初始化配置 2 通過 keepalived+nginx 實(shí)現(xiàn) k8s apiserver 節(jié)點(diǎn)高可用 3、kubeadm 初始化 k8s 集群 4.擴(kuò)容 k8s 控制節(jié)點(diǎn),把 xuegod62 加入到 k8s 集群 5、擴(kuò)容 k8s 控制節(jié)點(diǎn),把 xuegod64 加入到 k8s 集群 6、擴(kuò)容 k8s 集群-添加第一個(gè)工作節(jié)點(diǎn) ?7、安裝 ku

    2024年02月16日
    瀏覽(26)
  • T1級(jí),生產(chǎn)環(huán)境事故—Shell腳本一鍵備份K8s的YAML文件

    T1級(jí),生產(chǎn)環(huán)境事故—Shell腳本一鍵備份K8s的YAML文件

    大家好,我叫 秋意零 。 最近對(duì)公司進(jìn)行日常運(yùn)維工作時(shí),出現(xiàn)了一個(gè) T1 級(jí)別事故 。導(dǎo)致公司的“酒云網(wǎng)”APP的無法使用。我和我領(lǐng)導(dǎo)一起搞了一個(gè)多小時(shí), 業(yè)務(wù)也停了一個(gè)多小時(shí) 。 起因是:我的部門直系領(lǐng)導(dǎo),叫我**刪除一個(gè) Deployemnt 資源(node-api-gateway)**說該資源不用

    2024年04月27日
    瀏覽(18)
  • 生產(chǎn)問題(十四)K8S搶占CPU導(dǎo)致數(shù)據(jù)庫鏈接池打爆

    生產(chǎn)問題(十四)K8S搶占CPU導(dǎo)致數(shù)據(jù)庫鏈接池打爆

    ????????線上一天出現(xiàn)了兩次數(shù)據(jù)庫連接失敗的大量報(bào)錯(cuò),一開始以為是數(shù)據(jù)庫的問題,但是想了想如果是數(shù)據(jù)庫的問題,應(yīng)該會(huì)有大量的應(yīng)用問題 ????????具體分析之后,發(fā)現(xiàn)其實(shí)是容器cpu出現(xiàn)了Throttled,導(dǎo)致大量線程阻塞 ? ? ? ? 既然出現(xiàn)了報(bào)錯(cuò),又沒有發(fā)布,先

    2024年01月25日
    瀏覽(92)
  • K8S常見異常事件與解決方案

    K8S常見異常事件與解決方案

    Coredns容器或local-dns容器重啟 集群中的coredns組件發(fā)生重啟(重新創(chuàng)建),一般是由于coredns組件壓力較大導(dǎo)致oom,請(qǐng)檢查業(yè)務(wù)是否異常,是否存在應(yīng)用容器無法解析域名的異常。 如果是local-dns重啟,說明local-dns的性能也不夠了,需要優(yōu)化 Pod was OOM killed 云應(yīng)用容器實(shí)例發(fā)生OOM,請(qǐng)

    2024年02月07日
    瀏覽(19)
  • 第12關(guān) 精通K8s下的Ingress-Nginx控制器:生產(chǎn)環(huán)境實(shí)戰(zhàn)配置指南

    第12關(guān) 精通K8s下的Ingress-Nginx控制器:生產(chǎn)環(huán)境實(shí)戰(zhàn)配置指南

    ------ 課程視頻同步分享在今日頭條和B站 大家好,我是博哥愛運(yùn)維,這節(jié)課帶來k8s的流量入口ingress,作為業(yè)務(wù)對(duì)外服務(wù)的公網(wǎng)入口,它的重要性不言而喻,大家一定要仔細(xì)閱讀,跟著博哥的教程一步步實(shí)操去理解。 Ingress基本概念 在Kubernetes集群中,Ingress作為集群內(nèi)服務(wù)對(duì)外

    2024年02月03日
    瀏覽(23)
  • K8s Token 過期解決方案(Kubeadm)

    K8s Token 過期解決方案(Kubeadm)

    Token 是 Node 節(jié)點(diǎn)用來連接 Master 節(jié)點(diǎn)的令牌字串,它和 CA 證書的 Hash 值是把一臺(tái) Node 節(jié)點(diǎn)加入到 K8s 集群時(shí)使用的憑證。如下圖所示: 在 K8s 1.8 之后,默認(rèn)生成的 Token 有效期只有 24 小時(shí),過期后 Token 將不可用,如果想新的 Node 節(jié)點(diǎn)加入 K8s 集群,則需重新生成新的 Token。生

    2024年02月13日
    瀏覽(44)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包