k8s-nginx二進制報Illegal instruction (core dumped)


未經允許不得轉載!!

原文鏈接:https://www.cnblogs.com/yaohong/p/14920425.html

1.環境

系統:CentOS 7.3

內核:x86

環境:虛擬機

2.問題

收到一個現場問題,k8s環境中nginx的pod都啟動異常。

#kubectl get pod |grep nginx
nginx-7945cf468c-z7z9r            0/1     Running     0          10m17m

 

看pod日志無任何有效信息,於是進入nginx的pod,執行nginx二進制,報錯Illegal instruction (core dumped)

 

~# kubectl exec -ti nginx-7945cf468c-z7z9r bash
bash-4.4# /usr/local/openresty/nginx/sbin/nginx -h
Illegal instruction (core dumped)

 3.猜想及答案

針對上述問題於是產生如下猜想:

1.鏡像損壞

2.系統安裝了安全軟件

3.系統做過內核或參數升級

判斷問題1:鏡像損壞,於是找到nginx pod編譯前的nginx base鏡像,直接docker run啟動后執行nginx二進制,問題相同;
判斷問題2:根據一番了解,現場環境之前裝過三合一,和瑞星殺毒,但都已經關閉,沒有相關進程;
判斷問題3:了解到現場環境未做內核升級及修改系統參數。

 在一番思考和查到后得到下面這句話:

 

 於是用如下命令查了一下cpu指令集

#grep -q sse4_2 /proc/cpuinfo && echo “SSE 4.2 supported” || echo “SSE 4.2 not supported”
SSE 4.2 not supportedj

竟然CPU不支持SSE 4.2指令集。查看正常運行的環境是支持的

# grep -q sse4_2 /proc/cpuinfo && echo “SSE 4.2 supported” || echo “SSE 4.2 not supported”
“SSE 4.2 supported”

於是咨詢現場是否遷移過虛擬機,果然遷移過。

於是再找到支持SSE 4.2指令集的物理機進行遷移后,環境恢復,nginx正常啟動,問題得到解決。

 

參考文檔:https://github.com/openresty/docker-openresty/issues/49

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM