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

姚紅發表於2021-06-23

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

 

相關文章