インフラ系SEの技術メモ

雑なエンジニアが低信頼性のメモを書いています。参考程度にとどめてください。

Kubernetes

(Kubernetes)コンテナランタイムの調べ方

何使ってるの? Kubernetesにて、バージョン 1.20 以降ランタイムとしての Docker を廃止するという動きがありました。 それに伴いAKSやGKEもDockerを廃止し、新しいノードはデフォルトで containerd を使用する流れに。一方それってkubectlコマンドで確認で…

(Kubernetes)Oktaによるユーザ管理とは?

Okta? Okta、Inc.は、サンフランシスコに本社があるアイデンティティおよびアクセス管理会社とのこと。 同社はKubernetesのログイン周りのツールも出していて、それがOkta。OpenIDConnectに従い、RBACと結合することで認証周りをよしなにやってくれる模様。…

(Kubernetes)Podに対してexecを実行するのに必要な権限がややこしい

何が必要? こんな感じで権限紐付けがされている時に # kubectl describe rolebinding testrb Name: testrb Labels: <none> Annotations: <none> Role: Kind: Role Name: testrole Subjects: Kind Name Namespace ---- ---- --------- User testuser以下のRoleがあればex</none></none>…

(Kubernetes)EncryptionConfigurationのidentity: {}を消すと既存のSecretも見えなくなる

ETCDの暗号化 保管しているデータが丸見えなのはよろしくないので暗号化しましょう・・という話。「kind: EncryptionConfiguration」というYAMLを作成した上でapiserver側にて--encryption-provider-config=/etc/kubernetes/etcd/ec.yamlを入れ込めばOK。ち…

(Kubernetes)CoreDNSをサーバから使ってみたり

Kubernetesの世界ではCoreDNSと呼ばれる機構があり、コンテナはこのCoreDNSに名前解決を依頼することでサービスのIPを知らなくても通信が行えます。そんなCoreDNSですが、実はコンテナの外(Node)からも利用できます。 環境情報 Kubernetes 1.23 Red Hat En…

(コンテナ)イメージの脆弱性をチェックするTrivyというツール

Trivy? 同ツールはコンテナイメージの脆弱性診断ツールでGitHubから自由に利用できます。 もともとは日本で個人開発されていたようですが、今はAqua Security社が開発している模様。ユニークなのは、OSにインストールして使う形である点。Redhat系やDebian…

(Kubernetes)watch chan error: etcdserver: mvcc: required revision has been compactedというエラー

APIサーバに定期的に出る ログを見るとこんな感じで定期的に出てきます。 W0301 08:23:56.457841 1 watcher.go:229] watch chan error: etcdserver: mvcc: required revision has been compacted W0301 08:31:36.434391 1 watcher.go:229] watch chan error:…

(Kubernetes)apiserverが落ちていてもlivenessはkubeletが起動しつづける

rediness / livenessはkubeletが担当 コンテナの生き死にをハンドリングするLiveness Probe、Readiness Probeですが、これはMaster(kube-apiserver)が行うわけではないです。公式ページにも kubeletは、Liveness Probeを使用して、コンテナをいつ再起動す…

(Kubernetes)クラスターのセキュリティ周りをチェックするkube-benchがおもしろい

メモ 「kube-bench」というツールはインフラ観点でKubernetesクラスターを診断してくれるものですが、触ってみるとこれがまたよく出来ていたので試し打ち結果と共に紹介します。v1.23.2で試しています。 # docker run --pid=host -v /etc:/etc:ro -v /var:/v…

(Kubernetes)DashboardのPodがlivenessProbeでErrorになる件

延々再起動 KubernetesのDashboard用のPodを見ると以下のように書かれていて起動に失敗している模様。 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 46m default-scheduler Successfully assigned kubernetes-dash…

(Kubernetes)PodがrestartしすぎてYou have reached your pull rate limitになっていた

Podがリスタートしまくりで・・・ Podが異常終了しているので見に行くと以下のような状態でした。 # kubectl get pod -n kubernetes-dashboard NAME READY STATUS RESTARTS AGE dashboard-metrics-scraper-xx-77bs4 1/1 Running 0 24h kubernetes-dashboard-…

(Kubernetes)初期状態のDashboardでは権限が何もないという話

ダッシュボードでKubernetesの状態がみたい デフォルトでKubernetesのダッシュボードを展開すると、同Podにアクセスするも 表示するものがありません リソースがありません。 という状態です。理由としてはDeploymentにServiceAccountがあるも何も権限を持っ…

(Kubernetes)revisionHistoryLimitの最大値は2億という話

ロールバックする際に利用 DeploymentにrevisionHistoryLimitを設定して ReplicaSet のリビジョン数を制御することがありますが、ここのドキュメントを見ると This is set to the max value of int32 (i.e. 2147483647) by default, which means “retaining …

(Kubernetes)コンテナがいつ消えたのかをkubelet.logから知りたい

ログを見てみる 以下を実行すると $ kubectl delete pod xx pod "xx" deletedkubeletのログには以下。 Dec 9 21:06:40 kube-xx kubelet.log I1209 12:06:40.890715 9549 kubelet.go:1894] SyncLoop (PLEG): "xx", event: &pleg.PodLifecycleEvent{ID:"xx", T…

(Kubernetes)Konnectivityというマスターとワーカーの通信サービス

なにそれ? Kubernetesの公式ページを見ていると The Konnectivity service provides a TCP level proxy for the control plane to cluster communication と記載されているコンポーネントを発見。調査したところ、マスターノードとワーカーノードが通信する…

(Kubernetes)Deploymentを作るもScaled up replica setで固まる事象

Podが起動しない Conditions: Type Status Reason ---- ------ ------ Progressing True NewReplicaSetCreated Available False MinimumReplicasUnavailable ReplicaFailure True FailedCreate OldReplicaSets: <none> NewReplicaSet: ... (0/1 replicas created) </none>…

(Kubernetes)kubectlで複数のpodを一気に消す

やり方 ステータスの値が「Completed」のものを消す場合は以下。 $ kubectl get pods | awk '{if ($3 ~ /Completed/) system ("kubectl delete pods " $1)}' pod "xx" deleted pod "xx" deleted pod "xx" deletedちなみに適当に $ kubectl delete pod *とや…

(kubectl)Unable to connect to the server: dial tcp [::1]:8080: connectexというエラー

事象 以下エラー発生。 $ kubectl get ns Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it. 原因 ホームディレクトリ配下に配置していた.kubeが消えていた。…

(Kubernetes)initコンテナでPod起動時の前処理を行う

initContainersフィールドを使う initContainers: - name: before .. containers: - name : hoge ...ってな感じでコンテナを記載すれば先にbeforeのコンテナが動いてコマンド実行し終わってからhogeが動きます。 便利。

AIXで静的経路を確認するコマンド

静的経路を確認したい よく打つにもかかわらずよく忘れるんですよね。 $ netstat -rnでIPアドレスがずら~っと出ます。逆にホスト名で見たい場合は $ netstat -rです。

IKSにTokenが期限切れと怒られた時に再取得する流れ

Unable to connect api server 以下エラーメッセージ。 $ kubectl get ns Unable to connect to the server: failed to refresh token: oauth2: cannot fetch token: 400 Bad Request Response: {"errorCode":"BXNIM0408E","errorMessage":"Provided refresh…

k8s.gcr.io/pauseコンテナが/pauseで動作しているけどこいつが何者か調べた

pauseコンテナ kubectlコマンドでPodを調査しても出てこないコンテナですが、dockerコマンドで見るとpauseコンテナが大量にあります。 こいつは何者なのでしょうか? Pod環境の場所取り pauseコンテナはsandboxコンテナやinfraコンテナとも呼ばれる特殊なコ…

オンプレKubernetesでLoadBalancerを展開してもただのNodePortになる話

LoadBalancerが使いたい NodePortはPodが展開しているNodeのIPアドレスを打ち込む必要があるので、ロードバランサのような別IPに打てばよしなにPodに展開して欲しいものです。そのようなServiceとしてLoadBalancerがKubernetesではありますが、Cloudのように…

KubernetesでVolumeBindingでPodがこけるもVolumeにあまり関係なかった話

Podが起動失敗 error while running "VolumeBinding" filter plugin for pod 1": pod has unbound immediate PersistentVolumeClaimsというエラーメッセージ。 で、いろいろ調べているとPodを動かす時のコマンドにミスがありました。確かにボリュームをマウ…