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