0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

N100マシン上のKubernetesクラスタにMinIOをデプロイしようとしてハマった話

Last updated at Posted at 2024-12-07

公式ドキュメントを見ながらMinIO TenantをKubernetesクラスタにデプロイしていたときに、ハマった箇所を残しておくためのメモ。

環境

ホストマシン: GMKtec N100
仮想化基盤: Proxmox
VM OS: Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-49-generic x86_64)

Kubernetes: 1.31.3
CRI-O: 1.31.3

エラー

PodのStatusがErrorになっているので、ログを確認すると

Defaulted container "minio" out of: minio, sidecar, validate-arguments (init)
Fatal glibc error: CPU does not support x86-64-v2

どうやらCPUの命令セットとの互換性が無いらしい。

解決策

コンテナレジストリを確認すると

% curl -s "https://quay.io/api/v1/repository/minio/minio/tag/?limit=100&page=1" | jq '.tags[] | .name' 
"RELEASE.2024-11-07T00-52-20Z.fips"
"RELEASE.2024-11-07T00-52-20Z-cpuv1"
"RELEASE.2024-11-07T00-52-20Z"
"latest"
"RELEASE.2024-10-29T16-01-48Z.fips"
"RELEASE.2024-10-29T16-01-48Z-cpuv1"
"RELEASE.2024-10-29T16-01-48Z"
"RELEASE.2024-10-13T13-34-11Z.fips"
"RELEASE.2024-10-13T13-34-11Z-cpuv1"
"RELEASE.2024-10-13T13-34-11Z"

cpuv1というタグが付いたイメージがある。

マニフェストを持ってきて、使われるイメージを確認すると

kubectl kustomize https://github.com/minio/operator/examples/kustomization/base/ > tenant-base.yaml
tenant-base.yaml
spec:
  certConfig: {}
  configuration:
    name: storage-configuration
  env: []
  externalCaCertSecret: []
  externalCertSecret: []
  externalClientCertSecrets: []
  features:
    bucketDNS: false
    domains: {}
  image: quay.io/minio/minio:RELEASE.2024-10-02T17-50-41Z #ここ

無印で落ちてくるのは、v2以上に対応しているもののようなので、今回のエラーに見舞われてしまった。
-cpuv1をつけると、問題なく起動することができた。

原因

lscpuコマンドで対応している命令セットを見てみる。

N100
fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx
fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid tsc_known_freq
pni cx16 x2apic hypervisor lahf_lm cpuid_fault pti
Ryzen 9 7900
fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx
fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good
nopl tsc_reliable nonstop_tsc cpuid extd_apicid pni pclmulqdq ssse3 fma cx16 sse4_1
sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm
cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs
ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpci d avx512f avx512dq rdseed
adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec
xgetbv1 xsaves avx512_bf16 clzero xsaveerptr a rat npt nrip_save tsc_scale vmcb_clean
flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip
avx512_vbmi2 gfni vaes vpclmulqdq avx 512_vnni avx512_bitalg avx512_vpopcntdq rdpid
fsrm

と、対応している命令セットにかなり違いがあることがわかる。

RedHatさんによると

x86-64-v2 brings support (among other things) for vector instructions up to Streaming SIMD Extensions 4.2 (SSE4.2) and Supplemental Streaming SIMD Extensions 3 (SSSE3), the POPCNT instruction (useful for data analysis and bit-fiddling in some data structures), and CMPXCHG16B (a two-word compare-and-swap instruction useful for concurrent algorithms).
x86-64-v3 adds vector instructions up to AVX2, MOVBE (for big-endian data access), and additional bit-manipulation instructions.
x86-64-v4 includes vector instructions from some of the AVX-512 variants.

https://developers.redhat.com/blog/2021/01/05/building-red-hat-enterprise-linux-9-for-the-x86-64-v2-microarchitecture-level#

つまり、AVX512まで対応しているRyzen 9 7900はv4、SSE4.2やSSSE3にすら対応していないN100はv1ということになる。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?