kubernetesの公式で紹介されているPodを作成しようとして400 BadRequestが返された話
phpのk8sクライアントライブラリを使ったときの話です。
使用したライブラリ
こちら、k8s公式でも紹介されているので信頼性が高いと思い採用しました。
400 BadRequest
k8s公式で紹介されているPodの定義です。
apiVersion: v1 kind: Pod metadata: name: test-pd spec: containers: - image: k8s.gcr.io/test-webserver name: test-container volumeMounts: - mountPath: /cache name: cache-volume volumes: - name: cache-volume emptyDir: {}
で、これを読み込んでcreateする。
$client = new Client([ 'master' => 'http://master.mycluster.com', ]); $conf = yaml_parse_file('pod.yml') $client->pods()->create($conf);
すると400 BadRequestが返ってきます。もちろんPodは作成されません。
CLIではエラーが出ない
でもこれ、コマンドで実行するとエラーが発生しないんです!(いやそれが当たり前なんだよ公式だぞ
kubectl apply -f pod.yml
エラーを解消する
で、メッセージ見るとなんか言うてる。意訳すると
( があるべきとこに { があるよ?何してんの?
(あれ、逆だったかな。後ほど確認します。)
いやいやお前が何言ってんねん、と思いYAMLを確認すると、
emptyDir: {}
めっちゃ怪しいヤツいるやんー。
こうしてやりました。
emptyDir:
でPHP実行。上手くいきました!
ちなみに修正後のファイルでもCLIはちゃんと実行できます。
課題(解決)
とりあえず上記の通りPHPのAPIクライアントで実行した時にエラーになったので、こいつの問題である可能性が高い。
でもちゃんと調べてないのでそれを調べる。
追記
無事解決しました。やはりAPIクライアントの問題だったので、修正してプルリクエスト送りました。
https://www.m24te28.com/entry/20190308/1552038961www.m24te28.com