kubectl execの-i,-tオプションをおまじない的に使ってきましたが、本当の意味が分からず悩んでいます。
以下のリファレンスを見ると、
- -i: Pass stdin to the container
- -t: Stdin is a TTY
と書いてあります。
コンテナ内部でlsを実行し、応答を表示することを期待して以下のコマンドで違いが出るかを試しました。
オプション無し、-i が付かない場合はエラーになるかと思ったのですが、オプションの有無に関わらず全て期待通りに動作しました。
なぜこのような動作になるのかご教示いただけないでしょうか。
あと、-iと-tって同じことを言っている気がするのですが違いって何なのでしょうか。
そもそもttyってなんだっけとかは最低限ググってみたのですが。。
実験結果
powershell
1PS C:\k8s\dojo> kubectl exec liveness-check -- ls /usr/share/nginx/html/index.html 2/usr/share/nginx/html/index.html 3 4PS C:\k8s\dojo> kubectl exec -t liveness-check -- ls /usr/share/nginx/html/index.html 5/usr/share/nginx/html/index.html 6 7PS C:\k8s\dojo> kubectl exec -i liveness-check -- ls /usr/share/nginx/html/index.html 8/usr/share/nginx/html/index.html 9 10PS C:\k8s\dojo> kubectl exec -it liveness-check -- ls /usr/share/nginx/html/index.html 11/usr/share/nginx/html/index.html
pod作成に利用したyaml
apiVersion: v1 kind: Pod metadata: name: liveness-check spec: containers: - image: nginx name: nginx livenessProbe: httpGet: port: 80 path: / failureThreshold: 5 periodSeconds: 5
自環境の情報
PS C:\k8s\dojo> minikube version minikube version: v1.16.0 commit: 9f1e482427589ff8451c4723b6ba53bb9742fbb1 PS C:\k8s\dojo> kubectl version Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:59:43Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"windows/amd64"} Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:51:19Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。