ΠΡΠΎΠ±ΡΠ°Π·ΠΈΠΌ ΠΎΠ±ΡΠ°Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kubernetes.
ΠΡΠΎΠ±ΡΠ°Π·ΠΈΠΌ ΡΠ·Π»Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈ ΠΈΡ ΡΡΠ°ΡΡΡ.
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION awesome-cluster-master-01.local Ready control-plane 1y68d v1.26.3 awesome-cluster-master-02.local Ready control-plane 533d v1.26.3 awesome-cluster-master-03.local Ready control-plane 1y121d v1.26.3 awesome-cluster-node-01.local Ready <none> 1y79d v1.26.3 awesome-cluster-node-02.local Ready <none> 1y75d v1.26.3 awesome-cluster-node-03.local Ready <none> 1y291d v1.26.3 awesome-cluster-node-04.local Ready <none> 1y66d v1.26.3 awesome-cluster-node-05.local Ready <none> 1y50d v1.26.3
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌΒ Π²ΡΠ΅ ΠΎΠ±ΡΠ°Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π½Π° Π²ΡΠ΅Ρ ΡΠ·Π»Π°Ρ .
$ kubectl get nodes --output json | \ jq --raw-output '.items[].status.images[].names[]' | \ sort --uniq
docker.io/calico/cni:v3.20.2 docker.io/calico/cni@sha256:3dae26de7388ff3c124b9abd7e8d12863887391f23549c4aebfbfa20cc0700a5 docker.io/calico/node:v3.20.2 docker.io/calico/node@sha256:1ae8f57edec7c3a84cd48dd94132a1dcfd7c61bfff819c559f9379d4a56fe3b1 docker.io/calico/pod2daemon-flexvol:v3.20.2 docker.io/calico/pod2daemon-flexvol@sha256:4514cc1b2f7536fe1d514fad8a2c46103382243bb9db5ea2d0063fcd2001e8f7 docker.io/gitlab/gitlab-runner:alpine-v15.11.1 docker.io/gitlab/gitlab-runner@sha256:62d7c026513082fee95ac1666c6ad2d67d4417325d963ec539be4912e6d35623 docker.io/istio/proxyv2:1.11.4 docker.io/istio/proxyv2@sha256:68b1012e5ba209161671f0e76c92baad845cef810fa0a7cf1b105fee8f0d3e46 docker.io/jupyterhub/k8s-hub:1.1.3 docker.io/jupyterhub/k8s-hub@sha256:c9c80b2b86763f538de9fc2bc235d177bd34830ff7d4cdf8e7ca6dc6c3e96e9e docker.io/praqma/network-multitool:latest docker.io/praqma/network-multitool@sha256:97b15098bb72df10f7c4e177b9c0e2435ec459f16e79ab7ae2ed3f1eb0e79d19 docker.io/rancher/rancher:v2.7.6 docker.io/rancher/rancher@sha256:7e42b1a631859c6740835659a022ed96097955dde2707f32e7a089f5b5f64c06 k8s.gcr.io/coredns/coredns:v1.8.6 k8s.gcr.io/coredns/coredns@sha256:5b6ec0d6de9baaf3e92d0f66cd96a25b9edbce8716f5f15dcd1a616b3abd590e k8s.gcr.io/etcd:3.5.3-0 k8s.gcr.io/etcd@sha256:13f53ed1d91e2e11aac476ee9a0269fdda6cc4874eba903efd40daf50c55eee5 k8s.gcr.io/kube-apiserver:v1.26.3 k8s.gcr.io/kube-apiserver@sha256:ad9608e8a9d758f966b6ca6795b50a4723982328194bde214804b21efd48da44 k8s.gcr.io/kube-controller-manager:v1.26.3 k8s.gcr.io/kube-controller-manager@sha256:594a3f5bbdd0419ac57d580da8dfb061237fa48d0c9909991a3af70630291f7a k8s.gcr.io/kube-proxy:v1.26.3 k8s.gcr.io/kube-proxy@sha256:1652df3138207570f52ae0be05cbf26c02648e6a4c30ced3f779fe3d6295ad6d k8s.gcr.io/kube-scheduler:v1.26.3 k8s.gcr.io/kube-scheduler@sha256:0d2de567157e3fb97dfa831620a3dc38d24b05bd3721763a99f3f73b8cbe99c9 k8s.gcr.io/metrics-server/metrics-server:v0.5.1 k8s.gcr.io/metrics-server/metrics-server@sha256:3ae6366cbeab73860a4f4a297e82134c1531bbe766d70cf677a7ba2e84d412d0 k8s.gcr.io/pause:3.2 k8s.gcr.io/pause:3.7 k8s.gcr.io/pause@sha256:927d98197ec1141a368550822d18fa1c60bdae27b78b0c004f705f548c07814f k8s.gcr.io/pause@sha256:bb6ed397957e9ca7c65ada0db5c5d1c707c9c8afc80a94acbe69f3ae76988f0c quay.io/argoproj/argocd:v2.3.4 quay.io/argoproj/argocd@sha256:85d55980e70f8f7073e4ce529a7bbcf6d55e51f8a7fc4b45d698f0a7ffef0fea quay.io/brancz/kube-rbac-proxy:v0.13.0 quay.io/brancz/kube-rbac-proxy@sha256:6ed5ed1852f191eea344b11578bdb0b602b27727e6df685de5f1c73c9d066ae4 quay.io/k8tz/k8tz:0.4.0 quay.io/k8tz/k8tz@sha256:78152c818e87306227ff210e535d99ee5f9864967d5b4b9ccfd9cfe44e2323f1 quay.io/prometheus/node-exporter:v1.3.1 quay.io/prometheus/node-exporter@sha256:f2269e73124dd0f60a7d19a2ce1264d33d08a985aed0ee6b0b89d0be470592cd registry.gitlab.com/security-products/nodejs-scan:3 registry.gitlab.com/security-products/nodejs-scan@sha256:928f6a1a125253c2c83f243969784f7e2e6ea943916d1ad20a5ef8b8f138aff9 registry.gitlab.com/security-products/semgrep:3 registry.gitlab.com/security-products/semgrep@sha256:258ceebede48e14d7eb3759018537b4602950a93d146c1d7b9c240eebabf35e3
Π‘ΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ΄Π°ΠΌΠΈ.
$ kubectl get pods --all-namespaces --output jsonpath='{range .items[*]}{.spec.containers[*].image}{"\n"}{end}' | \
sort --uniq
docker.io/calico/kube-controllers:v3.20.2 docker.io/calico/node:v3.20.2 docker.io/istio/proxyv2:1.11.4 gcr.io/istio-testing/pilot:1.13-dev ghcr.io/dexidp/dex:v2.30.2 gitlab/gitlab-runner:alpine-v15.11.1 grafana/grafana:9.1.6 haproxy:2.0.25-alpine jupyterhub/configurable-http-proxy:4.5.0 jupyterhub/k8s-hub:1.1.3 k8s.gcr.io/coredns/coredns:v1.8.6 k8s.gcr.io/etcd:3.5.3-0 k8s.gcr.io/kube-apiserver:v1.26.3 k8s.gcr.io/kube-controller-manager:v1.26.3 k8s.gcr.io/kube-proxy:v1.26.3 k8s.gcr.io/kube-scheduler:v1.19.13 k8s.gcr.io/kube-scheduler:v1.26.3 k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.6.0 quay.io/brancz/kube-rbac-proxy:v0.13.0 quay.io/brancz/kube-rbac-proxy:v0.13.0 k8s.gcr.io/metrics-server/metrics-server:v0.5.1 k8s.gcr.io/pause:3.5 nginx:1.24.0-alpine3.17 praqma/network-multitool praqma/network-multitool gcr.io/istio-testing/proxyv2:1.13-dev quay.io/argoproj/argo-rollouts:v1.2.0-rc1 quay.io/argoproj/argocd-applicationset:v0.4.1 quay.io/argoproj/argocd:v2.3.4 quay.io/jetstack/cert-manager-cainjector:v1.13.0 quay.io/jetstack/cert-manager-controller:v1.13.0 quay.io/jetstack/cert-manager-webhook:v1.13.0 quay.io/jupyterhub-ssh/ssh:0.0.1-n136.ha610981 quay.io/k8tz/k8tz:0.4.0 quay.io/kiali/kiali-operator:v1.41.0 quay.io/kiali/kiali:v1.41.0 gcr.io/istio-testing/proxyv2:1.13-dev quay.io/prometheus-operator/prometheus-operator:v0.59.2 quay.io/brancz/kube-rbac-proxy:v0.13.0 quay.io/prometheus/alertmanager:v0.24.0 quay.io/prometheus-operator/prometheus-config-reloader:v0.59.2 quay.io/prometheus/blackbox-exporter:v0.22.0 jimmidyson/configmap-reload:v0.5.0 quay.io/brancz/kube-rbac-proxy:v0.13.0 quay.io/prometheus/node-exporter:v1.3.1 quay.io/brancz/kube-rbac-proxy:v0.13.0 quay.io/prometheus/prometheus:v2.38.0 quay.io/prometheus-operator/prometheus-config-reloader:v0.59.2 quay.io/rhdevelopers/bgd:1.0.0 rancher/fleet-agent:v0.7.1 rancher/fleet:v0.7.1 rancher/gitjob:v0.1.54 rancher/rancher-webhook:v0.3.5 rancher/rancher:v2.7.6 redis:6.2.6-alpine redis:6.2.6-alpine registry.k8s.io/ingress-nginx/controller:v1.8.2@sha256:74834d3d25b336b62cabeb8bf7f1d788706e2cf1cfd64022de4137ade8881ff2 registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.10.0
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌ ΠΎΠ±ΡΠ°Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π½ΠΎΠ΄Π°Ρ .
$ kubectl get node awesome-cluster-node-03.local --output json | \ jq --raw-output '.status.images[].names[]' | \ sort
docker.io/calico/cni:v3.20.2 docker.io/calico/cni@sha256:3dae26de7388ff3c124b9abd7e8d12863887391f23549c4aebfbfa20cc0700a5 docker.io/calico/node:v3.20.2 docker.io/calico/node@sha256:1ae8f57edec7c3a84cd48dd94132a1dcfd7c61bfff819c559f9379d4a56fe3b1 docker.io/gitlab/gitlab-runner:alpine-v15.11.1 docker.io/gitlab/gitlab-runner@sha256:62d7c026513082fee95ac1666c6ad2d67d4417325d963ec539be4912e6d35623 docker.io/istio/proxyv2:1.11.4 docker.io/istio/proxyv2@sha256:68b1012e5ba209161671f0e76c92baad845cef810fa0a7cf1b105fee8f0d3e46 docker.io/jupyterhub/k8s-hub:1.1.3 docker.io/jupyterhub/k8s-hub@sha256:c9c80b2b86763f538de9fc2bc235d177bd34830ff7d4cdf8e7ca6dc6c3e96e9e k8s.gcr.io/kube-proxy:v1.26.3 k8s.gcr.io/kube-proxy@sha256:1652df3138207570f52ae0be05cbf26c02648e6a4c30ced3f779fe3d6295ad6d registry.gitlab.com/security-products/nodejs-scan:3 registry.gitlab.com/security-products/nodejs-scan@sha256:928f6a1a125253c2c83f243969784f7e2e6ea943916d1ad20a5ef8b8f138aff9 registry.gitlab.com/security-products/semgrep:3 registry.gitlab.com/security-products/semgrep@sha256:258ceebede48e14d7eb3759018537b4602950a93d146c1d7b9c240eebabf35e3
ΠΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΡΡΡΠΊΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠ±ΡΠ°Π·Π° ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅.
$ kubectl get node awesome-cluster-node-03.local --output json | jq --raw-output '.status.images | first'
{
"names": [
"k8s.gcr.io/kube-proxy@sha256:1652df3138207570f52ae0be05cbf26c02648e6a4c30ced3f779fe3d6295ad6d",
"k8s.gcr.io/kube-proxy:v1.24.1"
],
"sizeBytes": 39515102
}
Π Π°ΡΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΎΠ±ΡΠ΅Π΅ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ ΠΎΠ±ΡΠ°Π·Π°ΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡΠ·Π»Π΅.
$ kubectl get node awesome-cluster-node-03.local --output json | \ jq '[.status.images[].sizeBytes] | add' | \ numfmt --to=iec-i --suffix=B
17GiB
ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅:
- πΒ ΠΠ°ΠΊ ΡΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ°Π·ΠΎΠ² Docker Π² ΡΠ΅Π΄ΠΆΠ΅ΡΡΡΠΈ GitLab
- π³Β Π‘Π±ΠΎΡΠΊΠ° Docker-ΠΎΠ±ΡΠ°Π·ΠΎΠ² Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Buildx
- π§Β ΠΠ°ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π² ΡΠ°Π·Π΄Π΅Π» Π² Linux
- πΠΠ°ΠΊ ΠΎΡΠΌΠ΅Π½ΡΡΡ, ΡΠ΄Π°Π»ΡΡΡ ΠΈΠ»ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Git-ΠΊΠΎΠΌΠΌΠΈΡΡ
- πΒ git diff ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½Π΅ Git Repo, ΠΈ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
![]()
