k8s-nginx二進位報Illegal instruction (core dumped)
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正常啟動,問題得到解決。
參考文檔://github.com/openresty/docker-openresty/issues/49