From 758e9af2409f0dcd3c0e2059621b92004c0f1df0 Mon Sep 17 00:00:00 2001 From: poneding <poneding@users.noreply.github.com> Date: Thu, 13 Jun 2024 09:01:43 +0000 Subject: [PATCH] deploy: eba83a9dd883e0d30f24deb76aba97d7ab801ee4 --- 404.html | 4 ++-- Makefile | 2 +- algo/index.html | 8 ++++---- algo/index.xml | 2 +- .../\345\240\206\346\216\222\345\272\217/index.html" | 6 +++--- .../index.html" | 6 +++--- aws/build-eks-cluster/index.html | 6 +++--- aws/cluster-autoscaler/index.html | 6 +++--- aws/create-eks-cluster/index.html | 6 +++--- aws/eks-config-alb-ingress/index.html | 6 +++--- aws/eks-details/index.html | 6 +++--- aws/eks-intergrate-gitlab-auto-release-01/index.html | 6 +++--- aws/eks-intergrate-gitlab-auto-release-02/index.html | 6 +++--- aws/eks-use-efs/index.html | 6 +++--- aws/gitlab-eks/index.html | 6 +++--- aws/index.html | 8 ++++---- aws/index.xml | 2 +- aws/k8s-deploy-kong/index.html | 6 +++--- aws/k8s-deploy-konga/index.html | 6 +++--- aws/k8s-deploy-postgres/index.html | 6 +++--- aws/terraform-remanage-resource/index.html | 6 +++--- categories/index.html | 6 +++--- categories/index.xml | 2 +- cka/001/index.html | 6 +++--- cka/index.html | 8 ++++---- cka/index.xml | 2 +- cka/prepare-cka/index.html | 6 +++--- cka/tasks/index.html | 6 +++--- cs/index.html | 8 ++++---- cs/index.xml | 2 +- cs/internet/index.html | 6 +++--- cs/networking/index.html | 6 +++--- cs/virtual-memory/index.html | 6 +++--- dapr/dapr/index.html | 6 +++--- dapr/index.html | 8 ++++---- dapr/index.xml | 2 +- design-pattern/cicd/index.html | 6 +++--- design-pattern/index.html | 8 ++++---- design-pattern/index.xml | 2 +- devops/agile/index.html | 6 +++--- devops/ansible/index.html | 6 +++--- devops/bule-green-rollback-gray/index.html | 6 +++--- devops/chaos-engineering/index.html | 6 +++--- devops/commercial-canvas/index.html | 6 +++--- devops/grafana-monite-service-with-5xx/index.html | 6 +++--- devops/grafana-monite-service/index.html | 6 +++--- devops/grafana/index.html | 6 +++--- devops/index.html | 8 ++++---- devops/index.xml | 2 +- devops/jeager/index.html | 6 +++--- devops/nginx/index.html | 6 +++--- docker/container-diff/index.html | 6 +++--- docker/dind/index.html | 6 +++--- docker/docker-buildx/index.html | 6 +++--- docker/docker-commands/index.html | 6 +++--- docker/docker-compose-practice/index.html | 6 +++--- docker/docker-container-install-pfx-cert/index.html | 6 +++--- docker/docker-copy-between-host-container/index.html | 6 +++--- .../index.html | 6 +++--- docker/docker-run-link/index.html | 6 +++--- docker/docker-visiable-tool-kitematic/index.html | 6 +++--- docker/dockerfile/index.html | 6 +++--- docker/index.html | 8 ++++---- docker/index.xml | 2 +- docker/linux-container/index.html | 6 +++--- .../index.html | 6 +++--- docker/some-apps/index.html | 6 +++--- ebpf/ebpf/index.html | 6 +++--- ebpf/index.html | 8 ++++---- ebpf/index.xml | 2 +- front-end/build-blog-site/index.html | 6 +++--- front-end/index.html | 8 ++++---- front-end/index.xml | 2 +- front-end/pinia/index.html | 6 +++--- front-end/vitepress/index.html | 6 +++--- front-end/vue3/index.html | 6 +++--- git/common-usage/index.html | 6 +++--- git/git-secret/index.html | 6 +++--- git/github-action-best-practice/index.html | 6 +++--- git/github-host-helm-chart/index.html | 6 +++--- git/github-hosting-helm-reop/index.html | 6 +++--- git/github/index.html | 6 +++--- git/gitlab-intergrate-k8s/index.html | 6 +++--- git/gitlab-upgrade-cross-version/index.html | 6 +++--- git/index.html | 8 ++++---- git/index.xml | 2 +- git/multi-github-account-management/index.html | 6 +++--- git/simplest-git-server/index.html | 6 +++--- go/dev-env-config/index.html | 6 +++--- go/function-optional-pattern/index.html | 6 +++--- go/go-cert-management/index.html | 6 +++--- go/go-cross-complie/index.html | 6 +++--- go/go-gen-cert/index.html | 6 +++--- go/go-linkname/index.html | 6 +++--- go/go-list-to-tree/index.html | 6 +++--- go/go-mtls/index.html | 6 +++--- go/go-publish-package-01/index.html | 6 +++--- go/go-publish-package-02/index.html | 6 +++--- go/go-solid/index.html | 6 +++--- go/go-stdlib/index.html | 6 +++--- go/go-testing/index.html | 6 +++--- go/go/index.html | 6 +++--- go/gopkg-errors/index.html | 6 +++--- go/goreleaser/index.html | 6 +++--- go/index.html | 8 ++++---- go/index.xml | 2 +- go/mac-appl-silicon-cross-compile-cgo/index.html | 6 +++--- go/pprof/index.html | 6 +++--- go/ssh-keygen-with-go/index.html | 6 +++--- graphql/graphql/index.html | 6 +++--- graphql/index.html | 8 ++++---- graphql/index.xml | 2 +- grpc/gRPC/index.html | 6 +++--- grpc/index.html | 8 ++++---- grpc/index.xml | 2 +- index.html | 12 ++++++------ index.xml | 2 +- istio/Istio/index.html | 6 +++--- istio/aws-acm-tls-management/index.html | 6 +++--- istio/index.html | 8 ++++---- istio/index.xml | 2 +- istio/installation/index.html | 6 +++--- istio/istio-auth-policy/index.html | 6 +++--- istio/istio-canary-deploy/index.html | 6 +++--- istio/istio-cors/index.html | 6 +++--- istio/istio-timeout/index.html | 6 +++--- istio/istio-white-manifest/index.html | 6 +++--- istio/tls-transform/index.html | 6 +++--- istio/traffic-management/index.html | 6 +++--- .../index.html | 6 +++--- kubernetes/apiserver-builder/index.html | 6 +++--- kubernetes/apiserver/index.html | 6 +++--- .../binary-build-k8s-01-prepare-nodes/index.html | 6 +++--- .../binary-build-k8s-02-deploy-etcd/index.html | 6 +++--- .../binary-build-k8s-03-deploy-master/index.html | 6 +++--- .../binary-build-k8s-04-deploy-worker/index.html | 6 +++--- kubernetes/cloud-native-understood/index.html | 6 +++--- kubernetes/cluster-federation/index.html | 6 +++--- kubernetes/configmap-understood/index.html | 6 +++--- kubernetes/delete-es-log-index-scheduler/index.html | 6 +++--- kubernetes/delete-k8s-resource-force/index.html | 6 +++--- kubernetes/gateway-api-practice/index.html | 6 +++--- .../helm-k8s-package-management-tool/index.html | 6 +++--- kubernetes/hpa-usage/index.html | 6 +++--- kubernetes/http-call-k8s-apiserver/index.html | 6 +++--- kubernetes/index.html | 8 ++++---- kubernetes/index.xml | 2 +- kubernetes/informer/index.html | 6 +++--- kubernetes/ingress-gray-deploy/index.html | 6 +++--- kubernetes/installation/index.html | 6 +++--- kubernetes/k3s/index.html | 6 +++--- kubernetes/k8s-deploy-coredns/index.html | 6 +++--- kubernetes/k8s-deploy-dashboard/index.html | 6 +++--- kubernetes/k8s-deploy-efk/index.html | 6 +++--- kubernetes/k8s-deploy-prometheus-grafana/index.html | 6 +++--- kubernetes/k8s-deploy-zookeeper-kafka/index.html | 6 +++--- kubernetes/k8s-dev-01-api-concept/index.html | 6 +++--- kubernetes/k8s-dev-02-crd/index.html | 6 +++--- .../k8s-dev-50-extend-kube-scheduler/index.html | 6 +++--- kubernetes/k8s-get-started/index.html | 6 +++--- kubernetes/kubeadm-install-k8s-docker/index.html | 6 +++--- kubernetes/kubeadm-install-k8s/index.html | 6 +++--- kubernetes/kubeadm-upgrade/index.html | 6 +++--- kubernetes/kubebuilder-inaction/index.html | 6 +++--- kubernetes/kubectl/index.html | 6 +++--- kubernetes/kubernetes-best-practice/index.html | 6 +++--- kubernetes/kubernetes-dashboard/index.html | 6 +++--- kubernetes/kubernetes-naming-constraints/index.html | 6 +++--- kubernetes/kubernetes/index.html | 6 +++--- kubernetes/kubevirt-create-windows-vm/index.html | 6 +++--- kubernetes/kubevirt-practice/index.html | 6 +++--- kubernetes/kustomize/index.html | 6 +++--- kubernetes/liveness-readiness-probe/index.html | 6 +++--- kubernetes/local-storageclass/index.html | 6 +++--- kubernetes/metallb/index.html | 6 +++--- kubernetes/nfs-as-pvc/index.html | 6 +++--- kubernetes/pod-understood/index.html | 6 +++--- kubernetes/prgramming-kubernetes/index.html | 6 +++--- .../prometheus-collect-kong-metrics/index.html | 6 +++--- kubernetes/prometheus/index.html | 6 +++--- kubernetes/pvc-expansion/index.html | 6 +++--- kubernetes/secret-understood/index.html | 6 +++--- kubernetes/service-understood/index.html | 6 +++--- kubernetes/telepresence/index.html | 6 +++--- kubernetes/terminate-pod-gracefully/index.html | 6 +++--- kubernetes/terraform/index.html | 6 +++--- .../velero-minio-backup-restore-volume/index.html | 6 +++--- kubernetes/volume-understood/index.html | 6 +++--- kubernetes/vpa/index.html | 6 +++--- linux/certbot-auto-gen-cert/index.html | 6 +++--- linux/history-with-date/index.html | 6 +++--- linux/index.html | 8 ++++---- linux/index.xml | 2 +- linux/linux-commands/index.html | 6 +++--- linux/linux-common-commands/index.html | 6 +++--- linux/linux-enable-crontab-log/index.html | 6 +++--- linux/linux-secure-login/index.html | 6 +++--- linux/shell-command-interval-character/index.html | 6 +++--- linux/shell/index.html | 6 +++--- linux/ssh-tunnel-connect-middleware/index.html | 6 +++--- linux/tee-keep-stderr/index.html | 6 +++--- linux/vim-common-commands/index.html | 6 +++--- manifest.json | 4 ++-- middleware/elasticsearch/index.html | 6 +++--- middleware/index.html | 8 ++++---- middleware/index.xml | 2 +- middleware/mongodb/index.html | 6 +++--- middleware/mysql/index.html | 6 +++--- middleware/postgres/index.html | 6 +++--- middleware/redis/index.html | 6 +++--- os/index.html | 8 ++++---- os/index.xml | 2 +- os/macos/index.html | 6 +++--- os/ohmyzsh/index.html | 6 +++--- os/openssl/index.html | 6 +++--- os/ubuntu/index.html | 6 +++--- os/windows/index.html | 6 +++--- reading/index.html | 8 ++++---- reading/index.xml | 2 +- .../index.html" | 6 +++--- .../index.html" | 6 +++--- .../index.html" | 6 +++--- rust/cargo/index.html | 6 +++--- rust/dev-env-config/index.html | 6 +++--- rust/getting-started/index.html | 6 +++--- rust/index.html | 8 ++++---- rust/index.xml | 2 +- rust/rust-programming/index.html | 6 +++--- rust/vscode-debugging/index.html | 6 +++--- rust/wasm-programming/index.html | 6 +++--- sitemap.xml | 2 +- tags/index.html | 6 +++--- tags/index.xml | 2 +- 233 files changed, 669 insertions(+), 669 deletions(-) diff --git a/404.html b/404.html index 88a565ec..72de055f 100644 --- a/404.html +++ b/404.html @@ -1,2 +1,2 @@ -<!doctype html><html lang=cn><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/404.html"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="404 Page not found"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>404 Page not found | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/404.html><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css><style>.not-found{text-align:center}.not-found h1{margin:.25em 0 0;opacity:.25;font-size:40vmin}</style></head><body><main class="flex justify-center not-found"><div><h1>404</h1><h2>Page Not Found</h2><h3><a href=/>🍁 秋河落叶</a></h3></div></main></body></html> \ No newline at end of file +<!doctype html><html lang=cn><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/404.html"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="404 Page not found"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>404 Page not found | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/404.html><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css><style>.not-found{text-align:center}.not-found h1{margin:.25em 0 0;opacity:.25;font-size:40vmin}</style></head><body><main class="flex justify-center not-found"><div><h1>404</h1><h2>Page Not Found</h2><h3><a href=/>秋河落叶</a></h3></div></main></body></html> \ No newline at end of file diff --git a/Makefile b/Makefile index bc950246..67b4b702 100644 --- a/Makefile +++ b/Makefile @@ -24,4 +24,4 @@ check_mdi: mdi_gen: check_mdi @git pull @echo "Generating markdown indices..." - @mdi gen -f _index.md --sub-index-file _index.md -t "🍁 秋河落叶" -r --override --nav -v --no-header-link --home-title "🏠 首页" + @mdi gen -f _index.md --sub-index-file _index.md -t "秋河落叶" -r --override --nav -v --no-header-link --home-title "🏠 首页" diff --git a/algo/index.html b/algo/index.html index dd383dbc..1a217efc 100644 --- a/algo/index.html +++ b/algo/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / 数据结构与算法 数据结构与算法 # 堆排序 -快速排序"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/algo/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 数据结构与算法 +快速排序"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/algo/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 数据结构与算法 数据结构与算法 # 堆排序 -快速排序"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Algo | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/algo/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/algo/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +快速排序"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Algo | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/algo/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/algo/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Algo</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / 数据结构与算法</p><h1 id=数据结构与算法>数据结构与算法 <a class=anchor href=#%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84%e4%b8%8e%e7%ae%97%e6%b3%95>#</a></h1><p><a href=/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/>堆排序</a></p><p><a href=/algo/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/>快速排序</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/algo/index.xml b/algo/index.xml index b7e92ebe..16ebdca9 100644 --- a/algo/index.xml +++ b/algo/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/algo/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/algo/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/</guid><description>🏠 首页 / 数据结构与算法 / 堆排序 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/algo/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/algo/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/</guid><description>🏠 首页 / 数据结构与算法 / 堆排序 堆排序 # 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种**选择排序,**它的最坏,最好,平均时间复杂度均为 O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 # 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。: 算法实现(golang) # package main import &#34;fmt&#34; type BinaryTreeNode struct { Value int Left, Right *BinaryTreeNode } func main() { tree := &amp;BinaryTreeNode{ Left: &amp;BinaryTreeNode{ Left: &amp;BinaryTreeNode{ Value: 1, }, Right: &amp;BinaryTreeNode{ Value: 2, }, Value: 3, }, Right: &amp;BinaryTreeNode{ Value: 4, }, Value: 5, } res := HeapSort(tree) fmt.Println(res) } func HeapSort(tree *BinaryTreeNode) []int { var res []int if tree == nil { return []int{} } res = heapSortHelper(tree, res) return res } func heapSortHelper(tree *BinaryTreeNode, res []int) []int { if tree.</description></item><item><title/><link>https://blog.poneding.com/algo/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/algo/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/</guid><description>🏠 首页 / 数据结构与算法 / 快速排序 diff --git "a/algo/\345\240\206\346\216\222\345\272\217/index.html" "b/algo/\345\240\206\346\216\222\345\272\217/index.html" index 4fe1dab2..d9bd983f 100644 --- "a/algo/\345\240\206\346\216\222\345\272\217/index.html" +++ "b/algo/\345\240\206\346\216\222\345\272\217/index.html" @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / 数据结构与算法 / 堆排序 堆排序 # 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种**选择排序,**它的最坏,最好,平均时间复杂度均为 O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 # 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。: -算法实现(golang) # package main import "fmt" type BinaryTreeNode struct { Value int Left, Right *BinaryTreeNode } func main() { tree := &BinaryTreeNode{ Left: &BinaryTreeNode{ Left: &BinaryTreeNode{ Value: 1, }, Right: &BinaryTreeNode{ Value: 2, }, Value: 3, }, Right: &BinaryTreeNode{ Value: 4, }, Value: 5, } res := HeapSort(tree) fmt.Println(res) } func HeapSort(tree *BinaryTreeNode) []int { var res []int if tree == nil { return []int{} } res = heapSortHelper(tree, res) return res } func heapSortHelper(tree *BinaryTreeNode, res []int) []int { if tree.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / 数据结构与算法 / 堆排序 +算法实现(golang) # package main import "fmt" type BinaryTreeNode struct { Value int Left, Right *BinaryTreeNode } func main() { tree := &BinaryTreeNode{ Left: &BinaryTreeNode{ Left: &BinaryTreeNode{ Value: 1, }, Right: &BinaryTreeNode{ Value: 2, }, Value: 3, }, Right: &BinaryTreeNode{ Value: 4, }, Value: 5, } res := HeapSort(tree) fmt.Println(res) } func HeapSort(tree *BinaryTreeNode) []int { var res []int if tree == nil { return []int{} } res = heapSortHelper(tree, res) return res } func heapSortHelper(tree *BinaryTreeNode, res []int) []int { if tree.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / 数据结构与算法 / 堆排序 堆排序 # 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种**选择排序,**它的最坏,最好,平均时间复杂度均为 O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 # 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。: -算法实现(golang) # package main import "fmt" type BinaryTreeNode struct { Value int Left, Right *BinaryTreeNode } func main() { tree := &BinaryTreeNode{ Left: &BinaryTreeNode{ Left: &BinaryTreeNode{ Value: 1, }, Right: &BinaryTreeNode{ Value: 2, }, Value: 3, }, Right: &BinaryTreeNode{ Value: 4, }, Value: 5, } res := HeapSort(tree) fmt.Println(res) } func HeapSort(tree *BinaryTreeNode) []int { var res []int if tree == nil { return []int{} } res = heapSortHelper(tree, res) return res } func heapSortHelper(tree *BinaryTreeNode, res []int) []int { if tree.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="algo"><title>堆排序 | 🍁 秋河落叶</title> +算法实现(golang) # package main import "fmt" type BinaryTreeNode struct { Value int Left, Right *BinaryTreeNode } func main() { tree := &BinaryTreeNode{ Left: &BinaryTreeNode{ Left: &BinaryTreeNode{ Value: 1, }, Right: &BinaryTreeNode{ Value: 2, }, Value: 3, }, Right: &BinaryTreeNode{ Value: 4, }, Value: 5, } res := HeapSort(tree) fmt.Println(res) } func HeapSort(tree *BinaryTreeNode) []int { var res []int if tree == nil { return []int{} } res = heapSortHelper(tree, res) return res } func heapSortHelper(tree *BinaryTreeNode, res []int) []int { if tree.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="algo"><title>堆排序 | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>堆排序</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#堆>堆</a></li><li><a href=#算法实现golang>算法实现(golang)</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/algo/>数据结构与算法</a> / 堆排序</p><h1 id=堆排序>堆排序 diff --git "a/algo/\345\277\253\351\200\237\346\216\222\345\272\217/index.html" "b/algo/\345\277\253\351\200\237\346\216\222\345\272\217/index.html" index d138ac10..28581cae 100644 --- "a/algo/\345\277\253\351\200\237\346\216\222\345\272\217/index.html" +++ "b/algo/\345\277\253\351\200\237\346\216\222\345\272\217/index.html" @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / 数据结构与算法 / 快速排序 快速排序 # 步骤如下: 先从数列中取出一个数作为基准数。一般取第一个数。 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 再对左右区间重复第二步,直到各区间只有一个数。 举一个例子:5 9 1 6 8 14 6 49 25 4 6 3。 -一般取第一个数 5 作为基准,从它左边和最后一个数使用[]进行标志, 如果左边的数比基准数大,那么该数要往右边扔,也就是两个[]数交换,这样大于它的数就在右边了,然后右边[]数左移,否则左边[]数右移。 5 [9] 1 6 8 14 6 49 25 4 6 [3] 因为 9 > 5,两个[]交换位置后,右边[]左移 5 [3] 1 6 8 14 6 49 25 4 [6] 9 因为 3 !> 5,两个[]不需要交换,左边[]右移 5 3 [1] 6 8 14 6 49 25 4 [6] 9 因为 1 !"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/algo/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 数据结构与算法 / 快速排序 +一般取第一个数 5 作为基准,从它左边和最后一个数使用[]进行标志, 如果左边的数比基准数大,那么该数要往右边扔,也就是两个[]数交换,这样大于它的数就在右边了,然后右边[]数左移,否则左边[]数右移。 5 [9] 1 6 8 14 6 49 25 4 6 [3] 因为 9 > 5,两个[]交换位置后,右边[]左移 5 [3] 1 6 8 14 6 49 25 4 [6] 9 因为 3 !> 5,两个[]不需要交换,左边[]右移 5 3 [1] 6 8 14 6 49 25 4 [6] 9 因为 1 !"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/algo/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 数据结构与算法 / 快速排序 快速排序 # 步骤如下: 先从数列中取出一个数作为基准数。一般取第一个数。 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 再对左右区间重复第二步,直到各区间只有一个数。 举一个例子:5 9 1 6 8 14 6 49 25 4 6 3。 -一般取第一个数 5 作为基准,从它左边和最后一个数使用[]进行标志, 如果左边的数比基准数大,那么该数要往右边扔,也就是两个[]数交换,这样大于它的数就在右边了,然后右边[]数左移,否则左边[]数右移。 5 [9] 1 6 8 14 6 49 25 4 6 [3] 因为 9 > 5,两个[]交换位置后,右边[]左移 5 [3] 1 6 8 14 6 49 25 4 [6] 9 因为 3 !> 5,两个[]不需要交换,左边[]右移 5 3 [1] 6 8 14 6 49 25 4 [6] 9 因为 1 !"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="algo"><title>快速排序 | 🍁 秋河落叶</title> +一般取第一个数 5 作为基准,从它左边和最后一个数使用[]进行标志, 如果左边的数比基准数大,那么该数要往右边扔,也就是两个[]数交换,这样大于它的数就在右边了,然后右边[]数左移,否则左边[]数右移。 5 [9] 1 6 8 14 6 49 25 4 6 [3] 因为 9 > 5,两个[]交换位置后,右边[]左移 5 [3] 1 6 8 14 6 49 25 4 [6] 9 因为 3 !> 5,两个[]不需要交换,左边[]右移 5 3 [1] 6 8 14 6 49 25 4 [6] 9 因为 1 !"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="algo"><title>快速排序 | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/algo/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>快速排序</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/algo/>数据结构与算法</a> / 快速排序</p><h1 id=快速排序>快速排序 diff --git a/aws/build-eks-cluster/index.html b/aws/build-eks-cluster/index.html index fbf62a78..a0c7be2e 100644 --- a/aws/build-eks-cluster/index.html +++ b/aws/build-eks-cluster/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / AWS / 搭建EKS集群 搭建EKS集群 # 安装aws,kubectl和eksctl命令行工具 # 引言 # 安装aws cli 安装kubectl cli 安装eksctl cli 安装aws cli # 参考 # https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-install.html -安装示例(windows) # 下载安装包: https://awscli.amazonaws.com/AWSCLIV2.msi 运行下载的安装包 确实安装是否成功 aws --version 使用Security Credentials配置aws cli # 访问aws控制台:Service => IAM 选择IAM User,使用子用户,强烈不建议使用root用户 进入用户详情页面,Security Credentials页 创建Access Key 拷贝Access Key ID和Secret Access Key 使用aws命令配置 $ aws configure AWS Access Key ID [None]: ABCDEFGHIAZBERTUCNGG (替换Access Key ID) AWS Secret Access Key [None]: uMe7fumK1IdDB094q2sGFhM5Bqt3HQRw3IHZzBDTm (替换Secret Access Key) Default region name [None]: us-east-1 Default output format [None]: json 测试配置是否生效 aws ec2 describe-vpcs 卸载(windows) # 控制面板 => 程序和功能,找到aws cli,卸载即可。 安装kubectl cli # 如果你确实是使用EKS的Kubernetes,建议使用aws提供的kubectl命令工具。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/build-eks-cluster/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / AWS / 搭建EKS集群 +安装示例(windows) # 下载安装包: https://awscli.amazonaws.com/AWSCLIV2.msi 运行下载的安装包 确实安装是否成功 aws --version 使用Security Credentials配置aws cli # 访问aws控制台:Service => IAM 选择IAM User,使用子用户,强烈不建议使用root用户 进入用户详情页面,Security Credentials页 创建Access Key 拷贝Access Key ID和Secret Access Key 使用aws命令配置 $ aws configure AWS Access Key ID [None]: ABCDEFGHIAZBERTUCNGG (替换Access Key ID) AWS Secret Access Key [None]: uMe7fumK1IdDB094q2sGFhM5Bqt3HQRw3IHZzBDTm (替换Secret Access Key) Default region name [None]: us-east-1 Default output format [None]: json 测试配置是否生效 aws ec2 describe-vpcs 卸载(windows) # 控制面板 => 程序和功能,找到aws cli,卸载即可。 安装kubectl cli # 如果你确实是使用EKS的Kubernetes,建议使用aws提供的kubectl命令工具。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/build-eks-cluster/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / AWS / 搭建EKS集群 搭建EKS集群 # 安装aws,kubectl和eksctl命令行工具 # 引言 # 安装aws cli 安装kubectl cli 安装eksctl cli 安装aws cli # 参考 # https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-install.html -安装示例(windows) # 下载安装包: https://awscli.amazonaws.com/AWSCLIV2.msi 运行下载的安装包 确实安装是否成功 aws --version 使用Security Credentials配置aws cli # 访问aws控制台:Service => IAM 选择IAM User,使用子用户,强烈不建议使用root用户 进入用户详情页面,Security Credentials页 创建Access Key 拷贝Access Key ID和Secret Access Key 使用aws命令配置 $ aws configure AWS Access Key ID [None]: ABCDEFGHIAZBERTUCNGG (替换Access Key ID) AWS Secret Access Key [None]: uMe7fumK1IdDB094q2sGFhM5Bqt3HQRw3IHZzBDTm (替换Secret Access Key) Default region name [None]: us-east-1 Default output format [None]: json 测试配置是否生效 aws ec2 describe-vpcs 卸载(windows) # 控制面板 => 程序和功能,找到aws cli,卸载即可。 安装kubectl cli # 如果你确实是使用EKS的Kubernetes,建议使用aws提供的kubectl命令工具。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Build Eks Cluster | 🍁 秋河落叶</title> +安装示例(windows) # 下载安装包: https://awscli.amazonaws.com/AWSCLIV2.msi 运行下载的安装包 确实安装是否成功 aws --version 使用Security Credentials配置aws cli # 访问aws控制台:Service => IAM 选择IAM User,使用子用户,强烈不建议使用root用户 进入用户详情页面,Security Credentials页 创建Access Key 拷贝Access Key ID和Secret Access Key 使用aws命令配置 $ aws configure AWS Access Key ID [None]: ABCDEFGHIAZBERTUCNGG (替换Access Key ID) AWS Secret Access Key [None]: uMe7fumK1IdDB094q2sGFhM5Bqt3HQRw3IHZzBDTm (替换Secret Access Key) Default region name [None]: us-east-1 Default output format [None]: json 测试配置是否生效 aws ec2 describe-vpcs 卸载(windows) # 控制面板 => 程序和功能,找到aws cli,卸载即可。 安装kubectl cli # 如果你确实是使用EKS的Kubernetes,建议使用aws提供的kubectl命令工具。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Build Eks Cluster | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/build-eks-cluster/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Build Eks Cluster</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装awskubectl和eksctl命令行工具>安装aws,kubectl和eksctl命令行工具</a><ul><li><a href=#引言>引言</a></li><li><a href=#安装aws-cli>安装aws cli</a></li><li><a href=#安装kubectl-cli>安装kubectl cli</a></li><li><a href=#安装eksctl-cli>安装eksctl cli</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/aws/>AWS</a> / 搭建EKS集群</p><h1 id=搭建eks集群>搭建EKS集群 diff --git a/aws/cluster-autoscaler/index.html b/aws/cluster-autoscaler/index.html index 453840ea..80c92a94 100644 --- a/aws/cluster-autoscaler/index.html +++ b/aws/cluster-autoscaler/index.html @@ -13,7 +13,7 @@ Tag Value的值是什么不重要,主要是需要这两个Tag Key来识别是否对这个集群开启Auto Scaling的能力。 添加Policy # 创建IAM策略,将新创建的策略Attach到集群节点绑定的IAM role上,让你的集群节点拥有自动伸缩的能力。 IAM策略Json内容: -{ "Version": "2012-10-17", "Statement": [ { "Action": [ "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeLaunchConfigurations", "autoscaling:DescribeTags", "autoscaling:SetDesiredCapacity", "autoscaling:TerminateInstanceInAutoScalingGroup", "ec2:DescribeLaunchTemplateVersions" ], "Resource": "*", "Effect": "Allow" } ] } 部署Cluster AutoScaler # 在集群中部署Cluster AutoScaler,准备资源清单文件cluster-autoscaler.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/cluster-autoscaler/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / Cluster AutoScaler +{ "Version": "2012-10-17", "Statement": [ { "Action": [ "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeLaunchConfigurations", "autoscaling:DescribeTags", "autoscaling:SetDesiredCapacity", "autoscaling:TerminateInstanceInAutoScalingGroup", "ec2:DescribeLaunchTemplateVersions" ], "Resource": "*", "Effect": "Allow" } ] } 部署Cluster AutoScaler # 在集群中部署Cluster AutoScaler,准备资源清单文件cluster-autoscaler.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/cluster-autoscaler/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / Cluster AutoScaler Cluster AutoScaler # 我当前已经有了一个EKS服务搭建起来的K8s集群,我现在希望我的集群拥有自动伸缩(体现在节点的扩缩)的能力。 当我的集群资源充足,而我部署在集群中的应用只使用到了很少量的资源,我希望集群回收资源以节省费用;当我的应用服务越来越多,当前集群资源不足时,我希望集群能增加节点,以满足应用的部署条件。 那么本篇就是介绍如何通过使用Kubernetes Cluster Autoscaler让你的集群拥有自动伸缩的能力,而不用你时刻关注集群的资源是否过于宽松或紧张。 @@ -28,9 +28,9 @@ Tag Value的值是什么不重要,主要是需要这两个Tag Key来识别是否对这个集群开启Auto Scaling的能力。 添加Policy # 创建IAM策略,将新创建的策略Attach到集群节点绑定的IAM role上,让你的集群节点拥有自动伸缩的能力。 IAM策略Json内容: -{ "Version": "2012-10-17", "Statement": [ { "Action": [ "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeLaunchConfigurations", "autoscaling:DescribeTags", "autoscaling:SetDesiredCapacity", "autoscaling:TerminateInstanceInAutoScalingGroup", "ec2:DescribeLaunchTemplateVersions" ], "Resource": "*", "Effect": "Allow" } ] } 部署Cluster AutoScaler # 在集群中部署Cluster AutoScaler,准备资源清单文件cluster-autoscaler.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Cluster Autoscaler | 🍁 秋河落叶</title> +{ "Version": "2012-10-17", "Statement": [ { "Action": [ "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeLaunchConfigurations", "autoscaling:DescribeTags", "autoscaling:SetDesiredCapacity", "autoscaling:TerminateInstanceInAutoScalingGroup", "ec2:DescribeLaunchTemplateVersions" ], "Resource": "*", "Effect": "Allow" } ] } 部署Cluster AutoScaler # 在集群中部署Cluster AutoScaler,准备资源清单文件cluster-autoscaler.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Cluster Autoscaler | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/cluster-autoscaler/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Cluster Autoscaler</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#nodegroup添加tag>NodeGroup添加Tag</a></li><li><a href=#添加policy>添加Policy</a></li><li><a href=#部署cluster-autoscaler>部署Cluster AutoScaler</a></li><li><a href=#查看cluster-autoscaler>查看Cluster AutoScaler</a></li><li><a href=#分析原理>分析原理</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/aws/>AWS</a> / Cluster AutoScaler</p><h1 id=cluster-autoscaler>Cluster AutoScaler diff --git a/aws/create-eks-cluster/index.html b/aws/create-eks-cluster/index.html index 322d7d6e..85e8252f 100644 --- a/aws/create-eks-cluster/index.html +++ b/aws/create-eks-cluster/index.html @@ -3,14 +3,14 @@ 2. eksctl创建eks集群 # 2.1 什么是eksctl # eksctl是一种用于在 Amazon EKS 上创建和管理 Kubernetes 集群的简单命令行实用程序。eksctl 命令行实用程序提供了使用工作线程节点为 Amazon EKS 创建新集群的最快、最简单的方式。 eksctl更多了解 https://eksctl.io 2.2 为什么用eksctl # 创建EKS集群可以在AWS的控制台创建,也可以使用AWS开发的eksctl工具创建,为什么选择使用eksctl创建eks集群呢,有以下几点原因: -直接在AWS的控制台创建集群,需要手动创建各种Role,以及选择合适的Subnet,Security Group等繁杂操作,你需要在浏览器中打开多个页面,操作过程可能也要时不时参阅文档; eksctl创建EKS集群只需要一行eksctl create cluster <参数>命令即可,会自动的给你创建Role等资源; eksctl的命令可以记录到脚本,便于复用。 2.3 安装eksctl(基于ubuntu) # 使用以下命令下载并提取最新版本的 eksctl。 curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp 将提取的二进制文件移至 /usr/local/bin。 sudo mv /tmp/eksctl /usr/local/bin 使用以下命令测试您的安装是否成功。 eksctl version 注意:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/create-eks-cluster/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / 创建 EKS 集群 +直接在AWS的控制台创建集群,需要手动创建各种Role,以及选择合适的Subnet,Security Group等繁杂操作,你需要在浏览器中打开多个页面,操作过程可能也要时不时参阅文档; eksctl创建EKS集群只需要一行eksctl create cluster <参数>命令即可,会自动的给你创建Role等资源; eksctl的命令可以记录到脚本,便于复用。 2.3 安装eksctl(基于ubuntu) # 使用以下命令下载并提取最新版本的 eksctl。 curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp 将提取的二进制文件移至 /usr/local/bin。 sudo mv /tmp/eksctl /usr/local/bin 使用以下命令测试您的安装是否成功。 eksctl version 注意:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/create-eks-cluster/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / 创建 EKS 集群 创建 EKS 集群 # 1. EKS简介 # Amazon Elastic Kubernetes Service (Amazon EKS) 是一项托管服务,可让您在 AWS 上轻松运行 Kubernetes,而无需支持或维护您自己的 Kubernetes 控制层面。Kubernetes 是一个用于实现容器化应用程序的部署、扩展和管理的自动化的开源系统。(该段介绍来自Amazon EKS文档,更多了解 https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/what-is-eks.html) 2. eksctl创建eks集群 # 2.1 什么是eksctl # eksctl是一种用于在 Amazon EKS 上创建和管理 Kubernetes 集群的简单命令行实用程序。eksctl 命令行实用程序提供了使用工作线程节点为 Amazon EKS 创建新集群的最快、最简单的方式。 eksctl更多了解 https://eksctl.io 2.2 为什么用eksctl # 创建EKS集群可以在AWS的控制台创建,也可以使用AWS开发的eksctl工具创建,为什么选择使用eksctl创建eks集群呢,有以下几点原因: -直接在AWS的控制台创建集群,需要手动创建各种Role,以及选择合适的Subnet,Security Group等繁杂操作,你需要在浏览器中打开多个页面,操作过程可能也要时不时参阅文档; eksctl创建EKS集群只需要一行eksctl create cluster <参数>命令即可,会自动的给你创建Role等资源; eksctl的命令可以记录到脚本,便于复用。 2.3 安装eksctl(基于ubuntu) # 使用以下命令下载并提取最新版本的 eksctl。 curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp 将提取的二进制文件移至 /usr/local/bin。 sudo mv /tmp/eksctl /usr/local/bin 使用以下命令测试您的安装是否成功。 eksctl version 注意:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Create Eks Cluster | 🍁 秋河落叶</title> +直接在AWS的控制台创建集群,需要手动创建各种Role,以及选择合适的Subnet,Security Group等繁杂操作,你需要在浏览器中打开多个页面,操作过程可能也要时不时参阅文档; eksctl创建EKS集群只需要一行eksctl create cluster <参数>命令即可,会自动的给你创建Role等资源; eksctl的命令可以记录到脚本,便于复用。 2.3 安装eksctl(基于ubuntu) # 使用以下命令下载并提取最新版本的 eksctl。 curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp 将提取的二进制文件移至 /usr/local/bin。 sudo mv /tmp/eksctl /usr/local/bin 使用以下命令测试您的安装是否成功。 eksctl version 注意:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Create Eks Cluster | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/create-eks-cluster/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Create Eks Cluster</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#1-eks简介>1. EKS简介</a></li><li><a href=#2-eksctl创建eks集群>2. eksctl创建eks集群</a><ul><li><a href=#21-什么是eksctl>2.1 什么是eksctl</a></li><li><a href=#22-为什么用eksctl>2.2 为什么用eksctl</a></li><li><a href=#23-安装eksctl基于ubuntu>2.3 安装eksctl(基于ubuntu)</a></li><li><a href=#24-使用eksctl创建集群>2.4 使用eksctl创建集群</a></li></ul></li><li><a href=#3-部署-kubernetes-metrics-server>3. 部署 Kubernetes Metrics Server</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/aws/>AWS</a> / 创建 EKS 集群</p><h1 id=创建-eks-集群>创建 EKS 集群 diff --git a/aws/eks-config-alb-ingress/index.html b/aws/eks-config-alb-ingress/index.html index d1ec3365..fa13a6f0 100644 --- a/aws/eks-config-alb-ingress/index.html +++ b/aws/eks-config-alb-ingress/index.html @@ -2,13 +2,13 @@ EKS配置 ALB Ingress # 官方文档: https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/controller/installation/ 部署Alb Ingress Controller # IAM中创建Policy,给集群的Node节点的Role添加该Policy。 Policy的JSON配置如下: -{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "acm:DescribeCertificate", "acm:ListCertificates", "acm:GetCertificate" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteTags", "ec2:DeleteSecurityGroup", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeInternetGateways", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeTags", "ec2:DescribeVpcs", "ec2:ModifyInstanceAttribute", "ec2:ModifyNetworkInterfaceAttribute", "ec2:RevokeSecurityGroupIngress" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "elasticloadbalancing:AddListenerCertificates", "elasticloadbalancing:AddTags", "elasticloadbalancing:CreateListener", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:CreateRule", "elasticloadbalancing:CreateTargetGroup", "elasticloadbalancing:DeleteListener", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:DeleteRule", "elasticloadbalancing:DeleteTargetGroup", "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:DescribeListenerCertificates", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeLoadBalancerAttributes", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:DescribeSSLPolicies", "elasticloadbalancing:DescribeTags", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetGroupAttributes", "elasticloadbalancing:DescribeTargetHealth", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:ModifyLoadBalancerAttributes", "elasticloadbalancing:ModifyRule", "elasticloadbalancing:ModifyTargetGroup", "elasticloadbalancing:ModifyTargetGroupAttributes", "elasticloadbalancing:RegisterTargets", "elasticloadbalancing:RemoveListenerCertificates", "elasticloadbalancing:RemoveTags", "elasticloadbalancing:SetIpAddressType", "elasticloadbalancing:SetSecurityGroups", "elasticloadbalancing:SetSubnets", "elasticloadbalancing:SetWebACL" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:GetServerCertificate", "iam:ListServerCertificates" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cognito-idp:DescribeUserPoolClient" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "waf-regional:GetWebACLForResource", "waf-regional:GetWebACL", "waf-regional:AssociateWebACL", "waf-regional:DisassociateWebACL" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "tag:GetResources", "tag:TagResources" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "waf:GetWebACL" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "shield:DescribeProtection", "shield:GetSubscriptionState", "shield:DeleteProtection", "shield:CreateProtection", "shield:DescribeSubscription", "shield:ListProtections" ], "Resource": "*" } ] } 下载alb-ingress-controller.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/eks-config-alb-ingress/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / EKS配置 ALB Ingress +{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "acm:DescribeCertificate", "acm:ListCertificates", "acm:GetCertificate" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteTags", "ec2:DeleteSecurityGroup", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeInternetGateways", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeTags", "ec2:DescribeVpcs", "ec2:ModifyInstanceAttribute", "ec2:ModifyNetworkInterfaceAttribute", "ec2:RevokeSecurityGroupIngress" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "elasticloadbalancing:AddListenerCertificates", "elasticloadbalancing:AddTags", "elasticloadbalancing:CreateListener", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:CreateRule", "elasticloadbalancing:CreateTargetGroup", "elasticloadbalancing:DeleteListener", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:DeleteRule", "elasticloadbalancing:DeleteTargetGroup", "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:DescribeListenerCertificates", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeLoadBalancerAttributes", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:DescribeSSLPolicies", "elasticloadbalancing:DescribeTags", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetGroupAttributes", "elasticloadbalancing:DescribeTargetHealth", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:ModifyLoadBalancerAttributes", "elasticloadbalancing:ModifyRule", "elasticloadbalancing:ModifyTargetGroup", "elasticloadbalancing:ModifyTargetGroupAttributes", "elasticloadbalancing:RegisterTargets", "elasticloadbalancing:RemoveListenerCertificates", "elasticloadbalancing:RemoveTags", "elasticloadbalancing:SetIpAddressType", "elasticloadbalancing:SetSecurityGroups", "elasticloadbalancing:SetSubnets", "elasticloadbalancing:SetWebACL" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:GetServerCertificate", "iam:ListServerCertificates" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cognito-idp:DescribeUserPoolClient" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "waf-regional:GetWebACLForResource", "waf-regional:GetWebACL", "waf-regional:AssociateWebACL", "waf-regional:DisassociateWebACL" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "tag:GetResources", "tag:TagResources" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "waf:GetWebACL" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "shield:DescribeProtection", "shield:GetSubscriptionState", "shield:DeleteProtection", "shield:CreateProtection", "shield:DescribeSubscription", "shield:ListProtections" ], "Resource": "*" } ] } 下载alb-ingress-controller.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/eks-config-alb-ingress/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / EKS配置 ALB Ingress EKS配置 ALB Ingress # 官方文档: https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/controller/installation/ 部署Alb Ingress Controller # IAM中创建Policy,给集群的Node节点的Role添加该Policy。 Policy的JSON配置如下: -{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "acm:DescribeCertificate", "acm:ListCertificates", "acm:GetCertificate" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteTags", "ec2:DeleteSecurityGroup", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeInternetGateways", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeTags", "ec2:DescribeVpcs", "ec2:ModifyInstanceAttribute", "ec2:ModifyNetworkInterfaceAttribute", "ec2:RevokeSecurityGroupIngress" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "elasticloadbalancing:AddListenerCertificates", "elasticloadbalancing:AddTags", "elasticloadbalancing:CreateListener", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:CreateRule", "elasticloadbalancing:CreateTargetGroup", "elasticloadbalancing:DeleteListener", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:DeleteRule", "elasticloadbalancing:DeleteTargetGroup", "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:DescribeListenerCertificates", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeLoadBalancerAttributes", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:DescribeSSLPolicies", "elasticloadbalancing:DescribeTags", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetGroupAttributes", "elasticloadbalancing:DescribeTargetHealth", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:ModifyLoadBalancerAttributes", "elasticloadbalancing:ModifyRule", "elasticloadbalancing:ModifyTargetGroup", "elasticloadbalancing:ModifyTargetGroupAttributes", "elasticloadbalancing:RegisterTargets", "elasticloadbalancing:RemoveListenerCertificates", "elasticloadbalancing:RemoveTags", "elasticloadbalancing:SetIpAddressType", "elasticloadbalancing:SetSecurityGroups", "elasticloadbalancing:SetSubnets", "elasticloadbalancing:SetWebACL" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:GetServerCertificate", "iam:ListServerCertificates" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cognito-idp:DescribeUserPoolClient" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "waf-regional:GetWebACLForResource", "waf-regional:GetWebACL", "waf-regional:AssociateWebACL", "waf-regional:DisassociateWebACL" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "tag:GetResources", "tag:TagResources" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "waf:GetWebACL" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "shield:DescribeProtection", "shield:GetSubscriptionState", "shield:DeleteProtection", "shield:CreateProtection", "shield:DescribeSubscription", "shield:ListProtections" ], "Resource": "*" } ] } 下载alb-ingress-controller.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Eks Config Alb Ingress | 🍁 秋河落叶</title> +{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "acm:DescribeCertificate", "acm:ListCertificates", "acm:GetCertificate" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteTags", "ec2:DeleteSecurityGroup", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeInternetGateways", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeTags", "ec2:DescribeVpcs", "ec2:ModifyInstanceAttribute", "ec2:ModifyNetworkInterfaceAttribute", "ec2:RevokeSecurityGroupIngress" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "elasticloadbalancing:AddListenerCertificates", "elasticloadbalancing:AddTags", "elasticloadbalancing:CreateListener", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:CreateRule", "elasticloadbalancing:CreateTargetGroup", "elasticloadbalancing:DeleteListener", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:DeleteRule", "elasticloadbalancing:DeleteTargetGroup", "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:DescribeListenerCertificates", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeLoadBalancerAttributes", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:DescribeSSLPolicies", "elasticloadbalancing:DescribeTags", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetGroupAttributes", "elasticloadbalancing:DescribeTargetHealth", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:ModifyLoadBalancerAttributes", "elasticloadbalancing:ModifyRule", "elasticloadbalancing:ModifyTargetGroup", "elasticloadbalancing:ModifyTargetGroupAttributes", "elasticloadbalancing:RegisterTargets", "elasticloadbalancing:RemoveListenerCertificates", "elasticloadbalancing:RemoveTags", "elasticloadbalancing:SetIpAddressType", "elasticloadbalancing:SetSecurityGroups", "elasticloadbalancing:SetSubnets", "elasticloadbalancing:SetWebACL" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:GetServerCertificate", "iam:ListServerCertificates" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cognito-idp:DescribeUserPoolClient" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "waf-regional:GetWebACLForResource", "waf-regional:GetWebACL", "waf-regional:AssociateWebACL", "waf-regional:DisassociateWebACL" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "tag:GetResources", "tag:TagResources" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "waf:GetWebACL" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "shield:DescribeProtection", "shield:GetSubscriptionState", "shield:DeleteProtection", "shield:CreateProtection", "shield:DescribeSubscription", "shield:ListProtections" ], "Resource": "*" } ] } 下载alb-ingress-controller.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Eks Config Alb Ingress | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/eks-config-alb-ingress/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Eks Config Alb Ingress</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#部署alb-ingress-controller>部署Alb Ingress Controller</a></li><li><a href=#配置alb-ingress-controller>配置Alb Ingress Controller</a></li><li><a href=#设置external-dns>设置External DNS</a><ul><li><a href=#背景>背景</a></li><li><a href=#前提条件>前提条件</a></li><li><a href=#安装>安装</a></li><li><a href=#使用方式>使用方式</a></li></ul></li><li><a href=#实践记录>实践记录</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/aws/>AWS</a> / EKS配置 ALB Ingress</p><h1 id=eks配置-alb-ingress>EKS配置 ALB Ingress diff --git a/aws/eks-details/index.html b/aws/eks-details/index.html index 37c91d58..d8c19143 100644 --- a/aws/eks-details/index.html +++ b/aws/eks-details/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / AWS / EKS小细节汇总 EKS小细节汇总 # 如果alb的ingress使用了自定义的security group,那么需要将该安全组加入到worker « EKS配置 ALB Ingress -» EKS实践 集成Gitlab自动发布(一)"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/eks-details/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / AWS / EKS小细节汇总 +» EKS实践 集成Gitlab自动发布(一)"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/eks-details/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / AWS / EKS小细节汇总 EKS小细节汇总 # 如果alb的ingress使用了自定义的security group,那么需要将该安全组加入到worker « EKS配置 ALB Ingress -» EKS实践 集成Gitlab自动发布(一)"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Eks Details | 🍁 秋河落叶</title> +» EKS实践 集成Gitlab自动发布(一)"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Eks Details | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/eks-details/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Eks Details</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/aws/>AWS</a> / EKS小细节汇总</p><h1 id=eks小细节汇总>EKS小细节汇总 diff --git a/aws/eks-intergrate-gitlab-auto-release-01/index.html b/aws/eks-intergrate-gitlab-auto-release-01/index.html index f9800c47..c935a432 100644 --- a/aws/eks-intergrate-gitlab-auto-release-01/index.html +++ b/aws/eks-intergrate-gitlab-auto-release-01/index.html @@ -10,7 +10,7 @@ Cluster Name: 这个可以自定义,能自行区分就行。 API URL: 运行以下命令得到输出值: kubectl cluster-info | grep 'Kubernetes master' | awk '/http/ {print $NF}' CA Certificate: 运行以下命令得到输出值: -kubectl get secret $(kubectl get secret | grep default-token | awk '{print $1}') -o jsonpath="{['data']['ca\."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/eks-intergrate-gitlab-auto-release-01/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / AWS / EKS实践 集成Gitlab自动发布(一) +kubectl get secret $(kubectl get secret | grep default-token | awk '{print $1}') -o jsonpath="{['data']['ca\."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/eks-intergrate-gitlab-auto-release-01/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / AWS / EKS实践 集成Gitlab自动发布(一) EKS实践 集成Gitlab自动发布(一) # 系列介绍如何使用Gitlab CI/CD自动部署应用到EKS(K8s)集群中。本篇介绍如何在EKS(K8s)集群中为Gitlab的CI/CD创建Gitlab Runner。 Gitlab添加K8s集群 # 添加方式 # 第一种方式,基于单个仓库添加K8s集群: 进入Gitlab仓库,依次从左边菜单栏Operations => Kubernetes进入添加页面,点击Add Kubernetes cluster按钮。这种方式添加的K8s集群只对该项目仓库有效。 @@ -22,9 +22,9 @@ Cluster Name: 这个可以自定义,能自行区分就行。 API URL: 运行以下命令得到输出值: kubectl cluster-info | grep 'Kubernetes master' | awk '/http/ {print $NF}' CA Certificate: 运行以下命令得到输出值: -kubectl get secret $(kubectl get secret | grep default-token | awk '{print $1}') -o jsonpath="{['data']['ca\."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Eks Intergrate Gitlab Auto Release 01 | 🍁 秋河落叶</title> +kubectl get secret $(kubectl get secret | grep default-token | awk '{print $1}') -o jsonpath="{['data']['ca\."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Eks Intergrate Gitlab Auto Release 01 | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/eks-intergrate-gitlab-auto-release-01/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Eks Intergrate Gitlab Auto Release 01</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#gitlab添加k8s集群>Gitlab添加K8s集群</a><ul><li><a href=#添加方式>添加方式</a></li><li><a href=#添加步骤>添加步骤</a></li></ul></li><li><a href=#安装helm以及runner>安装Helm以及Runner</a></li><li><a href=#安装gitlab-runner>安装Gitlab Runner</a></li><li><a href=#一些经验>一些经验</a></li><li><a href=#结束语>结束语</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/aws/>AWS</a> / EKS实践 集成Gitlab自动发布(一)</p><h1 id=eks实践-集成gitlab自动发布一>EKS实践 集成Gitlab自动发布(一) diff --git a/aws/eks-intergrate-gitlab-auto-release-02/index.html b/aws/eks-intergrate-gitlab-auto-release-02/index.html index 35552e1c..51726f41 100644 --- a/aws/eks-intergrate-gitlab-auto-release-02/index.html +++ b/aws/eks-intergrate-gitlab-auto-release-02/index.html @@ -8,7 +8,7 @@ 使用命令制作并推送镜像到dockerhub(实际我的镜像推动到了ECR) docker build . -t gitlab-runner-base:latest --rm --no-cache docker push gitlab-runner-base:latest 仓库配置 # 项目仓库根目录下新增.gitlab-ci.yml文件,然后文件内容 « EKS实践 集成Gitlab自动发布(一) -» EKS-使用EFS"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/eks-intergrate-gitlab-auto-release-02/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / AWS / EKS实践 集成Gitlab自动发布(二) +» EKS-使用EFS"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/eks-intergrate-gitlab-auto-release-02/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / AWS / EKS实践 集成Gitlab自动发布(二) EKS实践 集成Gitlab自动发布(二) # 系列介绍如何使用Gitlab CI/CD自动部署应用到EKS(K8s)集群中。本篇介绍如何为Runnr镜像的制作。 上文中创建的Gitlab Runner会持续存活在EKS集群中,但是它不做具体的Pipeline任务,当有Pipeline任务来临时,由它来创建临时的Runner来执行。而临时拆功创建的Runner使用什么容器环境以及具体执行什么任务是由仓库目录下.gitlab-ci.yml文件定义的。 制作Temp Runner镜像 # 我们制作这个镜像的目的是为了能让镜像运行起来后,可以完成我们的自动发布任务。比如在容器temp-runner容器需要将我们的代码build成应用镜像,然后将应用镜像发布到EKS集群,可以看到,在容器中我们就必须可以使用docker build功能以及kubectl apply功能。 @@ -18,9 +18,9 @@ 使用命令制作并推送镜像到dockerhub(实际我的镜像推动到了ECR) docker build . -t gitlab-runner-base:latest --rm --no-cache docker push gitlab-runner-base:latest 仓库配置 # 项目仓库根目录下新增.gitlab-ci.yml文件,然后文件内容 « EKS实践 集成Gitlab自动发布(一) -» EKS-使用EFS"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Eks Intergrate Gitlab Auto Release 02 | 🍁 秋河落叶</title> +» EKS-使用EFS"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Eks Intergrate Gitlab Auto Release 02 | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/eks-intergrate-gitlab-auto-release-02/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Eks Intergrate Gitlab Auto Release 02</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#制作temp-runner镜像>制作Temp Runner镜像</a></li><li><a href=#仓库配置>仓库配置</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/aws/>AWS</a> / EKS实践 集成Gitlab自动发布(二)</p><h1 id=eks实践-集成gitlab自动发布二>EKS实践 集成Gitlab自动发布(二) diff --git a/aws/eks-use-efs/index.html b/aws/eks-use-efs/index.html index 58549dc2..a76b700d 100644 --- a/aws/eks-use-efs/index.html +++ b/aws/eks-use-efs/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / AWS / EKS-使用EFS EKS-使用EFS # 创建EFS aws efs create-file-system \ --performance-mode generalPurpose \ --throughput-mode bursting \ --encrypted \ --tags Key=Name,Value=<fs-name> Key=creator,Value=dp Key=env:dev,Value=1 # 上面的命令会得到fs-id aws efs create-mount-target \ --file-system-id <fs-id> \ --subnet-id subnet-08d7609e614373fb8 \ --security-groups sg-0af0f0e8705380529 aws efs create-mount-target \ --file-system-id <fs-id> \ --subnet-id subnet-09c0707ea8ad281bb \ --security-groups sg-0af0f0e8705380529 aws efs create-mount-target \ --file-system-id <fs-id> \ --subnet-id subnet-063a8f10feb97868d \ --security-groups sg-0af0f0e8705380529 « EKS实践 集成Gitlab自动发布(二) -» Gitlab & EKS"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/eks-use-efs/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / AWS / EKS-使用EFS +» Gitlab & EKS"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/eks-use-efs/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / AWS / EKS-使用EFS EKS-使用EFS # 创建EFS aws efs create-file-system \ --performance-mode generalPurpose \ --throughput-mode bursting \ --encrypted \ --tags Key=Name,Value=<fs-name> Key=creator,Value=dp Key=env:dev,Value=1 # 上面的命令会得到fs-id aws efs create-mount-target \ --file-system-id <fs-id> \ --subnet-id subnet-08d7609e614373fb8 \ --security-groups sg-0af0f0e8705380529 aws efs create-mount-target \ --file-system-id <fs-id> \ --subnet-id subnet-09c0707ea8ad281bb \ --security-groups sg-0af0f0e8705380529 aws efs create-mount-target \ --file-system-id <fs-id> \ --subnet-id subnet-063a8f10feb97868d \ --security-groups sg-0af0f0e8705380529 « EKS实践 集成Gitlab自动发布(二) -» Gitlab & EKS"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Eks Use Efs | 🍁 秋河落叶</title> +» Gitlab & EKS"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Eks Use Efs | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/eks-use-efs/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Eks Use Efs</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/aws/>AWS</a> / EKS-使用EFS</p><h1 id=eks-使用efs>EKS-使用EFS diff --git a/aws/gitlab-eks/index.html b/aws/gitlab-eks/index.html index b63253f2..f887884e 100644 --- a/aws/gitlab-eks/index.html +++ b/aws/gitlab-eks/index.html @@ -5,16 +5,16 @@ 将IAM User添加到ConfigMap # kubectl edit cm aws-auth -n kube-system 在mapUsers键追加: - "groups": - "system:masters" "userarn": "arn:aws:iam::xxxxxxx:user/gitlab-ci" "username": "gitlab-ci" Gitlab仓库设置 # Setting => CI/CD => Variables,添加变量: AWS_ACCESS_KEY_ID:<gitlab-ci用户的Access key ID> AWS_SECRET_ACCESS_KEY:<gitlab-ci用户的Secret Access Key> Gitlab仓库.gitlab-ci.yml # « EKS-使用EFS -» K8s 部署 Kong 服务'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/gitlab-eks/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / Gitlab & EKS +» K8s 部署 Kong 服务'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/gitlab-eks/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / Gitlab & EKS Gitlab & EKS # 创建IAM User&Group # User:gitlab-ci,保存生成的Access key ID和Secret Access Key,后面会用到 Group:Gitlab.CI,添加Policy如下: Policy Name AmazonEKSWorkerNodePolicy AmazonEC2ContainerRegistryFullAccess AmazonEC2ContainerRegistryReadOnly AmazonEC2ContainerServiceFullAccess AmazonEKS_CNI_Policy 将user gitlab-ci添加到Group Gitlab.CI 将IAM User添加到ConfigMap # kubectl edit cm aws-auth -n kube-system 在mapUsers键追加: - "groups": - "system:masters" "userarn": "arn:aws:iam::xxxxxxx:user/gitlab-ci" "username": "gitlab-ci" Gitlab仓库设置 # Setting => CI/CD => Variables,添加变量: AWS_ACCESS_KEY_ID:<gitlab-ci用户的Access key ID> AWS_SECRET_ACCESS_KEY:<gitlab-ci用户的Secret Access Key> Gitlab仓库.gitlab-ci.yml # « EKS-使用EFS -» K8s 部署 Kong 服务'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Gitlab Eks | 🍁 秋河落叶</title> +» K8s 部署 Kong 服务'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Gitlab Eks | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/gitlab-eks/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Gitlab Eks</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#创建iam-usergroup>创建IAM User&Group</a></li><li><a href=#将iam-user添加到configmap>将IAM User添加到ConfigMap</a></li><li><a href=#gitlab仓库设置>Gitlab仓库设置</a></li><li><a href=#gitlab仓库gitlab-ciyml>Gitlab仓库.gitlab-ci.yml</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/aws/>AWS</a> / Gitlab & EKS</p><h1 id=gitlab--eks>Gitlab & EKS diff --git a/aws/index.html b/aws/index.html index ee10c6bc..fb6ab1b5 100644 --- a/aws/index.html +++ b/aws/index.html @@ -11,7 +11,7 @@ K8s 部署 Kong 服务 K8s 部署 konga K8s 部署 Postgres -Terraform 重新管理资源"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / AWS +Terraform 重新管理资源"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / AWS AWS # 搭建EKS集群 Cluster AutoScaler 创建 EKS 集群 @@ -24,9 +24,9 @@ K8s 部署 Kong 服务 K8s 部署 konga K8s 部署 Postgres -Terraform 重新管理资源"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Aws | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/aws/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +Terraform 重新管理资源"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Aws | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/aws/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Aws</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / AWS</p><h1 id=aws>AWS <a class=anchor href=#aws>#</a></h1><p><a href=/aws/build-eks-cluster/>搭建EKS集群</a></p><p><a href=/aws/cluster-autoscaler/>Cluster AutoScaler</a></p><p><a href=/aws/create-eks-cluster/>创建 EKS 集群</a></p><p><a href=/aws/eks-config-alb-ingress/>EKS配置 ALB Ingress</a></p><p><a href=/aws/eks-details/>EKS小细节汇总</a></p><p><a href=/aws/eks-intergrate-gitlab-auto-release-01/>EKS实践 集成Gitlab自动发布(一)</a></p><p><a href=/aws/eks-intergrate-gitlab-auto-release-02/>EKS实践 集成Gitlab自动发布(二)</a></p><p><a href=/aws/eks-use-efs/>EKS-使用EFS</a></p><p><a href=/aws/gitlab-eks/>Gitlab & EKS</a></p><p><a href=/aws/k8s-deploy-kong/>K8s 部署 Kong 服务</a></p><p><a href=/aws/k8s-deploy-konga/>K8s 部署 konga</a></p><p><a href=/aws/k8s-deploy-postgres/>K8s 部署 Postgres</a></p><p><a href=/aws/terraform-remanage-resource/>Terraform 重新管理资源</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/aws/index.xml b/aws/index.xml index 6cfb3225..2e70befc 100644 --- a/aws/index.xml +++ b/aws/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/aws/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/aws/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/aws/build-eks-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/aws/build-eks-cluster/</guid><description>🏠 首页 / AWS / 搭建EKS集群 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/aws/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/aws/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/aws/build-eks-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/aws/build-eks-cluster/</guid><description>🏠 首页 / AWS / 搭建EKS集群 搭建EKS集群 # 安装aws,kubectl和eksctl命令行工具 # 引言 # 安装aws cli 安装kubectl cli 安装eksctl cli 安装aws cli # 参考 # https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-install.html 安装示例(windows) # 下载安装包: https://awscli.amazonaws.com/AWSCLIV2.msi 运行下载的安装包 确实安装是否成功 aws --version 使用Security Credentials配置aws cli # 访问aws控制台:Service =&gt; IAM 选择IAM User,使用子用户,强烈不建议使用root用户 进入用户详情页面,Security Credentials页 创建Access Key 拷贝Access Key ID和Secret Access Key 使用aws命令配置 $ aws configure AWS Access Key ID [None]: ABCDEFGHIAZBERTUCNGG (替换Access Key ID) AWS Secret Access Key [None]: uMe7fumK1IdDB094q2sGFhM5Bqt3HQRw3IHZzBDTm (替换Secret Access Key) Default region name [None]: us-east-1 Default output format [None]: json 测试配置是否生效 aws ec2 describe-vpcs 卸载(windows) # 控制面板 =&gt; 程序和功能,找到aws cli,卸载即可。 安装kubectl cli # 如果你确实是使用EKS的Kubernetes,建议使用aws提供的kubectl命令工具。</description></item><item><title/><link>https://blog.poneding.com/aws/cluster-autoscaler/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/aws/cluster-autoscaler/</guid><description>🏠 首页 / AWS / Cluster AutoScaler Cluster AutoScaler # 我当前已经有了一个EKS服务搭建起来的K8s集群,我现在希望我的集群拥有自动伸缩(体现在节点的扩缩)的能力。 diff --git a/aws/k8s-deploy-kong/index.html b/aws/k8s-deploy-kong/index.html index fa81cf78..17d8ae6e 100644 --- a/aws/k8s-deploy-kong/index.html +++ b/aws/k8s-deploy-kong/index.html @@ -2,13 +2,13 @@ K8s 部署 Kong 服务 # 本篇只涉及 Kong 服务在 K8s 集群的部署操作,不涉及概念知识。 提前准备 # K8s 集群,本文使用的是 AWS EKS 集群服务 一台可以连接 K8s 集群的服务器,已经安装 kubectl 和 docker 等基础应用,之后称之为操作机器 Postgres 数据库,作为 Kong 服务的后端数据库 初始化数据库 # 使用 Postgres 作为 Kong 服务的后端数据库,我们需要提前做数据库的初始化,准备 Kong 服务需要的数据表等。这里使用 K8s-Job 来实现数据库的初始化工作。 kong-migrations-job.yaml: -apiVersion: batch/v1 kind: Job metadata: name: kong-migrations namespace: kong spec: template: metadata: name: kong-migrations spec: containers: - command: - /bin/sh - -c - kong migrations bootstrap env: - name: KONG_PG_PASSWORD value: "kong" - name: KONG_PG_HOST value: "postgres/postgres" - name: KONG_PG_PORT value: "5432" image: kong:1.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/k8s-deploy-kong/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / K8s 部署 Kong 服务 +apiVersion: batch/v1 kind: Job metadata: name: kong-migrations namespace: kong spec: template: metadata: name: kong-migrations spec: containers: - command: - /bin/sh - -c - kong migrations bootstrap env: - name: KONG_PG_PASSWORD value: "kong" - name: KONG_PG_HOST value: "postgres/postgres" - name: KONG_PG_PORT value: "5432" image: kong:1.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/k8s-deploy-kong/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / K8s 部署 Kong 服务 K8s 部署 Kong 服务 # 本篇只涉及 Kong 服务在 K8s 集群的部署操作,不涉及概念知识。 提前准备 # K8s 集群,本文使用的是 AWS EKS 集群服务 一台可以连接 K8s 集群的服务器,已经安装 kubectl 和 docker 等基础应用,之后称之为操作机器 Postgres 数据库,作为 Kong 服务的后端数据库 初始化数据库 # 使用 Postgres 作为 Kong 服务的后端数据库,我们需要提前做数据库的初始化,准备 Kong 服务需要的数据表等。这里使用 K8s-Job 来实现数据库的初始化工作。 kong-migrations-job.yaml: -apiVersion: batch/v1 kind: Job metadata: name: kong-migrations namespace: kong spec: template: metadata: name: kong-migrations spec: containers: - command: - /bin/sh - -c - kong migrations bootstrap env: - name: KONG_PG_PASSWORD value: "kong" - name: KONG_PG_HOST value: "postgres/postgres" - name: KONG_PG_PORT value: "5432" image: kong:1.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Kong | 🍁 秋河落叶</title> +apiVersion: batch/v1 kind: Job metadata: name: kong-migrations namespace: kong spec: template: metadata: name: kong-migrations spec: containers: - command: - /bin/sh - -c - kong migrations bootstrap env: - name: KONG_PG_PASSWORD value: "kong" - name: KONG_PG_HOST value: "postgres/postgres" - name: KONG_PG_PORT value: "5432" image: kong:1.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Kong | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/k8s-deploy-kong/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>K8s Deploy Kong</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#提前准备>提前准备</a></li><li><a href=#初始化数据库>初始化数据库</a></li><li><a href=#k8s资源文件>K8s资源文件</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/aws/>AWS</a> / K8s 部署 Kong 服务</p><h1 id=k8s-部署-kong-服务>K8s 部署 Kong 服务 diff --git a/aws/k8s-deploy-konga/index.html b/aws/k8s-deploy-konga/index.html index 35883638..4d40ae34 100644 --- a/aws/k8s-deploy-konga/index.html +++ b/aws/k8s-deploy-konga/index.html @@ -4,15 +4,15 @@ error: Failed to prepare database: error: column r.consrc does not exist 这是部署 konga 踩过的坑之一。 确保 K8s 集群中已经创建了 nginx-ingress,nginx-ingress 用于根据定制的 Rule(如后文 kong-ingress 的配置)将流量转发至 K8s 集群的 Service 中去。 创建 nginx-ingress 指令(可参照 https://kubernetes.github.io/ingress-nginx/deploy/)步骤如下: Step 1. 执行以下强制命令 -kubectl apply -f https://raw."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/k8s-deploy-konga/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / AWS / K8s 部署 konga +kubectl apply -f https://raw."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/k8s-deploy-konga/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / AWS / K8s 部署 konga K8s 部署 konga # 本篇只涉及 konga 的部署操作,不涉及概念知识。 提前准备 # K8s 集群,本文使用的是 AWS EKS 集群服务 一台可以连接 K8s 集群的服务器,已经安装 kubectl 和 docker 等基础应用,之后称之为操作机器 Postgres数据库 !注意:该数据库使用 9.5 版本,其他最新版本的数据库在初始化 konga 数据库时会报如下错: error: Failed to prepare database: error: column r.consrc does not exist 这是部署 konga 踩过的坑之一。 确保 K8s 集群中已经创建了 nginx-ingress,nginx-ingress 用于根据定制的 Rule(如后文 kong-ingress 的配置)将流量转发至 K8s 集群的 Service 中去。 创建 nginx-ingress 指令(可参照 https://kubernetes.github.io/ingress-nginx/deploy/)步骤如下: Step 1. 执行以下强制命令 -kubectl apply -f https://raw."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Konga | 🍁 秋河落叶</title> +kubectl apply -f https://raw."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Konga | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/k8s-deploy-konga/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>K8s Deploy Konga</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#提前准备>提前准备</a></li><li><a href=#初始化数据库>初始化数据库</a></li><li><a href=#k8s-资源文件>K8s 资源文件</a></li><li><a href=#创建konga>创建Konga</a></li><li><a href=#验证konga>验证konga</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/aws/>AWS</a> / K8s 部署 konga</p><h1 id=k8s-部署-konga>K8s 部署 konga diff --git a/aws/k8s-deploy-postgres/index.html b/aws/k8s-deploy-postgres/index.html index fae58276..4b29fae1 100644 --- a/aws/k8s-deploy-postgres/index.html +++ b/aws/k8s-deploy-postgres/index.html @@ -5,16 +5,16 @@ apiVersion: v1 kind: Namespace metadata: name: postgres postgres-config.yaml: apiVersion: v1 kind: ConfigMap metadata: name: postgres-config namespace: postgres labels: app: postgres data: POSTGRES_DB: master POSTGRES_USER: dba POSTGRES_PASSWORD: pg_pass 这里的数据库密码涉及到信息敏感,更建议使用 Secret 资源而非 ConfigMap,这里就偷懒了。 postgres-statefulset.yaml: -apiVersion: apps/v1 kind: StatefulSet metadata: name: postgres namespace: postgres spec: serviceName: "postgres" replicas: 1 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers: - name: postgres image: postgres:9.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/k8s-deploy-postgres/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / K8s 部署 Postgres +apiVersion: apps/v1 kind: StatefulSet metadata: name: postgres namespace: postgres spec: serviceName: "postgres" replicas: 1 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers: - name: postgres image: postgres:9.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/k8s-deploy-postgres/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / K8s 部署 Postgres K8s 部署 Postgres # 本篇只涉及 Postgres 的部署操作,不涉及概念知识。 特别说明:Postgres 相对于普通的程序应用而言,属于有状态的服务,因为它存储的数据是需要持久保存的,这点决定了我们选择 K8s-StatefulSet 的部署而非 K8s-Deployment。 提前准备 # K8s 集群,本文使用的是AWS EKS集群服务 一台可以连接 K8s 集群的服务器,已经安装 kubectl 和 docker 等基础应用 K8s资源文件 # postgres-namespace.yaml: apiVersion: v1 kind: Namespace metadata: name: postgres postgres-config.yaml: apiVersion: v1 kind: ConfigMap metadata: name: postgres-config namespace: postgres labels: app: postgres data: POSTGRES_DB: master POSTGRES_USER: dba POSTGRES_PASSWORD: pg_pass 这里的数据库密码涉及到信息敏感,更建议使用 Secret 资源而非 ConfigMap,这里就偷懒了。 postgres-statefulset.yaml: -apiVersion: apps/v1 kind: StatefulSet metadata: name: postgres namespace: postgres spec: serviceName: "postgres" replicas: 1 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers: - name: postgres image: postgres:9.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Postgres | 🍁 秋河落叶</title> +apiVersion: apps/v1 kind: StatefulSet metadata: name: postgres namespace: postgres spec: serviceName: "postgres" replicas: 1 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers: - name: postgres image: postgres:9.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Postgres | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/k8s-deploy-postgres/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>K8s Deploy Postgres</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#提前准备>提前准备</a></li><li><a href=#k8s资源文件>K8s资源文件</a></li><li><a href=#创建postgres>创建Postgres</a></li><li><a href=#验证postgres>验证Postgres</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/aws/>AWS</a> / K8s 部署 Postgres</p><h1 id=k8s-部署-postgres>K8s 部署 Postgres diff --git a/aws/terraform-remanage-resource/index.html b/aws/terraform-remanage-resource/index.html index b4773d0f..14098c53 100644 --- a/aws/terraform-remanage-resource/index.html +++ b/aws/terraform-remanage-resource/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / AWS / Terraform 重新管理资源 Terraform 重新管理资源 # 看到这个标题你可能会有点懵,我先来解释下。 在使用Terraform管理AWS的VPC-Subnet资源时(下面是定义资源的代码清单),我遇到了一个问题:当我修改aws_subnet.eks-private-subnet-1资源的cidr_block时,假设我修改成了172.28.2.0/24,这时候旧的 -resource "aws_subnet" "eks-private-subnet-1" { vpc_id = "${var.vpc_id}" cidr_block = "172.28.1.0/24" map_public_ip_on_launch = "false" availability_zone = "${var.region}a" tags = merge( {Name = "${var.cluster_name}-private-subnet-1a"}, "${local.cluster_private_subnet_tags}") } « K8s 部署 Postgres'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/terraform-remanage-resource/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / Terraform 重新管理资源 +resource "aws_subnet" "eks-private-subnet-1" { vpc_id = "${var.vpc_id}" cidr_block = "172.28.1.0/24" map_public_ip_on_launch = "false" availability_zone = "${var.region}a" tags = merge( {Name = "${var.cluster_name}-private-subnet-1a"}, "${local.cluster_private_subnet_tags}") } « K8s 部署 Postgres'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/aws/terraform-remanage-resource/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / AWS / Terraform 重新管理资源 Terraform 重新管理资源 # 看到这个标题你可能会有点懵,我先来解释下。 在使用Terraform管理AWS的VPC-Subnet资源时(下面是定义资源的代码清单),我遇到了一个问题:当我修改aws_subnet.eks-private-subnet-1资源的cidr_block时,假设我修改成了172.28.2.0/24,这时候旧的 -resource "aws_subnet" "eks-private-subnet-1" { vpc_id = "${var.vpc_id}" cidr_block = "172.28.1.0/24" map_public_ip_on_launch = "false" availability_zone = "${var.region}a" tags = merge( {Name = "${var.cluster_name}-private-subnet-1a"}, "${local.cluster_private_subnet_tags}") } « K8s 部署 Postgres'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Terraform Remanage Resource | 🍁 秋河落叶</title> +resource "aws_subnet" "eks-private-subnet-1" { vpc_id = "${var.vpc_id}" cidr_block = "172.28.1.0/24" map_public_ip_on_launch = "false" availability_zone = "${var.region}a" tags = merge( {Name = "${var.cluster_name}-private-subnet-1a"}, "${local.cluster_private_subnet_tags}") } « K8s 部署 Postgres'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="aws"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Terraform Remanage Resource | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/aws/terraform-remanage-resource/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Terraform Remanage Resource</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/aws/>AWS</a> / Terraform 重新管理资源</p><h1 id=terraform-重新管理资源>Terraform 重新管理资源 diff --git a/categories/index.html b/categories/index.html index afe7d0bc..734e84e7 100644 --- a/categories/index.html +++ b/categories/index.html @@ -1,5 +1,5 @@ -<!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/categories/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="Categories"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Categories | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/categories/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/categories/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/categories/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="Categories"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Categories | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/categories/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/categories/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Categories</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav><ul><li class=book-section-flat><strong>Categories</strong><ul></ul></li><li class=book-section-flat><strong>Tags</strong><ul></ul></li></ul></nav></aside></header><footer class=book-footer><div class="flex flex-wrap justify-between"></div><script>(function(){function e(e){const t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}document.querySelectorAll("pre code").forEach(t=>{t.addEventListener("click",function(){if(window.getSelection().toString())return;e(t.parentElement),navigator.clipboard&&navigator.clipboard.writeText(t.parentElement.textContent)})})})()</script></footer><label for=menu-control class="hidden book-menu-overlay"></label></div><aside class=book-toc><div class=book-toc-content><nav><ul><li class=book-section-flat><strong>Categories</strong><ul></ul></li><li class=book-section-flat><strong>Tags</strong><ul></ul></li></ul></nav></div></aside></main></body></html> \ No newline at end of file diff --git a/categories/index.xml b/categories/index.xml index 70ca0d54..d13887a4 100644 --- a/categories/index.xml +++ b/categories/index.xml @@ -1 +1 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Categories on 🍁 秋河落叶</title><link>https://blog.poneding.com/categories/</link><description>Recent content in Categories on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/categories/index.xml" rel="self" type="application/rss+xml"/></channel></rss> \ No newline at end of file +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Categories on 秋河落叶</title><link>https://blog.poneding.com/categories/</link><description>Recent content in Categories on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/categories/index.xml" rel="self" type="application/rss+xml"/></channel></rss> \ No newline at end of file diff --git a/cka/001/index.html b/cka/001/index.html index 6678c380..4efbc2d4 100644 --- a/cka/001/index.html +++ b/cka/001/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / CKA / 001 001 # 01 Task - 英文 # Create a new ClusterRole named deployment-clusterrole that only allows the creation of the following resource types: -Deployment StatefulSet DaemonSet Create a new ServiceAccount named cicd-token in the existing namespace app-team1. Limited to namespace app-team1, bind the new ClusterRole deployment-clusterrole to the new ServiceAccount cicd-token. kubectl create ns app-team1 kubectl create serviceaccount cicd-token -n app-team1 kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployment,statefulset,daemonset #limted to the namespace app-team1。需要限制的是namespace级别,clusterrolebinding为设置全局,rolebinding正确 kubectl create rolebinding cicd-clusterrole -n app-team1 --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token 02 Task - 英文 # Set the node named ek8s-node-1 as unavaliable and reschedule all the pods running on it."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cka/001/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / CKA / 001 +Deployment StatefulSet DaemonSet Create a new ServiceAccount named cicd-token in the existing namespace app-team1. Limited to namespace app-team1, bind the new ClusterRole deployment-clusterrole to the new ServiceAccount cicd-token. kubectl create ns app-team1 kubectl create serviceaccount cicd-token -n app-team1 kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployment,statefulset,daemonset #limted to the namespace app-team1。需要限制的是namespace级别,clusterrolebinding为设置全局,rolebinding正确 kubectl create rolebinding cicd-clusterrole -n app-team1 --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token 02 Task - 英文 # Set the node named ek8s-node-1 as unavaliable and reschedule all the pods running on it."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cka/001/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / CKA / 001 001 # 01 Task - 英文 # Create a new ClusterRole named deployment-clusterrole that only allows the creation of the following resource types: -Deployment StatefulSet DaemonSet Create a new ServiceAccount named cicd-token in the existing namespace app-team1. Limited to namespace app-team1, bind the new ClusterRole deployment-clusterrole to the new ServiceAccount cicd-token. kubectl create ns app-team1 kubectl create serviceaccount cicd-token -n app-team1 kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployment,statefulset,daemonset #limted to the namespace app-team1。需要限制的是namespace级别,clusterrolebinding为设置全局,rolebinding正确 kubectl create rolebinding cicd-clusterrole -n app-team1 --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token 02 Task - 英文 # Set the node named ek8s-node-1 as unavaliable and reschedule all the pods running on it."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="cka"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>1st | 🍁 秋河落叶</title> +Deployment StatefulSet DaemonSet Create a new ServiceAccount named cicd-token in the existing namespace app-team1. Limited to namespace app-team1, bind the new ClusterRole deployment-clusterrole to the new ServiceAccount cicd-token. kubectl create ns app-team1 kubectl create serviceaccount cicd-token -n app-team1 kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployment,statefulset,daemonset #limted to the namespace app-team1。需要限制的是namespace级别,clusterrolebinding为设置全局,rolebinding正确 kubectl create rolebinding cicd-clusterrole -n app-team1 --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token 02 Task - 英文 # Set the node named ek8s-node-1 as unavaliable and reschedule all the pods running on it."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="cka"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>1st | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/cka/001/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>1st</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#01-task---英文>01 Task - 英文</a></li><li><a href=#02-task---英文>02 Task - 英文</a></li><li><a href=#03-task---英文>03 Task - 英文</a></li><li><a href=#04-task---中文>04 Task - 中文</a></li><li><a href=#05-task---英文>05 Task - 英文</a></li><li><a href=#06-task---英文>06 Task - 英文</a></li><li><a href=#07-task---英文>07 Task - 英文</a></li><li><a href=#08-task---英文>08 Task - 英文</a></li><li><a href=#09-task---英文>09 Task - 英文</a></li><li><a href=#10-task---英文>10 Task - 英文</a></li><li><a href=#11-task---英文>11 Task - 英文</a></li><li><a href=#12-task---英文>12 Task - 英文</a></li><li><a href=#13-task---英文>13 Task - 英文</a></li><li><a href=#14-task---英文>14 Task - 英文</a></li><li><a href=#15-task---英文>15 Task - 英文</a></li><li><a href=#16-task---英文>16 Task - 英文</a></li><li><a href=#17-task---英文>17 Task - 英文</a></li><li><a href=#19-task---英文>19 Task - 英文</a></li><li><a href=#静态pod创建方法与注意点>静态Pod创建方法与注意点</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/cka/>CKA</a> / 001</p><h1 id=001>001 diff --git a/cka/index.html b/cka/index.html index 00615e59..6e595d62 100644 --- a/cka/index.html +++ b/cka/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / CKA CKA # 001 准备CKA -考题"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cka/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / CKA +考题"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cka/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / CKA CKA # 001 准备CKA -考题"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Cka | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/cka/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/cka/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +考题"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Cka | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/cka/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/cka/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Cka</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / CKA</p><h1 id=cka>CKA <a class=anchor href=#cka>#</a></h1><p><a href=/cka/001/>001</a></p><p><a href=/cka/prepare-cka/>准备CKA</a></p><p><a href=/cka/tasks/>考题</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/cka/index.xml b/cka/index.xml index a9b091ff..2ba334c1 100644 --- a/cka/index.xml +++ b/cka/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/cka/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/cka/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/cka/001/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/cka/001/</guid><description>🏠 首页 / CKA / 001 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/cka/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/cka/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/cka/001/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/cka/001/</guid><description>🏠 首页 / CKA / 001 001 # 01 Task - 英文 # Create a new ClusterRole named deployment-clusterrole that only allows the creation of the following resource types: Deployment StatefulSet DaemonSet Create a new ServiceAccount named cicd-token in the existing namespace app-team1. Limited to namespace app-team1, bind the new ClusterRole deployment-clusterrole to the new ServiceAccount cicd-token. kubectl create ns app-team1 kubectl create serviceaccount cicd-token -n app-team1 kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployment,statefulset,daemonset #limted to the namespace app-team1。需要限制的是namespace级别,clusterrolebinding为设置全局,rolebinding正确 kubectl create rolebinding cicd-clusterrole -n app-team1 --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token 02 Task - 英文 # Set the node named ek8s-node-1 as unavaliable and reschedule all the pods running on it.</description></item><item><title/><link>https://blog.poneding.com/cka/prepare-cka/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/cka/prepare-cka/</guid><description>🏠 首页 / CKA / 准备CKA 准备CKA # 办理护照 # 优惠券: diff --git a/cka/prepare-cka/index.html b/cka/prepare-cka/index.html index 2512c563..0dbb5338 100644 --- a/cka/prepare-cka/index.html +++ b/cka/prepare-cka/index.html @@ -3,14 +3,14 @@ Affkub95-268483 Frequently Asked Questions: CKA and CKAD & CKS - T&C DOC (linuxfoundation.org) « 001 -» 考题"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cka/prepare-cka/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / CKA / 准备CKA +» 考题"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cka/prepare-cka/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / CKA / 准备CKA 准备CKA # 办理护照 # 优惠券: Affkub95-268483 Frequently Asked Questions: CKA and CKAD & CKS - T&C DOC (linuxfoundation.org) « 001 -» 考题"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="cka"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Prepare Cka | 🍁 秋河落叶</title> +» 考题"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="cka"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Prepare Cka | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/cka/prepare-cka/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Prepare Cka</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#办理护照>办理护照</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/cka/>CKA</a> / 准备CKA</p><h1 id=准备cka>准备CKA diff --git a/cka/tasks/index.html b/cka/tasks/index.html index 7579bf1d..73eea759 100644 --- a/cka/tasks/index.html +++ b/cka/tasks/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / CKA / 考题 考题 # kubectl scale deployment nginx --replicas=3 创建busybox: kubectl run busybox --image=busybox --generator=run-pod/v1 --command=true -- sleep 7d # nslookup kubectl run nginx-dns --image=nginx kubectl run busybox --image=busybox --generator=run-pod/v1 --command=true -- sleep 7d kubectl exec -it busybox -- nslookup nginx-dns kubectl exec -it busybox -- nslookup <pod-ip> etcd备份和还原: -ETCDCTL_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key \ snapshot save ETCDCTL_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --name=master \ --cert=/etc/kubernetes/pki/etcd/server."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cka/tasks/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / CKA / 考题 +ETCDCTL_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key \ snapshot save ETCDCTL_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --name=master \ --cert=/etc/kubernetes/pki/etcd/server."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cka/tasks/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / CKA / 考题 考题 # kubectl scale deployment nginx --replicas=3 创建busybox: kubectl run busybox --image=busybox --generator=run-pod/v1 --command=true -- sleep 7d # nslookup kubectl run nginx-dns --image=nginx kubectl run busybox --image=busybox --generator=run-pod/v1 --command=true -- sleep 7d kubectl exec -it busybox -- nslookup nginx-dns kubectl exec -it busybox -- nslookup <pod-ip> etcd备份和还原: -ETCDCTL_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key \ snapshot save ETCDCTL_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --name=master \ --cert=/etc/kubernetes/pki/etcd/server."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="cka"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Tasks | 🍁 秋河落叶</title> +ETCDCTL_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key \ snapshot save ETCDCTL_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --name=master \ --cert=/etc/kubernetes/pki/etcd/server."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="cka"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Tasks | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/cka/tasks/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Tasks</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/cka/>CKA</a> / 考题</p><h1 id=考题>考题 diff --git a/cs/index.html b/cs/index.html index c8e94407..3a77687c 100644 --- a/cs/index.html +++ b/cs/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / 计算机科学 计算机科学 # 互联网如何运作? 网络通信 -虚拟内存"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cs/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 计算机科学 +虚拟内存"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cs/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 计算机科学 计算机科学 # 互联网如何运作? 网络通信 -虚拟内存"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Cs | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/cs/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/cs/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +虚拟内存"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Cs | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/cs/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/cs/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Cs</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / 计算机科学</p><h1 id=计算机科学>计算机科学 <a class=anchor href=#%e8%ae%a1%e7%ae%97%e6%9c%ba%e7%a7%91%e5%ad%a6>#</a></h1><p><a href=/cs/internet/>互联网如何运作?</a></p><p><a href=/cs/networking/>网络通信</a></p><p><a href=/cs/virtual-memory/>虚拟内存</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/cs/index.xml b/cs/index.xml index 6b82278c..92ec1c42 100644 --- a/cs/index.xml +++ b/cs/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/cs/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/cs/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/cs/internet/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/cs/internet/</guid><description>🏠 首页 / 计算机科学 / 互联网如何运作? +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/cs/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/cs/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/cs/internet/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/cs/internet/</guid><description>🏠 首页 / 计算机科学 / 互联网如何运作? 互联网如何运作? # 本篇文章翻译自: 原文地址 作为开发人员,深入了解互联网是什么及其工作原理非常重要。它是构建大多数现代软件应用程序的基础。为了构建有效、安全且可扩展的应用程序和服务,您需要深入了解互联网的工作原理以及如何利用其功能和连接性。 在本文中,我们将介绍互联网的基础知识,包括它的工作原理、一些基本概念、术语和一些用于在互联网上构建应用程序和服务的通用协议。 diff --git a/cs/internet/index.html b/cs/internet/index.html index d64d2db3..aae40915 100644 --- a/cs/internet/index.html +++ b/cs/internet/index.html @@ -15,7 +15,7 @@ 数据包:通过互联网传输的小数据单位。 路由器:在不同网络之间引导数据包的设备。 IP 地址:分配给网络上每个设备的唯一标识符,用于将数据路由到正确的目的地。 域名:用于识别网站的人类可读名称,例如 google.com。 DNS:域名系统负责将域名转换为IP地址。 HTTP:超文本传输协议用于在客户端(例如网络浏览器)和服务器(例如网站)之间传输数据。 HTTPS:HTTP 的加密版本,用于在客户端和服务器之间提供安全通信。 SSL/TLS:安全套接字层和传输层安全协议用于通过互联网提供安全通信。 了解这些基本概念和术语对于使用互联网和开发基于互联网的应用程序和服务至关重要。 协议在互联网中的作用 # 协议在通过互联网进行通信和数据交换方面发挥着至关重要的作用。协议是一组规则和标准,定义设备和系统之间如何交换信息。 互联网通信中使用许多不同的协议,包括互联网协议 (IP)、传输控制协议 (TCP)、用户数据报协议 (UDP)、域名系统 (DNS) 等。 -IP 负责将数据包路由到正确的目的地,而 TCP 和 UDP 则确保数据包可靠且高效地传输。 DNS 用于将域名转换为 IP 地址,HTTP 用于在客户端和服务器之间传输数据。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cs/internet/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 计算机科学 / 互联网如何运作? +IP 负责将数据包路由到正确的目的地,而 TCP 和 UDP 则确保数据包可靠且高效地传输。 DNS 用于将域名转换为 IP 地址,HTTP 用于在客户端和服务器之间传输数据。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cs/internet/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 计算机科学 / 互联网如何运作? 互联网如何运作? # 本篇文章翻译自: 原文地址 作为开发人员,深入了解互联网是什么及其工作原理非常重要。它是构建大多数现代软件应用程序的基础。为了构建有效、安全且可扩展的应用程序和服务,您需要深入了解互联网的工作原理以及如何利用其功能和连接性。 在本文中,我们将介绍互联网的基础知识,包括它的工作原理、一些基本概念、术语和一些用于在互联网上构建应用程序和服务的通用协议。 @@ -32,9 +32,9 @@ 数据包:通过互联网传输的小数据单位。 路由器:在不同网络之间引导数据包的设备。 IP 地址:分配给网络上每个设备的唯一标识符,用于将数据路由到正确的目的地。 域名:用于识别网站的人类可读名称,例如 google.com。 DNS:域名系统负责将域名转换为IP地址。 HTTP:超文本传输协议用于在客户端(例如网络浏览器)和服务器(例如网站)之间传输数据。 HTTPS:HTTP 的加密版本,用于在客户端和服务器之间提供安全通信。 SSL/TLS:安全套接字层和传输层安全协议用于通过互联网提供安全通信。 了解这些基本概念和术语对于使用互联网和开发基于互联网的应用程序和服务至关重要。 协议在互联网中的作用 # 协议在通过互联网进行通信和数据交换方面发挥着至关重要的作用。协议是一组规则和标准,定义设备和系统之间如何交换信息。 互联网通信中使用许多不同的协议,包括互联网协议 (IP)、传输控制协议 (TCP)、用户数据报协议 (UDP)、域名系统 (DNS) 等。 -IP 负责将数据包路由到正确的目的地,而 TCP 和 UDP 则确保数据包可靠且高效地传输。 DNS 用于将域名转换为 IP 地址,HTTP 用于在客户端和服务器之间传输数据。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="cs"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Internet | 🍁 秋河落叶</title> +IP 负责将数据包路由到正确的目的地,而 TCP 和 UDP 则确保数据包可靠且高效地传输。 DNS 用于将域名转换为 IP 地址,HTTP 用于在客户端和服务器之间传输数据。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="cs"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Internet | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/cs/internet/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Internet</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#互联网简介>互联网简介</a></li><li><a href=#互联网如何运作概述>互联网如何运作:概述</a></li><li><a href=#基本概念和术语>基本概念和术语</a></li><li><a href=#协议在互联网中的作用>协议在互联网中的作用</a></li><li><a href=#了解-ip-地址和域名>了解 IP 地址和域名</a></li><li><a href=#http-和-https-简介>HTTP 和 HTTPS 简介</a></li><li><a href=#使用-tcpip-构建应用程序>使用 TCP/IP 构建应用程序</a></li><li><a href=#使用-ssltls-保护互联网通信>使用 SSL/TLS 保护互联网通信</a></li><li><a href=#未来新兴趋势和技术>未来:新兴趋势和技术</a></li><li><a href=#结论> 结论</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/cs/>计算机科学</a> / 互联网如何运作?</p><h1 id=互联网如何运作>互联网如何运作? diff --git a/cs/networking/index.html b/cs/networking/index.html index 15a94339..701c31ea 100644 --- a/cs/networking/index.html +++ b/cs/networking/index.html @@ -2,13 +2,13 @@ 网络通信 # I/O 模型 # 《UNIX 网络编程》中总结了 5 种 I/O 模型,包括同步和异步 I/O: 阻塞 I/O (Blocking I/O) 非阻塞 I/O (Nonblocking I/O) I/O 多路复用 (I/O multiplexing) 信号驱动 I/O (Signal driven I/O) 异步 I/O (Asynchronous I/O) 操作系统上的 I/O 是用户空间和内核空间的数据交互。 « 互联网如何运作? -» 虚拟内存"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cs/networking/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 计算机科学 / 网络通信 +» 虚拟内存"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cs/networking/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 计算机科学 / 网络通信 网络通信 # I/O 模型 # 《UNIX 网络编程》中总结了 5 种 I/O 模型,包括同步和异步 I/O: 阻塞 I/O (Blocking I/O) 非阻塞 I/O (Nonblocking I/O) I/O 多路复用 (I/O multiplexing) 信号驱动 I/O (Signal driven I/O) 异步 I/O (Asynchronous I/O) 操作系统上的 I/O 是用户空间和内核空间的数据交互。 « 互联网如何运作? -» 虚拟内存"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="cs"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Networking | 🍁 秋河落叶</title> +» 虚拟内存"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="cs"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Networking | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/cs/networking/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Networking</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#io-模型>I/O 模型</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/cs/>计算机科学</a> / 网络通信</p><h1 id=网络通信>网络通信 diff --git a/cs/virtual-memory/index.html b/cs/virtual-memory/index.html index e83f099d..6ee2c885 100644 --- a/cs/virtual-memory/index.html +++ b/cs/virtual-memory/index.html @@ -6,7 +6,7 @@ 主存(RAM)与 CPU 直接交换数据的内部存储器。 物理内存 虚拟内存 虚拟内存核心原理 # 为每个程序设置一段"连续"的虚拟地址空间,把这个地址空间分割成多个具有连续地址范围的页 (Page),并把这些页和物理内存做映射,在程序运行期间动态映射到物理内存。当程序引用到一段在物理内存的地址空间时,由硬件立刻执行必要的映射;而当程序引用到一段不在物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的指令。 内存交换(swap) # 在进程运行期间只分配映射当前使用到的内存,暂时不使用的数据则写回磁盘作为副本保存,需要用的时候再读入内存,动态地在磁盘和内存之间交换数据。 -参考 # 虚拟内存精粹 « 网络通信'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cs/virtual-memory/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / 计算机科学 / 虚拟内存 +参考 # 虚拟内存精粹 « 网络通信'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/cs/virtual-memory/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / 计算机科学 / 虚拟内存 虚拟内存 # 为了更加有效的管理内存并且降低内存出错的概率。 计算机存储器 # 速度快 容量大 价格便宜 类型,自上向下分别是寄存器,高速缓存,主存(RAM),磁盘。成本与访问速度负相关。 寄存器的容量:32 位:32x32 bit吗,64 位:64x64 bit @@ -14,9 +14,9 @@ 主存(RAM)与 CPU 直接交换数据的内部存储器。 物理内存 虚拟内存 虚拟内存核心原理 # 为每个程序设置一段"连续"的虚拟地址空间,把这个地址空间分割成多个具有连续地址范围的页 (Page),并把这些页和物理内存做映射,在程序运行期间动态映射到物理内存。当程序引用到一段在物理内存的地址空间时,由硬件立刻执行必要的映射;而当程序引用到一段不在物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的指令。 内存交换(swap) # 在进程运行期间只分配映射当前使用到的内存,暂时不使用的数据则写回磁盘作为副本保存,需要用的时候再读入内存,动态地在磁盘和内存之间交换数据。 -参考 # 虚拟内存精粹 « 网络通信'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="cs"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Virtual Memory | 🍁 秋河落叶</title> +参考 # 虚拟内存精粹 « 网络通信'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="cs"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Virtual Memory | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/cs/virtual-memory/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Virtual Memory</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#计算机存储器>计算机存储器</a></li><li><a href=#虚拟内存核心原理>虚拟内存核心原理</a></li><li><a href=#内存交换swap>内存交换(swap)</a></li><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/cs/>计算机科学</a> / 虚拟内存</p><h1 id=虚拟内存>虚拟内存 diff --git a/dapr/dapr/index.html b/dapr/dapr/index.html index 25ba4d1e..42316f70 100644 --- a/dapr/dapr/index.html +++ b/dapr/dapr/index.html @@ -8,7 +8,7 @@ Service Invocation(服务调用) State Management(状态管理) Publish and Subscribe(消息发布订阅) Resource bingdings and triggers(资源绑定,事件触发) Actors(单线程模型)分布式锁 Observability(遥测)ELK,链路监控,告警 Secrets(安全)IdentityServer4 安装 # 依赖 # Docker: https://docs.docker.com/install/ 注意:windows平台,Docker必须运行Linux Containers模式 安装cli # https://github.com/dapr/cli 以在linux中安装dapr为例: -wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O-|/bin/bash dapr init --runtime-version Service Invocation # 解决微服务之间通信的问题。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/dapr/dapr/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Dapr / Dapr 0-1 +wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O-|/bin/bash dapr init --runtime-version Service Invocation # 解决微服务之间通信的问题。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/dapr/dapr/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Dapr / Dapr 0-1 Dapr 0-1 # 介绍 # Dapr(Distributed Application Runtime),提供分布式应用运行所需要的环境。 Sidecar架构。 目的: @@ -18,9 +18,9 @@ Service Invocation(服务调用) State Management(状态管理) Publish and Subscribe(消息发布订阅) Resource bingdings and triggers(资源绑定,事件触发) Actors(单线程模型)分布式锁 Observability(遥测)ELK,链路监控,告警 Secrets(安全)IdentityServer4 安装 # 依赖 # Docker: https://docs.docker.com/install/ 注意:windows平台,Docker必须运行Linux Containers模式 安装cli # https://github.com/dapr/cli 以在linux中安装dapr为例: -wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O-|/bin/bash dapr init --runtime-version Service Invocation # 解决微服务之间通信的问题。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="dapr"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Dapr | 🍁 秋河落叶</title> +wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O-|/bin/bash dapr init --runtime-version Service Invocation # 解决微服务之间通信的问题。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="dapr"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Dapr | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/dapr/dapr/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Dapr</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#介绍>介绍</a></li><li><a href=#安装>安装</a><ul><li><a href=#依赖>依赖</a></li><li><a href=#安装cli>安装cli</a></li></ul></li><li><a href=#service-invocation>Service Invocation</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/dapr/>Dapr</a> / Dapr 0-1</p><h1 id=dapr-0-1>Dapr 0-1 diff --git a/dapr/index.html b/dapr/index.html index 649cdcb6..d7c62db2 100644 --- a/dapr/index.html +++ b/dapr/index.html @@ -1,8 +1,8 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Dapr -Dapr # Dapr 0-1"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/dapr/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Dapr -Dapr # Dapr 0-1"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Dapr | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/dapr/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/dapr/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +Dapr # Dapr 0-1"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/dapr/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Dapr +Dapr # Dapr 0-1"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Dapr | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/dapr/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/dapr/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Dapr</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / Dapr</p><h1 id=dapr>Dapr <a class=anchor href=#dapr>#</a></h1><p><a href=/dapr/dapr/>Dapr 0-1</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/dapr/index.xml b/dapr/index.xml index c478ec39..7fe8f13d 100644 --- a/dapr/index.xml +++ b/dapr/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/dapr/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/dapr/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/dapr/dapr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/dapr/dapr/</guid><description>🏠 首页 / Dapr / Dapr 0-1 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/dapr/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/dapr/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/dapr/dapr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/dapr/dapr/</guid><description>🏠 首页 / Dapr / Dapr 0-1 Dapr 0-1 # 介绍 # Dapr(Distributed Application Runtime),提供分布式应用运行所需要的环境。 Sidecar架构。 目的: diff --git a/design-pattern/cicd/index.html b/design-pattern/cicd/index.html index 0e889cc1..e64b6ce0 100644 --- a/design-pattern/cicd/index.html +++ b/design-pattern/cicd/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content=" 🏠 首页 / 设计模式 / CI/CD CI/CD # Concepts # Pipeline # PipelineStage # Fields: Name Type Desc ID string PipelineID string PrevPipelineStageID string Status uint8 Pending, Runing, Success, Failed, Abort Name string PipelineStageTask # Fields: -Name Type Desc ID string PipelineStageID string PrevPipelineStageTaskID string Image string Container image task running on. DindRequired boolean Docker in docker? DindImage string dependency DindRequired default: docker:18-dind. Scripts string CacheDirs string EnvironmentVariables string Status string EnvironmentVariables string EnvironmentVariables string "><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/design-pattern/cicd/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content=" 🏠 首页 / 设计模式 / CI/CD +Name Type Desc ID string PipelineStageID string PrevPipelineStageTaskID string Image string Container image task running on. DindRequired boolean Docker in docker? DindImage string dependency DindRequired default: docker:18-dind. Scripts string CacheDirs string EnvironmentVariables string Status string EnvironmentVariables string EnvironmentVariables string "><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/design-pattern/cicd/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content=" 🏠 首页 / 设计模式 / CI/CD CI/CD # Concepts # Pipeline # PipelineStage # Fields: Name Type Desc ID string PipelineID string PrevPipelineStageID string Status uint8 Pending, Runing, Success, Failed, Abort Name string PipelineStageTask # Fields: -Name Type Desc ID string PipelineStageID string PrevPipelineStageTaskID string Image string Container image task running on. DindRequired boolean Docker in docker? DindImage string dependency DindRequired default: docker:18-dind. Scripts string CacheDirs string EnvironmentVariables string Status string EnvironmentVariables string EnvironmentVariables string "><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="design-pattern"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Cicd | 🍁 秋河落叶</title> +Name Type Desc ID string PipelineStageID string PrevPipelineStageTaskID string Image string Container image task running on. DindRequired boolean Docker in docker? DindImage string dependency DindRequired default: docker:18-dind. Scripts string CacheDirs string EnvironmentVariables string Status string EnvironmentVariables string EnvironmentVariables string "><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="design-pattern"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Cicd | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/design-pattern/cicd/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Cicd</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#concepts>Concepts</a><ul><li><a href=#pipeline>Pipeline</a></li><li><a href=#pipelinestage>PipelineStage</a></li><li><a href=#pipelinestagetask>PipelineStageTask</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/design-pattern/>设计模式</a> / CI/CD</p><h1 id=cicd>CI/CD diff --git a/design-pattern/index.html b/design-pattern/index.html index c0f014b1..303a684a 100644 --- a/design-pattern/index.html +++ b/design-pattern/index.html @@ -1,8 +1,8 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / 设计模式 -设计模式 # CI/CD"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/design-pattern/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 设计模式 -设计模式 # CI/CD"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Design Pattern | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/design-pattern/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/design-pattern/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +设计模式 # CI/CD"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/design-pattern/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 设计模式 +设计模式 # CI/CD"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Design Pattern | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/design-pattern/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/design-pattern/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Design Pattern</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / 设计模式</p><h1 id=设计模式>设计模式 <a class=anchor href=#%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f>#</a></h1><p><a href=/design-pattern/cicd/>CI/CD</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/design-pattern/index.xml b/design-pattern/index.xml index 5c8a70f2..ee85e406 100644 --- a/design-pattern/index.xml +++ b/design-pattern/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/design-pattern/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/design-pattern/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/design-pattern/cicd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/design-pattern/cicd/</guid><description> 🏠 首页 / 设计模式 / CI/CD +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/design-pattern/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/design-pattern/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/design-pattern/cicd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/design-pattern/cicd/</guid><description> 🏠 首页 / 设计模式 / CI/CD CI/CD # Concepts # Pipeline # PipelineStage # Fields: Name Type Desc ID string PipelineID string PrevPipelineStageID string Status uint8 Pending, Runing, Success, Failed, Abort Name string PipelineStageTask # Fields: Name Type Desc ID string PipelineStageID string PrevPipelineStageTaskID string Image string Container image task running on. DindRequired boolean Docker in docker? DindImage string dependency DindRequired default: docker:18-dind. Scripts string CacheDirs string EnvironmentVariables string Status string EnvironmentVariables string EnvironmentVariables string</description></item></channel></rss> \ No newline at end of file diff --git a/devops/agile/index.html b/devops/agile/index.html index 523d0f16..0d891aa9 100644 --- a/devops/agile/index.html +++ b/devops/agile/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / DevOps / Agile Agile # 敏捷 交付产品可以看作饭店上菜 顾客点了十个菜 后厨把十个菜做完,最后十个菜一起上桌 ——不敏捷 后厨做完一个菜就上一个菜 ——敏捷 敏捷的优点: -做一盘上一盘,顾客早早就能吃上了,优先横扫饥饿;尽早给用户体验上产品; 做一盘上一盘,每个菜都是新出锅,顾客能吃上一口热的;对比十盘菜一起上,可能先炒的菜已经凉了,凉的菜换做成产品的话,可能就是已经过时的功能了,不符合需求了 做一盘上一盘, 如果前面的菜咸了,可以反馈给饭店,后面的菜做淡点;对比十盘菜一起上,顾客就无法从中间反馈意见了,做一个用户插不上意见的产品,严重的后果可能是用户已经不感兴趣了。 » Ansible"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/agile/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / Agile +做一盘上一盘,顾客早早就能吃上了,优先横扫饥饿;尽早给用户体验上产品; 做一盘上一盘,每个菜都是新出锅,顾客能吃上一口热的;对比十盘菜一起上,可能先炒的菜已经凉了,凉的菜换做成产品的话,可能就是已经过时的功能了,不符合需求了 做一盘上一盘, 如果前面的菜咸了,可以反馈给饭店,后面的菜做淡点;对比十盘菜一起上,顾客就无法从中间反馈意见了,做一个用户插不上意见的产品,严重的后果可能是用户已经不感兴趣了。 » Ansible"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/agile/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / Agile Agile # 敏捷 交付产品可以看作饭店上菜 顾客点了十个菜 后厨把十个菜做完,最后十个菜一起上桌 ——不敏捷 后厨做完一个菜就上一个菜 ——敏捷 敏捷的优点: -做一盘上一盘,顾客早早就能吃上了,优先横扫饥饿;尽早给用户体验上产品; 做一盘上一盘,每个菜都是新出锅,顾客能吃上一口热的;对比十盘菜一起上,可能先炒的菜已经凉了,凉的菜换做成产品的话,可能就是已经过时的功能了,不符合需求了 做一盘上一盘, 如果前面的菜咸了,可以反馈给饭店,后面的菜做淡点;对比十盘菜一起上,顾客就无法从中间反馈意见了,做一个用户插不上意见的产品,严重的后果可能是用户已经不感兴趣了。 » Ansible"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Agile | 🍁 秋河落叶</title> +做一盘上一盘,顾客早早就能吃上了,优先横扫饥饿;尽早给用户体验上产品; 做一盘上一盘,每个菜都是新出锅,顾客能吃上一口热的;对比十盘菜一起上,可能先炒的菜已经凉了,凉的菜换做成产品的话,可能就是已经过时的功能了,不符合需求了 做一盘上一盘, 如果前面的菜咸了,可以反馈给饭店,后面的菜做淡点;对比十盘菜一起上,顾客就无法从中间反馈意见了,做一个用户插不上意见的产品,严重的后果可能是用户已经不感兴趣了。 » Ansible"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Agile | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/devops/agile/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Agile</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/devops/>DevOps</a> / Agile</p><h1 id=agile>Agile diff --git a/devops/ansible/index.html b/devops/ansible/index.html index 02164a96..e2a6900e 100644 --- a/devops/ansible/index.html +++ b/devops/ansible/index.html @@ -17,7 +17,7 @@ Ansible配置 # 配置文件位置:/etc/ansible/ansible.cfg,为ini格式文件。 配置示例 # inventory:主机清单配置文件位置,在使用Ansible命令时,也开始-i <path>指定; host_key_checking:当know_hosts中不存在的主机(即尚未访问过的主机,是否需要输入密钥); - become_user:sudo用户;"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/ansible/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / Ansible + become_user:sudo用户;"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/ansible/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / Ansible Ansible # 介绍 # 一款轻量级的自动化运维工具,只需要一台主机安装Ansible,便可以管理其他可连通的Linux服务器。 开源 python @@ -36,9 +36,9 @@ Ansible配置 # 配置文件位置:/etc/ansible/ansible.cfg,为ini格式文件。 配置示例 # inventory:主机清单配置文件位置,在使用Ansible命令时,也开始-i <path>指定; host_key_checking:当know_hosts中不存在的主机(即尚未访问过的主机,是否需要输入密钥); - become_user:sudo用户;"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Ansible | 🍁 秋河落叶</title> + become_user:sudo用户;"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Ansible | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/devops/ansible/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Ansible</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#介绍>介绍</a><ul><li><a href=#特点>特点</a></li></ul></li><li><a href=#安装>安装</a></li><li><a href=#主要概念>主要概念</a></li><li><a href=#ansible配置>Ansible配置</a><ul><li><a href=#配置示例>配置示例</a></li></ul></li><li><a href=#主机清单inventory>主机清单(Inventory)</a><ul><li><a href=#formats>Formats</a></li><li><a href=#hosts>Hosts</a></li><li><a href=#group>Group</a></li><li><a href=#inventory内置参数>Inventory内置参数</a></li></ul></li><li><a href=#模块modules>模块(Modules)</a><ul><li><a href=#常用模块>常用模块</a></li></ul></li><li><a href=#任务tasks>任务(Tasks)</a></li><li><a href=#ansible用法>Ansible用法</a><ul><li><a href=#ansible命令>ansible命令</a></li><li><a href=#anisble-playbook>Anisble playbook</a></li></ul></li><li><a href=#ansible原理>Ansible原理</a></li><li><a href=#演示>演示</a></li><li><a href=#踩坑记录>踩坑记录</a></li><li><a href=#其他>其他</a><ul><li><a href=#预编译>预编译</a></li><li><a href=#python的版本兼容问题>python的版本兼容问题</a></li><li><a href=#工具对比>工具对比</a></li></ul></li><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/devops/>DevOps</a> / Ansible</p><h1 id=ansible>Ansible diff --git a/devops/bule-green-rollback-gray/index.html b/devops/bule-green-rollback-gray/index.html index 8857038e..5eb476a4 100644 --- a/devops/bule-green-rollback-gray/index.html +++ b/devops/bule-green-rollback-gray/index.html @@ -18,7 +18,7 @@ 无需中断服务; 同样无需增加服务器,能较为平稳的过渡到新版本,并且当有bug时也能做到快速回滚。 « Ansible -» 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING)"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/bule-green-rollback-gray/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / 蓝绿部署、滚动部署和灰度部署 +» 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING)"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/bule-green-rollback-gray/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / 蓝绿部署、滚动部署和灰度部署 蓝绿部署、滚动部署和灰度部署 # 直接举例说明: 现环境中运行着3个V1版本的实例,计划更新到V2版本。 蓝绿部署 # 直接使用新的服务资源部署3个V2版本实例(仍然保留3个V1版本),然后将请求流量全部转到V2版本。 @@ -38,9 +38,9 @@ 无需中断服务; 同样无需增加服务器,能较为平稳的过渡到新版本,并且当有bug时也能做到快速回滚。 « Ansible -» 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING)"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Bule Green Rollback Gray | 🍁 秋河落叶</title> +» 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING)"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Bule Green Rollback Gray | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/devops/bule-green-rollback-gray/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Bule Green Rollback Gray</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#蓝绿部署>蓝绿部署</a></li><li><a href=#滚动部署>滚动部署</a></li><li><a href=#灰度部署>灰度部署</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/devops/>DevOps</a> / 蓝绿部署、滚动部署和灰度部署</p><h1 id=蓝绿部署滚动部署和灰度部署>蓝绿部署、滚动部署和灰度部署 diff --git a/devops/chaos-engineering/index.html b/devops/chaos-engineering/index.html index e6ddfa02..49a51a90 100644 --- a/devops/chaos-engineering/index.html +++ b/devops/chaos-engineering/index.html @@ -11,7 +11,7 @@ 高级原则 # 以下原则描述了应用混沌工程的理想方式,这些原则基于上述实验过程。对这些原则的匹配程度能够增强我们在大规模分布式系统的信心。 建立一个围绕稳定状态行为的假说 # 要关注系统的可测量输出, 而不是系统的属性。对这些输出在短时间内的度量构成了系统稳定状态的一个代理。 整个系统的吞吐量、错误率、延迟百分点等都可能是表示稳态行为的指标。 通过在实验中的系统性行为模式上的关注, 混沌工程验证了系统是否正常工作, 而不是试图验证它是如何工作的。 多样化真实世界的事件 # 混沌变量反映了现实世界中的事件。 我们可以通过潜在影响或估计频率排定这些事件的优先级。考虑与硬件故障类似的事件, 如服务器宕机、软件故障 (如错误响应) 和非故障事件 (如流量激增或伸缩事件)。 任何能够破坏稳态的事件都是混沌实验中的一个潜在变量。 -在生产环境中运行实验 # 系统的行为会依据环境和流量模式都会有所不同。 由于资源使用率变化的随时可能发生, 因此通过采集实际流量是捕获请求路径的唯一可靠方法。 为了保证系统执行方式的真实性与当前部署系统的相关性, 混沌工程强烈推荐直接采用生产环境流量进行实验。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/chaos-engineering/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING) +在生产环境中运行实验 # 系统的行为会依据环境和流量模式都会有所不同。 由于资源使用率变化的随时可能发生, 因此通过采集实际流量是捕获请求路径的唯一可靠方法。 为了保证系统执行方式的真实性与当前部署系统的相关性, 混沌工程强烈推荐直接采用生产环境流量进行实验。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/chaos-engineering/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING) 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING) # http://principlesofchaos.org/ 简体中文版 混沌工程是在分布式系统上进行实验的学科, 目的是建立对系统抵御生产环境中失控条件的能力以及信心。: 大规模分布式软件系统的发展正在改变软件工程。作为一个行业,我们很快采用了提高开发灵活性和部署速度的实践。紧随着这些优点的一个迫切问题是:我们对投入生产的复杂系统有多少信心? @@ -24,9 +24,9 @@ 高级原则 # 以下原则描述了应用混沌工程的理想方式,这些原则基于上述实验过程。对这些原则的匹配程度能够增强我们在大规模分布式系统的信心。 建立一个围绕稳定状态行为的假说 # 要关注系统的可测量输出, 而不是系统的属性。对这些输出在短时间内的度量构成了系统稳定状态的一个代理。 整个系统的吞吐量、错误率、延迟百分点等都可能是表示稳态行为的指标。 通过在实验中的系统性行为模式上的关注, 混沌工程验证了系统是否正常工作, 而不是试图验证它是如何工作的。 多样化真实世界的事件 # 混沌变量反映了现实世界中的事件。 我们可以通过潜在影响或估计频率排定这些事件的优先级。考虑与硬件故障类似的事件, 如服务器宕机、软件故障 (如错误响应) 和非故障事件 (如流量激增或伸缩事件)。 任何能够破坏稳态的事件都是混沌实验中的一个潜在变量。 -在生产环境中运行实验 # 系统的行为会依据环境和流量模式都会有所不同。 由于资源使用率变化的随时可能发生, 因此通过采集实际流量是捕获请求路径的唯一可靠方法。 为了保证系统执行方式的真实性与当前部署系统的相关性, 混沌工程强烈推荐直接采用生产环境流量进行实验。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Chaos Engineering | 🍁 秋河落叶</title> +在生产环境中运行实验 # 系统的行为会依据环境和流量模式都会有所不同。 由于资源使用率变化的随时可能发生, 因此通过采集实际流量是捕获请求路径的唯一可靠方法。 为了保证系统执行方式的真实性与当前部署系统的相关性, 混沌工程强烈推荐直接采用生产环境流量进行实验。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Chaos Engineering | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/devops/chaos-engineering/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Chaos Engineering</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#混沌工程实践>混沌工程实践</a></li><li><a href=#高级原则>高级原则</a><ul><li><a href=#建立一个围绕稳定状态行为的假说>建立一个围绕稳定状态行为的假说</a></li><li><a href=#多样化真实世界的事件>多样化真实世界的事件</a></li><li><a href=#在生产环境中运行实验>在生产环境中运行实验</a></li><li><a href=#持续自动化运行实验>持续自动化运行实验</a></li><li><a href=#最小化爆炸半径>最小化爆炸半径</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/devops/>DevOps</a> / 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING)</p><h1 id=混沌工程原则-principles-of-chaos-engineering>混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING) diff --git a/devops/commercial-canvas/index.html b/devops/commercial-canvas/index.html index 3826eeb1..eb2363ef 100644 --- a/devops/commercial-canvas/index.html +++ b/devops/commercial-canvas/index.html @@ -12,7 +12,7 @@ C$成本结构(Cost Structure):商业模式上述要素所引发的成本构成。 基本认知 # 客户细分 # 客户是商业模式的核心。哪些是重要客户 « 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING) -» 使用grafana监控5xx服务"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/commercial-canvas/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / 商业画布 +» 使用grafana监控5xx服务"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/commercial-canvas/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / 商业画布 商业画布 # 用来描述商业模式、可视化商业模式、评估商业模式以及改变商业模式的通用语言。 商业模式:通过商业产品创造价值,传递价值,获取价值的一种原理。 九个模块 # CS客户细分(Customer Segments):企业或机构所服务的一个或多个客户分类群体。 @@ -26,9 +26,9 @@ C$成本结构(Cost Structure):商业模式上述要素所引发的成本构成。 基本认知 # 客户细分 # 客户是商业模式的核心。哪些是重要客户 « 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING) -» 使用grafana监控5xx服务"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Commercial Canvas | 🍁 秋河落叶</title> +» 使用grafana监控5xx服务"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Commercial Canvas | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/devops/commercial-canvas/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Commercial Canvas</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#九个模块>九个模块</a></li><li><a href=#基本认知>基本认知</a><ul><li><a href=#客户细分>客户细分</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/devops/>DevOps</a> / 商业画布</p><h1 id=商业画布>商业画布 diff --git a/devops/grafana-monite-service-with-5xx/index.html b/devops/grafana-monite-service-with-5xx/index.html index 43f0722c..cfa40f10 100644 --- a/devops/grafana-monite-service-with-5xx/index.html +++ b/devops/grafana-monite-service-with-5xx/index.html @@ -14,7 +14,7 @@ 保存完成之后,点击左上角的回退箭头图标:<–,回到视图页面,按如下操作编辑视图。 修改查询sql语句,域名修改为要监控的域名或服务名,比如你想监控www.example.com域名下所有服务,那么你可以定制sql如下: SELECT "service_code" FROM "service_status" WHERE ("health_code" = 500 AND "domain_name" = 'www.example.com') AND $timeFilter GROUP BY "service_name" ,当然你可能只想监控某个域名下的其中一个服务,如你想监控www.example.com域名下operationplatgform服务,那么你可以定制sql如下: -SELECT "service_code" FROM "service_status" WHERE ("health_code" = 500 AND "domain_name" = 'www.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/grafana-monite-service-with-5xx/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / DevOps / 使用grafana监控5xx服务 +SELECT "service_code" FROM "service_status" WHERE ("health_code" = 500 AND "domain_name" = 'www.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/grafana-monite-service-with-5xx/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / DevOps / 使用grafana监控5xx服务 使用grafana监控5xx服务 # 1. Grafana信息 # grafana服务: https://devops.example.com/grafana 如果要注册账号请联系devops组。 2. Grafana监控预览 # grafana已经配置了对service.hompartners.com域名下的service访问状态返回5xx的监控,可以查看对应的grafana面板 https://devops.example.com/grafana/d/Q_zv-HrWz/cst-service-status?orgId=1 @@ -30,9 +30,9 @@ 保存完成之后,点击左上角的回退箭头图标:<–,回到视图页面,按如下操作编辑视图。 修改查询sql语句,域名修改为要监控的域名或服务名,比如你想监控www.example.com域名下所有服务,那么你可以定制sql如下: SELECT "service_code" FROM "service_status" WHERE ("health_code" = 500 AND "domain_name" = 'www.example.com') AND $timeFilter GROUP BY "service_name" ,当然你可能只想监控某个域名下的其中一个服务,如你想监控www.example.com域名下operationplatgform服务,那么你可以定制sql如下: -SELECT "service_code" FROM "service_status" WHERE ("health_code" = 500 AND "domain_name" = 'www.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Grafana Monite Service With 5xx | 🍁 秋河落叶</title> +SELECT "service_code" FROM "service_status" WHERE ("health_code" = 500 AND "domain_name" = 'www.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Grafana Monite Service With 5xx | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/devops/grafana-monite-service-with-5xx/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Grafana Monite Service With 5xx</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#1-grafana信息>1. Grafana信息</a></li><li><a href=#2-grafana监控预览>2. Grafana监控预览</a></li><li><a href=#3-grafana添加监控5xx服务>3. Grafana添加监控5xx服务</a></li><li><a href=#4-grafana添加服务信息>4. Grafana添加服务信息</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/devops/>DevOps</a> / 使用grafana监控5xx服务</p><h1 id=使用grafana监控5xx服务>使用grafana监控5xx服务 diff --git a/devops/grafana-monite-service/index.html b/devops/grafana-monite-service/index.html index b05cc948..38fde466 100644 --- a/devops/grafana-monite-service/index.html +++ b/devops/grafana-monite-service/index.html @@ -6,7 +6,7 @@ # FieldKeyName Remark 1 domain_name 2 elb_status_code 数字类型,200;500 3 health_code 数字类型,200;500 4 request_url 请求路径 5 service_code 一个域名下的多个service,按序从1自增,作为grafana图表的y轴数据 创建Dashboard # => Add Query 目前数据源已经配置完成,选择Influxdb_Elb_Logs作为QUuery DataSource,并且开始配置query 查询语句可以参考: -SELECT mean("service_code") FROM "service_status" WHERE ("domain_name" = 'service.example.com' AND "health_code" = 500) AND $timeFilter GROUP BY time($__interval), "service_name" 根据自身需求修改query即可。'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/grafana-monite-service/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / DevOps / 使用Grafana监控service +SELECT mean("service_code") FROM "service_status" WHERE ("domain_name" = 'service.example.com' AND "health_code" = 500) AND $timeFilter GROUP BY time($__interval), "service_name" 根据自身需求修改query即可。'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/grafana-monite-service/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / DevOps / 使用Grafana监控service 使用Grafana监控service # 监控live上的应用服务,如果服务http状态为5xx,则反应到grafana图表中,DevOps和开发人员都能及时从图表中获取信息,及时确认和排查问题. Service Http状态数据来源 # 使用程序定时轮询获取aws elb的日志数据,将日志数据以时序形式存储在influxdb,目前数据结构如下: tag keys: @@ -14,9 +14,9 @@ # FieldKeyName Remark 1 domain_name 2 elb_status_code 数字类型,200;500 3 health_code 数字类型,200;500 4 request_url 请求路径 5 service_code 一个域名下的多个service,按序从1自增,作为grafana图表的y轴数据 创建Dashboard # => Add Query 目前数据源已经配置完成,选择Influxdb_Elb_Logs作为QUuery DataSource,并且开始配置query 查询语句可以参考: -SELECT mean("service_code") FROM "service_status" WHERE ("domain_name" = 'service.example.com' AND "health_code" = 500) AND $timeFilter GROUP BY time($__interval), "service_name" 根据自身需求修改query即可。'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Grafana Monite Service | 🍁 秋河落叶</title> +SELECT mean("service_code") FROM "service_status" WHERE ("domain_name" = 'service.example.com' AND "health_code" = 500) AND $timeFilter GROUP BY time($__interval), "service_name" 根据自身需求修改query即可。'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Grafana Monite Service | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/devops/grafana-monite-service/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Grafana Monite Service</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#service-http状态数据来源>Service Http状态数据来源</a></li><li><a href=#创建dashboard>创建Dashboard</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/devops/>DevOps</a> / 使用Grafana监控service</p><h1 id=使用grafana监控service>使用Grafana监控service diff --git a/devops/grafana/index.html b/devops/grafana/index.html index de72bd10..187e1518 100644 --- a/devops/grafana/index.html +++ b/devops/grafana/index.html @@ -13,7 +13,7 @@ Jenkins安装插件 # 登入Jenkins => Manage Jenkins => Manage Plugins => Available页签 搜索Prometheus插件,安装即可. 此节可以参考: https://medium.com/@eng.mohamed.m.saeed/monitoring-jenkins-with-grafana-and-prometheus-a7e037cbb376 « 使用Grafana监控service -» Jaeger"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/grafana/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / Grafana +» Jaeger"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/grafana/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / Grafana Grafana # 官方文档: https://grafana.com/docs/grafana/latest/ 简介 # 特性 # 可视化:通过图表展示指标信息,直观,便于分析 报警:指标数据超出阈值 @@ -28,9 +28,9 @@ Jenkins安装插件 # 登入Jenkins => Manage Jenkins => Manage Plugins => Available页签 搜索Prometheus插件,安装即可. 此节可以参考: https://medium.com/@eng.mohamed.m.saeed/monitoring-jenkins-with-grafana-and-prometheus-a7e037cbb376 « 使用Grafana监控service -» Jaeger"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Grafana | 🍁 秋河落叶</title> +» Jaeger"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Grafana | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/devops/grafana/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Grafana</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#简介>简介</a></li><li><a href=#特性>特性</a></li><li><a href=#使用grafana监控jenkins>使用Grafana监控Jenkins</a><ul><li><a href=#前提条件>前提条件</a></li><li><a href=#jenkins安装插件>Jenkins安装插件</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/devops/>DevOps</a> / Grafana</p><h1 id=grafana>Grafana diff --git a/devops/index.html b/devops/index.html index c984a39b..0fac071e 100644 --- a/devops/index.html +++ b/devops/index.html @@ -8,7 +8,7 @@ 使用Grafana监控service Grafana Jaeger -nginx"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps +nginx"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps DevOps # Agile Ansible 蓝绿部署、滚动部署和灰度部署 @@ -18,9 +18,9 @@ 使用Grafana监控service Grafana Jaeger -nginx"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Devops | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/devops/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/devops/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +nginx"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Devops | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/devops/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/devops/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Devops</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / DevOps</p><h1 id=devops>DevOps <a class=anchor href=#devops>#</a></h1><p><a href=/devops/agile/>Agile</a></p><p><a href=/devops/ansible/>Ansible</a></p><p><a href=/devops/bule-green-rollback-gray/>蓝绿部署、滚动部署和灰度部署</a></p><p><a href=/devops/chaos-engineering/>混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING)</a></p><p><a href=/devops/commercial-canvas/>商业画布</a></p><p><a href=/devops/grafana-monite-service-with-5xx/>使用grafana监控5xx服务</a></p><p><a href=/devops/grafana-monite-service/>使用Grafana监控service</a></p><p><a href=/devops/grafana/>Grafana</a></p><p><a href=/devops/jeager/>Jaeger</a></p><p><a href=/devops/nginx/>nginx</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/devops/index.xml b/devops/index.xml index 1e30771e..e3d2ff02 100644 --- a/devops/index.xml +++ b/devops/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/devops/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/devops/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/devops/agile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/devops/agile/</guid><description>🏠 首页 / DevOps / Agile +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/devops/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/devops/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/devops/agile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/devops/agile/</guid><description>🏠 首页 / DevOps / Agile Agile # 敏捷 交付产品可以看作饭店上菜 顾客点了十个菜 后厨把十个菜做完,最后十个菜一起上桌 ——不敏捷 后厨做完一个菜就上一个菜 ——敏捷 敏捷的优点: 做一盘上一盘,顾客早早就能吃上了,优先横扫饥饿;尽早给用户体验上产品; 做一盘上一盘,每个菜都是新出锅,顾客能吃上一口热的;对比十盘菜一起上,可能先炒的菜已经凉了,凉的菜换做成产品的话,可能就是已经过时的功能了,不符合需求了 做一盘上一盘, 如果前面的菜咸了,可以反馈给饭店,后面的菜做淡点;对比十盘菜一起上,顾客就无法从中间反馈意见了,做一个用户插不上意见的产品,严重的后果可能是用户已经不感兴趣了。 » Ansible</description></item><item><title/><link>https://blog.poneding.com/devops/ansible/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/devops/ansible/</guid><description>🏠 首页 / DevOps / Ansible diff --git a/devops/jeager/index.html b/devops/jeager/index.html index 1522816d..51c29677 100644 --- a/devops/jeager/index.html +++ b/devops/jeager/index.html @@ -15,7 +15,7 @@ jaeger调用链数据查询服务,有独立UI。 OpenTracing # 分布式的追踪系统其实不止Jaeger一种,但是它们的核心原理都大相径庭,都是从入侵到代码中埋点,然后像追踪系统上报数据信息,最终我们在追踪系统得到数据,从而实现追踪分析。 为了兼容统一各追踪系统API,OpenTracing规范诞生了,它与平台无关,与厂商无关。有了它的存在,你可以方便的切换你想使用的追踪系统。 -安装 # Docker # docker run -d --name jaeger \ -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \ -p 5775:5775/udp \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ -p 16686:16686 \ -p 14268:14268 \ -p 14250:14250 \ -p 9411:9411 \ jaegertracing/all-in-one:1."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/jeager/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / Jaeger +安装 # Docker # docker run -d --name jaeger \ -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \ -p 5775:5775/udp \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ -p 16686:16686 \ -p 14268:14268 \ -p 14250:14250 \ -p 9411:9411 \ jaegertracing/all-in-one:1."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/jeager/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / Jaeger Jaeger # 前言 # 微服务之间的调用关系错综复杂,当你在京东下单时,应用背后的服务调用链可能超你想象。调用链的追踪是微服务绕不过去的技术栈, 简介 # 关于 # Jaeger,受Dapper和OpenZipkin启发,由Uber开源的一个分布式跟踪系统,用于基于微服务分布式系统的监控和排错,包括: 分布式上下文传递 分布式事务监控 问题根由分析 服务依赖分析 性能、延迟优化 功能 # 兼容OpenTracing数据模型和工具库 对每个服务、端点使用一致的抽样概率 支持多样的后端数据库:Cassandra,Elasticsearch,Memory 追踪数据拓扑图形展示 基础概念 # Span: @@ -32,9 +32,9 @@ jaeger调用链数据查询服务,有独立UI。 OpenTracing # 分布式的追踪系统其实不止Jaeger一种,但是它们的核心原理都大相径庭,都是从入侵到代码中埋点,然后像追踪系统上报数据信息,最终我们在追踪系统得到数据,从而实现追踪分析。 为了兼容统一各追踪系统API,OpenTracing规范诞生了,它与平台无关,与厂商无关。有了它的存在,你可以方便的切换你想使用的追踪系统。 -安装 # Docker # docker run -d --name jaeger \ -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \ -p 5775:5775/udp \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ -p 16686:16686 \ -p 14268:14268 \ -p 14250:14250 \ -p 9411:9411 \ jaegertracing/all-in-one:1."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Jeager | 🍁 秋河落叶</title> +安装 # Docker # docker run -d --name jaeger \ -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \ -p 5775:5775/udp \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ -p 16686:16686 \ -p 14268:14268 \ -p 14250:14250 \ -p 9411:9411 \ jaegertracing/all-in-one:1."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Jeager | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/devops/jeager/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Jeager</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#前言>前言</a></li><li><a href=#简介>简介</a><ul><li><a href=#关于>关于</a></li><li><a href=#功能>功能</a></li></ul></li><li><a href=#基础概念>基础概念</a><ul><li><a href=#技术规格>技术规格</a></li><li><a href=#组件介绍>组件介绍</a></li></ul></li><li><a href=#opentracing>OpenTracing</a></li><li><a href=#安装>安装</a><ul><li><a href=#docker>Docker</a></li><li><a href=#kubernetes>Kubernetes</a></li></ul></li><li><a href=#示例>示例</a></li><li><a href=#使用>使用</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/devops/>DevOps</a> / Jaeger</p><h1 id=jaeger>Jaeger diff --git a/devops/nginx/index.html b/devops/nginx/index.html index b597c38d..7d3b2686 100644 --- a/devops/nginx/index.html +++ b/devops/nginx/index.html @@ -4,15 +4,15 @@ 在国内是 配置location: localtion [ = | ~ | ~* | ^~] uri { } =:用于不包含正则表达式的url前,要求请求字符串与uri严格匹配; ~:用于表示uri包含正则表达式,并且区分大小写; ~*:用于表示uri包含正则表达式,并且不区分大小写; ^~:用于不包含正则表达式的uri前,要求nginx服务器找到表示ui和请求字符串匹配度最高的location后,立即使用此location处理请求 配置负载均衡 # 将负载分摊到不同的服务单元,保证服务的快速响应,高可用。 -upstream myserver { server 192.168.0.1:8081; server 192.168.0.2:8082; } server { listen 80; server_name 192.168.0.1; location / { proxy_pass http://myserver; root html; index index.html index.htm; } } 均衡策略:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/nginx/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / nginx +upstream myserver { server 192.168.0.1:8081; server 192.168.0.2:8082; } server { listen 80; server_name 192.168.0.1; location / { proxy_pass http://myserver; root html; index index.html index.htm; } } 均衡策略:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/devops/nginx/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / DevOps / nginx nginx # nginx简介 # 高性能的反向代理工具,负载均衡器; nginx配置 # 全局配置 # event配置 # http配置 # 配置反向代理 # 正向代理: 在国内是 配置location: localtion [ = | ~ | ~* | ^~] uri { } =:用于不包含正则表达式的url前,要求请求字符串与uri严格匹配; ~:用于表示uri包含正则表达式,并且区分大小写; ~*:用于表示uri包含正则表达式,并且不区分大小写; ^~:用于不包含正则表达式的uri前,要求nginx服务器找到表示ui和请求字符串匹配度最高的location后,立即使用此location处理请求 配置负载均衡 # 将负载分摊到不同的服务单元,保证服务的快速响应,高可用。 -upstream myserver { server 192.168.0.1:8081; server 192.168.0.2:8082; } server { listen 80; server_name 192.168.0.1; location / { proxy_pass http://myserver; root html; index index.html index.htm; } } 均衡策略:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Nginx | 🍁 秋河落叶</title> +upstream myserver { server 192.168.0.1:8081; server 192.168.0.2:8082; } server { listen 80; server_name 192.168.0.1; location / { proxy_pass http://myserver; root html; index index.html index.htm; } } 均衡策略:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="devops"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Nginx | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/devops/nginx/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Nginx</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#nginx简介>nginx简介</a></li><li><a href=#nginx配置>nginx配置</a><ul><li><a href=#全局配置>全局配置</a></li><li><a href=#event配置>event配置</a></li><li><a href=#http配置>http配置</a></li></ul></li><li><a href=#nginx常用命令>Nginx常用命令</a><ul><li><a href=#重启>重启</a></li><li><a href=#检查配置文件格式是否正确>检查配置文件格式是否正确</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/devops/>DevOps</a> / nginx</p><h1 id=nginx>nginx diff --git a/docker/container-diff/index.html b/docker/container-diff/index.html index 12a4b897..8cd893e1 100644 --- a/docker/container-diff/index.html +++ b/docker/container-diff/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Docker / container-diff 工具的使用 container-diff 工具的使用 # 简介 # container-diff 是 google 开源的一款用于分析和比较 Docker 镜像的工具,它可以从多个维度分析一个或者比较两个容器镜像: 镜像构建历史 镜像文件系统 镜像大小 软件包管理 项目地址: https://github.com/GoogleContainerTools/container-diff -安装 # macOS # curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-darwin-amd64 && chmod +x container-diff-darwin-amd64 && sudo mv container-diff-darwin-amd64 /usr/local/bin/container-diff Linux # curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64 && chmod +x container-diff-linux-amd64 && sudo mv container-diff-linux-amd64 /usr/local/bin/container-diff # or curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64 && chmod +x container-diff-linux-amd64 && mkdir -p $HOME/bin && export PATH=$PATH:$HOME/bin && mv container-diff-linux-amd64 $HOME/bin/container-diff Windows # 下载地址: https://storage."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/container-diff/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / container-diff 工具的使用 +安装 # macOS # curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-darwin-amd64 && chmod +x container-diff-darwin-amd64 && sudo mv container-diff-darwin-amd64 /usr/local/bin/container-diff Linux # curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64 && chmod +x container-diff-linux-amd64 && sudo mv container-diff-linux-amd64 /usr/local/bin/container-diff # or curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64 && chmod +x container-diff-linux-amd64 && mkdir -p $HOME/bin && export PATH=$PATH:$HOME/bin && mv container-diff-linux-amd64 $HOME/bin/container-diff Windows # 下载地址: https://storage."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/container-diff/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / container-diff 工具的使用 container-diff 工具的使用 # 简介 # container-diff 是 google 开源的一款用于分析和比较 Docker 镜像的工具,它可以从多个维度分析一个或者比较两个容器镜像: 镜像构建历史 镜像文件系统 镜像大小 软件包管理 项目地址: https://github.com/GoogleContainerTools/container-diff -安装 # macOS # curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-darwin-amd64 && chmod +x container-diff-darwin-amd64 && sudo mv container-diff-darwin-amd64 /usr/local/bin/container-diff Linux # curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64 && chmod +x container-diff-linux-amd64 && sudo mv container-diff-linux-amd64 /usr/local/bin/container-diff # or curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64 && chmod +x container-diff-linux-amd64 && mkdir -p $HOME/bin && export PATH=$PATH:$HOME/bin && mv container-diff-linux-amd64 $HOME/bin/container-diff Windows # 下载地址: https://storage."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Container Diff | 🍁 秋河落叶</title> +安装 # macOS # curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-darwin-amd64 && chmod +x container-diff-darwin-amd64 && sudo mv container-diff-darwin-amd64 /usr/local/bin/container-diff Linux # curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64 && chmod +x container-diff-linux-amd64 && sudo mv container-diff-linux-amd64 /usr/local/bin/container-diff # or curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64 && chmod +x container-diff-linux-amd64 && mkdir -p $HOME/bin && export PATH=$PATH:$HOME/bin && mv container-diff-linux-amd64 $HOME/bin/container-diff Windows # 下载地址: https://storage."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Container Diff | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/container-diff/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Container Diff</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#简介>简介</a></li><li><a href=#安装>安装</a><ul><li><a href=#macos>macOS</a></li><li><a href=#linux>Linux</a></li><li><a href=#windows>Windows</a></li></ul></li><li><a href=#使用>使用</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / container-diff 工具的使用</p><h1 id=container-diff-工具的使用>container-diff 工具的使用 diff --git a/docker/dind/index.html b/docker/dind/index.html index 63f2e996..5cea5ec9 100644 --- a/docker/dind/index.html +++ b/docker/dind/index.html @@ -5,16 +5,16 @@ 一般这个技术使用在应用的程序集成中 CI/CD。 1. 挂载主机 /var/run/docker.sock # Docker 容器: docker run -v /var/run/docker.sock:/var/run/docker.sock --name docker-in-docker -it docker 在运行起来的容器中使用docker: -$ docker run -v /var/run/docker.sock:/var/run/docker.sock --name docker-in-docker -it docker / # docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/dind/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Docker in Docker +$ docker run -v /var/run/docker.sock:/var/run/docker.sock --name docker-in-docker -it docker / # docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/dind/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Docker in Docker Docker in Docker # Docker-in-Docker 的意思是在 Docker 容器中使用 docker,就像和在宿主机上使用 docker 一样,你可以理解为套娃。 场景: 如果你的 Jenkins 是使用 Docker 容器的方式运行的,如果你想使用 Jenkins 的 Docker 插件来为 Jenkins Job 提供运行容器,这时候你就需要用到 Docker-in-Docker; 一般这个技术使用在应用的程序集成中 CI/CD。 1. 挂载主机 /var/run/docker.sock # Docker 容器: docker run -v /var/run/docker.sock:/var/run/docker.sock --name docker-in-docker -it docker 在运行起来的容器中使用docker: -$ docker run -v /var/run/docker.sock:/var/run/docker.sock --name docker-in-docker -it docker / # docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Dind | 🍁 秋河落叶</title> +$ docker run -v /var/run/docker.sock:/var/run/docker.sock --name docker-in-docker -it docker / # docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Dind | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/dind/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Dind</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#1-挂载主机-varrundockersock>1. 挂载主机 /var/run/docker.sock</a></li><li><a href=#2-使用-docker-dind>2. 使用 Docker-Dind</a></li><li><a href=#3-结束语>3. 结束语</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / Docker in Docker</p><h1 id=docker-in-docker>Docker in Docker diff --git a/docker/docker-buildx/index.html b/docker/docker-buildx/index.html index 3f0681e8..43614f84 100644 --- a/docker/docker-buildx/index.html +++ b/docker/docker-buildx/index.html @@ -1,8 +1,8 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Docker / docker buildx -docker buildx # $ docker buildx Usage: docker buildx [OPTIONS] COMMAND Extended build capabilities with BuildKit Options: --builder string Override the configured builder instance Management Commands: imagetools Commands to work on images in registry Commands: bake Build from a file build Start a build create Create a new builder instance du Disk usage inspect Inspect current builder instance ls List builder instances prune Remove build cache rm Remove a builder instance stop Stop builder instance use Set the current builder instance version Show buildx version information Run 'docker buildx COMMAND --help' for more information on a command."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-buildx/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / docker buildx -docker buildx # $ docker buildx Usage: docker buildx [OPTIONS] COMMAND Extended build capabilities with BuildKit Options: --builder string Override the configured builder instance Management Commands: imagetools Commands to work on images in registry Commands: bake Build from a file build Start a build create Create a new builder instance du Disk usage inspect Inspect current builder instance ls List builder instances prune Remove build cache rm Remove a builder instance stop Stop builder instance use Set the current builder instance version Show buildx version information Run 'docker buildx COMMAND --help' for more information on a command."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Buildx | 🍁 秋河落叶</title> +docker buildx # $ docker buildx Usage: docker buildx [OPTIONS] COMMAND Extended build capabilities with BuildKit Options: --builder string Override the configured builder instance Management Commands: imagetools Commands to work on images in registry Commands: bake Build from a file build Start a build create Create a new builder instance du Disk usage inspect Inspect current builder instance ls List builder instances prune Remove build cache rm Remove a builder instance stop Stop builder instance use Set the current builder instance version Show buildx version information Run 'docker buildx COMMAND --help' for more information on a command."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-buildx/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / docker buildx +docker buildx # $ docker buildx Usage: docker buildx [OPTIONS] COMMAND Extended build capabilities with BuildKit Options: --builder string Override the configured builder instance Management Commands: imagetools Commands to work on images in registry Commands: bake Build from a file build Start a build create Create a new builder instance du Disk usage inspect Inspect current builder instance ls List builder instances prune Remove build cache rm Remove a builder instance stop Stop builder instance use Set the current builder instance version Show buildx version information Run 'docker buildx COMMAND --help' for more information on a command."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Buildx | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/docker-buildx/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Docker Buildx</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装>安装</a></li><li><a href=#将buildx设置成默认的镜像编译器>将buildx设置成默认的镜像编译器</a></li><li><a href=#使用>使用</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / docker buildx</p><h1 id=docker-buildx>docker buildx diff --git a/docker/docker-commands/index.html b/docker/docker-commands/index.html index ba3a6a81..c51e467c 100644 --- a/docker/docker-commands/index.html +++ b/docker/docker-commands/index.html @@ -6,7 +6,7 @@ –rm:容器退出即删除 -it:i-与容器交互,t-终端 以root权限进入容器 # sudo docker exec -it -u root nginx bash 让容器一直睡眠 # 使用 curlimages/curl 镜像,并让其一直睡眠。 -docker run -d --name sleep curlimages/curl sleep infinity 操作镜像命令 # 查看镜像 # sudo docker images 删除镜像 # sudo docker rmi <image> # or sudo docker image rm <image> 删除所有镜像 # sudo docker rmi $(docker images -q) 清除未使用镜像 # sudo docker image prune # or sudo docker rmi $(sudo docker images | grep "^<none>" | awk "{print $3}") 模糊清除镜像 # docker rmi $(docker images | grep 'query' | awk '{print $3}') 操作容器命令 # 查看已经退出的容器 # sudo docker ps -a | grep Exited 清理已经退出的容器 # sudo docker rm $(sudo docker ps -qf status=exited) # or sudo docker rm `sudo docker ps -a | grep Exited | awk '{print $1}'` 清除所有容器 # 使用 -f 参数才能清除所有容器,不使用则只会清理已经退出的容器"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-commands/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Docker 常用命令 +docker run -d --name sleep curlimages/curl sleep infinity 操作镜像命令 # 查看镜像 # sudo docker images 删除镜像 # sudo docker rmi <image> # or sudo docker image rm <image> 删除所有镜像 # sudo docker rmi $(docker images -q) 清除未使用镜像 # sudo docker image prune # or sudo docker rmi $(sudo docker images | grep "^<none>" | awk "{print $3}") 模糊清除镜像 # docker rmi $(docker images | grep 'query' | awk '{print $3}') 操作容器命令 # 查看已经退出的容器 # sudo docker ps -a | grep Exited 清理已经退出的容器 # sudo docker rm $(sudo docker ps -qf status=exited) # or sudo docker rm `sudo docker ps -a | grep Exited | awk '{print $1}'` 清除所有容器 # 使用 -f 参数才能清除所有容器,不使用则只会清理已经退出的容器"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-commands/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Docker 常用命令 Docker 常用命令 # 启动容器命令 # 默认需要sudo权限执行 sudo docker run -d -p 80:80 --name nginx nginx –name:容器命名 -d:在后台启动 @@ -14,9 +14,9 @@ –rm:容器退出即删除 -it:i-与容器交互,t-终端 以root权限进入容器 # sudo docker exec -it -u root nginx bash 让容器一直睡眠 # 使用 curlimages/curl 镜像,并让其一直睡眠。 -docker run -d --name sleep curlimages/curl sleep infinity 操作镜像命令 # 查看镜像 # sudo docker images 删除镜像 # sudo docker rmi <image> # or sudo docker image rm <image> 删除所有镜像 # sudo docker rmi $(docker images -q) 清除未使用镜像 # sudo docker image prune # or sudo docker rmi $(sudo docker images | grep "^<none>" | awk "{print $3}") 模糊清除镜像 # docker rmi $(docker images | grep 'query' | awk '{print $3}') 操作容器命令 # 查看已经退出的容器 # sudo docker ps -a | grep Exited 清理已经退出的容器 # sudo docker rm $(sudo docker ps -qf status=exited) # or sudo docker rm `sudo docker ps -a | grep Exited | awk '{print $1}'` 清除所有容器 # 使用 -f 参数才能清除所有容器,不使用则只会清理已经退出的容器"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Commands | 🍁 秋河落叶</title> +docker run -d --name sleep curlimages/curl sleep infinity 操作镜像命令 # 查看镜像 # sudo docker images 删除镜像 # sudo docker rmi <image> # or sudo docker image rm <image> 删除所有镜像 # sudo docker rmi $(docker images -q) 清除未使用镜像 # sudo docker image prune # or sudo docker rmi $(sudo docker images | grep "^<none>" | awk "{print $3}") 模糊清除镜像 # docker rmi $(docker images | grep 'query' | awk '{print $3}') 操作容器命令 # 查看已经退出的容器 # sudo docker ps -a | grep Exited 清理已经退出的容器 # sudo docker rm $(sudo docker ps -qf status=exited) # or sudo docker rm `sudo docker ps -a | grep Exited | awk '{print $1}'` 清除所有容器 # 使用 -f 参数才能清除所有容器,不使用则只会清理已经退出的容器"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Commands | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/docker-commands/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Docker Commands</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#启动容器命令>启动容器命令</a><ul><li><a href=#以root权限进入容器>以root权限进入容器</a></li><li><a href=#让容器一直睡眠>让容器一直睡眠</a></li></ul></li><li><a href=#操作镜像命令>操作镜像命令</a><ul><li><a href=#查看镜像>查看镜像</a></li><li><a href=#删除镜像>删除镜像</a></li><li><a href=#删除所有镜像>删除所有镜像</a></li><li><a href=#清除未使用镜像>清除未使用镜像</a></li><li><a href=#模糊清除镜像>模糊清除镜像</a></li></ul></li><li><a href=#操作容器命令>操作容器命令</a><ul><li><a href=#查看已经退出的容器>查看已经退出的容器</a></li><li><a href=#清理已经退出的容器>清理已经退出的容器</a></li><li><a href=#清除所有容器>清除所有容器</a></li><li><a href=#清除孤立容器>清除孤立容器</a></li><li><a href=#强制删除容器>强制删除容器</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / Docker 常用命令</p><h1 id=docker-常用命令>Docker 常用命令 diff --git a/docker/docker-compose-practice/index.html b/docker/docker-compose-practice/index.html index fd9eee78..d349119f 100644 --- a/docker/docker-compose-practice/index.html +++ b/docker/docker-compose-practice/index.html @@ -8,7 +8,7 @@ docker-compose stop 启动&重启 docker-compose start docker-compose restart 退出 docker-compose down 使用 docker-compose -h 查看更多命令及参数。 -实践 # 使用 Docker Compose 运行一个简单的 golang web 程序。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-compose-practice/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Docker Compose 实践 +实践 # 使用 Docker Compose 运行一个简单的 golang web 程序。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-compose-practice/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Docker Compose 实践 Docker Compose 实践 # 安装 # 如果你安装了 Docker Desktop,那么它已经帮你自动安装了 Docker Compose 插件。否则,需要额外安装插件。 使用一下命令安装或升级 Docker Compose(linux): Ubuntu,Debian: sudo apt update sudo apt install docker-compose-plugin 基于 RPM 发行版: sudo yum update sudo yum install docker-compose-plugin 验证安装版本: @@ -18,9 +18,9 @@ docker-compose stop 启动&重启 docker-compose start docker-compose restart 退出 docker-compose down 使用 docker-compose -h 查看更多命令及参数。 -实践 # 使用 Docker Compose 运行一个简单的 golang web 程序。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Compose Practice | 🍁 秋河落叶</title> +实践 # 使用 Docker Compose 运行一个简单的 golang web 程序。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Compose Practice | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/docker-compose-practice/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Docker Compose Practice</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装>安装</a></li><li><a href=#常用命令>常用命令</a></li><li><a href=#实践>实践</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / Docker Compose 实践</p><h1 id=docker-compose-实践>Docker Compose 实践 diff --git a/docker/docker-container-install-pfx-cert/index.html b/docker/docker-container-install-pfx-cert/index.html index c9c3cbb4..d4418496 100644 --- a/docker/docker-container-install-pfx-cert/index.html +++ b/docker/docker-container-install-pfx-cert/index.html @@ -3,14 +3,14 @@ 代码中编写 # 使用 X509Store Api 编写你的程序 using (var certificate = new X509Certificate2(pfxFileBytes, pfxPassword, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet)) using (var store = new X509Store(storeName, storeLocation, OpenFlags.ReadWrite)) { store.Add(certificate); store.Close(); } Dockerfile 中编写 # 使用 dotnet-certificate-tool 工具安装 pfx 证书。 首先获取到 Pfx 文件的 Thumbprint,这在 dotnet-certificate-tool 命令中作为参数被使用。 -使用 Powershell Get-PfxCertificate 函数获取 Thumbprint Get-PfxCertificate -FilePath C:\Pfx\Hello-to-World."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-container-install-pfx-cert/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Docker 容器中安装 PFX 证书 +使用 Powershell Get-PfxCertificate 函数获取 Thumbprint Get-PfxCertificate -FilePath C:\Pfx\Hello-to-World."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-container-install-pfx-cert/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Docker 容器中安装 PFX 证书 Docker 容器中安装 PFX 证书 # 如果正在开发 .NetCore 项目,并且你的项目需要使用到 PFX 证书。此时你需要将你的项目发布到 Docker 容器中,那么你就需要在你的 Docker 容器中安装 PFX 证书了。 代码中编写 # 使用 X509Store Api 编写你的程序 using (var certificate = new X509Certificate2(pfxFileBytes, pfxPassword, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet)) using (var store = new X509Store(storeName, storeLocation, OpenFlags.ReadWrite)) { store.Add(certificate); store.Close(); } Dockerfile 中编写 # 使用 dotnet-certificate-tool 工具安装 pfx 证书。 首先获取到 Pfx 文件的 Thumbprint,这在 dotnet-certificate-tool 命令中作为参数被使用。 -使用 Powershell Get-PfxCertificate 函数获取 Thumbprint Get-PfxCertificate -FilePath C:\Pfx\Hello-to-World."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Container Install Pfx Cert | 🍁 秋河落叶</title> +使用 Powershell Get-PfxCertificate 函数获取 Thumbprint Get-PfxCertificate -FilePath C:\Pfx\Hello-to-World."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Container Install Pfx Cert | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/docker-container-install-pfx-cert/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Docker Container Install Pfx Cert</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#代码中编写>代码中编写</a></li><li><a href=#dockerfile-中编写>Dockerfile 中编写</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / Docker 容器中安装 PFX 证书</p><h1 id=docker-容器中安装-pfx-证书>Docker 容器中安装 PFX 证书 diff --git a/docker/docker-copy-between-host-container/index.html b/docker/docker-copy-between-host-container/index.html index a4b4f09b..505c4b0a 100644 --- a/docker/docker-copy-between-host-container/index.html +++ b/docker/docker-copy-between-host-container/index.html @@ -5,16 +5,16 @@ sudo docker cp [CONTAINER ID/NAME]:[CONTAINER_PATH] [HOST_PATH] 例如我需要将容器内 /app/appsettings.json 文件拷贝到宿主机的 ~/temp/ 目录 (该目录必须存在) 下 sudo docker cp b3e608e28f21:/app/appsettings.json ~/temp/appsettings.json # 不指定文件名亦可,默认使用原文件名 sudo docker cp b3e608e28f21:/app/appsettings.json ~/temp/ 2. 将 Host 文件拷贝至 Docker 容器 # 同样,需要先获取容器的 Container ID 或 Name; 使用以下命令将文件拷贝至容器内 -sudo docker cp [HOST_PATH] [CONTAINER ID/NAME]:[CONTAINER_PATH] 例如我需要将宿主机的 ~/temp/hello."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-copy-between-host-container/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Docker 主机容器互拷贝文件 +sudo docker cp [HOST_PATH] [CONTAINER ID/NAME]:[CONTAINER_PATH] 例如我需要将宿主机的 ~/temp/hello."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-copy-between-host-container/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Docker 主机容器互拷贝文件 Docker 主机容器互拷贝文件 # 命令:docker cp 1. 将 Docker 容器内文件拷贝到 Host # 获取 docker 容器的 Container ID 或Name sudo docker ps 使用以下命令从容器内拷出文件 sudo docker cp [CONTAINER ID/NAME]:[CONTAINER_PATH] [HOST_PATH] 例如我需要将容器内 /app/appsettings.json 文件拷贝到宿主机的 ~/temp/ 目录 (该目录必须存在) 下 sudo docker cp b3e608e28f21:/app/appsettings.json ~/temp/appsettings.json # 不指定文件名亦可,默认使用原文件名 sudo docker cp b3e608e28f21:/app/appsettings.json ~/temp/ 2. 将 Host 文件拷贝至 Docker 容器 # 同样,需要先获取容器的 Container ID 或 Name; 使用以下命令将文件拷贝至容器内 -sudo docker cp [HOST_PATH] [CONTAINER ID/NAME]:[CONTAINER_PATH] 例如我需要将宿主机的 ~/temp/hello."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Copy Between Host Container | 🍁 秋河落叶</title> +sudo docker cp [HOST_PATH] [CONTAINER ID/NAME]:[CONTAINER_PATH] 例如我需要将宿主机的 ~/temp/hello."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Copy Between Host Container | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/docker-copy-between-host-container/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Docker Copy Between Host Container</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#1-将-docker-容器内文件拷贝到-host>1. 将 Docker 容器内文件拷贝到 Host</a></li><li><a href=#2-将-host-文件拷贝至-docker-容器>2. 将 Host 文件拷贝至 Docker 容器</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / Docker 主机容器互拷贝文件</p><h1 id=docker-主机容器互拷贝文件>Docker 主机容器互拷贝文件 diff --git a/docker/docker-manifest-build-cross-arch-image/index.html b/docker/docker-manifest-build-cross-arch-image/index.html index 635f4944..2dd04bf8 100644 --- a/docker/docker-manifest-build-cross-arch-image/index.html +++ b/docker/docker-manifest-build-cross-arch-image/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Docker / 使用 docker manifest 命令构建多架构镜像 使用 docker manifest 命令构建多架构镜像 # # 创建 docker manifest create poneding/myimage:v1 poneding/myimage-amd64:v1 poneding/myimage-arm64:v1 # 注解 docker manifest annotate poneding/myimage:v1 poneding/myimage-amd64:v1 --arch amd64 docker manifest annotate poneding/myimage:v1 poneding/asmyimageh-arm64:v1 --arch arm64 # 检查 docker manifest inspect poneding/myimage:v1 # 推送 docker manifest push poneding/myimage:v1 在 x86 机器上构建 arm64 镜像 docker run --rm --privileged multiarch/qemu-user-static --reset --persistent yes « Docker 主机容器互拷贝文件 -» 理解 docker run –link"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-manifest-build-cross-arch-image/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / 使用 docker manifest 命令构建多架构镜像 +» 理解 docker run –link"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-manifest-build-cross-arch-image/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / 使用 docker manifest 命令构建多架构镜像 使用 docker manifest 命令构建多架构镜像 # # 创建 docker manifest create poneding/myimage:v1 poneding/myimage-amd64:v1 poneding/myimage-arm64:v1 # 注解 docker manifest annotate poneding/myimage:v1 poneding/myimage-amd64:v1 --arch amd64 docker manifest annotate poneding/myimage:v1 poneding/asmyimageh-arm64:v1 --arch arm64 # 检查 docker manifest inspect poneding/myimage:v1 # 推送 docker manifest push poneding/myimage:v1 在 x86 机器上构建 arm64 镜像 docker run --rm --privileged multiarch/qemu-user-static --reset --persistent yes « Docker 主机容器互拷贝文件 -» 理解 docker run –link"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Manifest Build Cross Arch Image | 🍁 秋河落叶</title> +» 理解 docker run –link"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Manifest Build Cross Arch Image | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/docker-manifest-build-cross-arch-image/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Docker Manifest Build Cross Arch Image</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / 使用 docker manifest 命令构建多架构镜像</p><h1 id=使用-docker-manifest-命令构建多架构镜像>使用 docker manifest 命令构建多架构镜像 diff --git a/docker/docker-run-link/index.html b/docker/docker-run-link/index.html index 1a95618e..159cdcd8 100644 --- a/docker/docker-run-link/index.html +++ b/docker/docker-run-link/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Docker / 理解 docker run –link 理解 docker run –link # 使用方式 # # 前提已经存在一个 container2 在运行 docker run img1 --name container1 --link container2 作用 # container1 连接 container2,达到: 与 container2 直接通信 获取 container2 的环境变量 « 使用 docker manifest 命令构建多架构镜像 -» Docker 可视化工具 Kitematic"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-run-link/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / 理解 docker run –link +» Docker 可视化工具 Kitematic"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-run-link/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / 理解 docker run –link 理解 docker run –link # 使用方式 # # 前提已经存在一个 container2 在运行 docker run img1 --name container1 --link container2 作用 # container1 连接 container2,达到: 与 container2 直接通信 获取 container2 的环境变量 « 使用 docker manifest 命令构建多架构镜像 -» Docker 可视化工具 Kitematic"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Run Link | 🍁 秋河落叶</title> +» Docker 可视化工具 Kitematic"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Run Link | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/docker-run-link/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Docker Run Link</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#使用方式>使用方式</a></li><li><a href=#作用>作用</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / 理解 docker run –link</p><h1 id=理解-docker-run---link>理解 docker run –link diff --git a/docker/docker-visiable-tool-kitematic/index.html b/docker/docker-visiable-tool-kitematic/index.html index eeecb0b8..57466c9a 100644 --- a/docker/docker-visiable-tool-kitematic/index.html +++ b/docker/docker-visiable-tool-kitematic/index.html @@ -4,15 +4,15 @@ # download wget https://github.com/docker/kitematic/releases/download/v0.17.11/Kitematic-0.17.11-Ubuntu.zip unzip Kitematic-0.17.11-Ubuntu.zip # install sudo dpkg -i Kitematic-0.17.11_amd64.deb 用户组管理 # ubuntu 已经安装了 docker 了,当我们安装完 Kitematic 之后,第一次打开会遇到 将当前用户加入到 docker 组: sudo usermod -aG docker $USER # 重启 docker sudo systemctl restart docker sudo chmod a+rw /var/run/docker.sock 完成上面操作后,重启主机,应该就可以使用 Kitamatic 了。 -使用 Kitematic # 第一次启动 Kitematic,需要登录 docker 账号,登录完成后,界面如下。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-visiable-tool-kitematic/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Docker 可视化工具 Kitematic +使用 Kitematic # 第一次启动 Kitematic,需要登录 docker 账号,登录完成后,界面如下。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/docker-visiable-tool-kitematic/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Docker 可视化工具 Kitematic Docker 可视化工具 Kitematic # 使用 Kitematic,以可视化的方式管理 docker 镜像,容器等。 安装 Kitematic # 在 ubuntu(desktop)中安装 kitematic 作为示例,其他平台安装下载地址: https://github.com/docker/kitematic/releases # download wget https://github.com/docker/kitematic/releases/download/v0.17.11/Kitematic-0.17.11-Ubuntu.zip unzip Kitematic-0.17.11-Ubuntu.zip # install sudo dpkg -i Kitematic-0.17.11_amd64.deb 用户组管理 # ubuntu 已经安装了 docker 了,当我们安装完 Kitematic 之后,第一次打开会遇到 将当前用户加入到 docker 组: sudo usermod -aG docker $USER # 重启 docker sudo systemctl restart docker sudo chmod a+rw /var/run/docker.sock 完成上面操作后,重启主机,应该就可以使用 Kitamatic 了。 -使用 Kitematic # 第一次启动 Kitematic,需要登录 docker 账号,登录完成后,界面如下。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Visiable Tool Kitematic | 🍁 秋河落叶</title> +使用 Kitematic # 第一次启动 Kitematic,需要登录 docker 账号,登录完成后,界面如下。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Docker Visiable Tool Kitematic | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/docker-visiable-tool-kitematic/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Docker Visiable Tool Kitematic</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装-kitematic>安装 Kitematic</a></li><li><a href=#用户组管理>用户组管理</a></li><li><a href=#使用-kitematic>使用 Kitematic</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / Docker 可视化工具 Kitematic</p><h1 id=docker-可视化工具-kitematic>Docker 可视化工具 Kitematic diff --git a/docker/dockerfile/index.html b/docker/dockerfile/index.html index 489a0687..8d515fa6 100644 --- a/docker/dockerfile/index.html +++ b/docker/dockerfile/index.html @@ -6,7 +6,7 @@ ARG在multi-stage的作用范围 # 如果ARG放置在第一个FROM之前,那么作用范围是全局的;如果ARG放在FROM之后,那么只对FROM的stage作用。 ARG USERNAME FROM alpine RUN echo hello, ${USERNAME} FROM alpine RUN echo hi, ${USERNAME} CMD # CMD 指令的目的是为一个可执行容器提供初始运行命令或运行参数。 CMD 指令有三种形式: -可执行命令 + 命令参数列表,推荐使用 CMD ["executable","param1","param2"] 命令参数列表,作为 ENTRYPOINT 的参数 CMD ["param1","param2"] Shell 形式,字符串形式的命令 CMD command param1 param2 单个 build stage 只允许存在一个 CMD 指令,如果存在多个 CMD 指令,只有最后一个 CMD 指令生效。'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/dockerfile/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Docker / Dockerfile +可执行命令 + 命令参数列表,推荐使用 CMD ["executable","param1","param2"] 命令参数列表,作为 ENTRYPOINT 的参数 CMD ["param1","param2"] Shell 形式,字符串形式的命令 CMD command param1 param2 单个 build stage 只允许存在一个 CMD 指令,如果存在多个 CMD 指令,只有最后一个 CMD 指令生效。'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/dockerfile/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Docker / Dockerfile Dockerfile # 官方文档参考: https://docs.docker.com/engine/reference/builder/ Dockerfile Linter: https://hadolint.github.io/hadolint/ Usage # docker build [work-dir] -t [image-tag] -f [dockerfile-path] --build-arg [arg-key]=[arg-value] 指令 # Dockerfile reference | Docker Documentation @@ -14,9 +14,9 @@ ARG在multi-stage的作用范围 # 如果ARG放置在第一个FROM之前,那么作用范围是全局的;如果ARG放在FROM之后,那么只对FROM的stage作用。 ARG USERNAME FROM alpine RUN echo hello, ${USERNAME} FROM alpine RUN echo hi, ${USERNAME} CMD # CMD 指令的目的是为一个可执行容器提供初始运行命令或运行参数。 CMD 指令有三种形式: -可执行命令 + 命令参数列表,推荐使用 CMD ["executable","param1","param2"] 命令参数列表,作为 ENTRYPOINT 的参数 CMD ["param1","param2"] Shell 形式,字符串形式的命令 CMD command param1 param2 单个 build stage 只允许存在一个 CMD 指令,如果存在多个 CMD 指令,只有最后一个 CMD 指令生效。'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Dockerfile | 🍁 秋河落叶</title> +可执行命令 + 命令参数列表,推荐使用 CMD ["executable","param1","param2"] 命令参数列表,作为 ENTRYPOINT 的参数 CMD ["param1","param2"] Shell 形式,字符串形式的命令 CMD command param1 param2 单个 build stage 只允许存在一个 CMD 指令,如果存在多个 CMD 指令,只有最后一个 CMD 指令生效。'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Dockerfile | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/dockerfile/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Dockerfile</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#usage>Usage</a></li><li><a href=#指令>指令</a><ul><li><a href=#from>FROM</a></li><li><a href=#arg>ARG</a></li><li><a href=#cmd>CMD</a></li><li><a href=#entrypoint>ENTRYPOINT</a></li><li><a href=#qa>Q&A</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / Dockerfile</p><h1 id=dockerfile>Dockerfile diff --git a/docker/index.html b/docker/index.html index aaae5bdc..ce8b1731 100644 --- a/docker/index.html +++ b/docker/index.html @@ -12,7 +12,7 @@ Dockerfile Linux 容器 非 root 账号获取 docker 权限 -some-apps.md"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker +some-apps.md"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker Docker # container-diff 工具的使用 Docker in Docker docker buildx @@ -26,9 +26,9 @@ Dockerfile Linux 容器 非 root 账号获取 docker 权限 -some-apps.md"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Docker | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/docker/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +some-apps.md"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Docker | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/docker/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Docker</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / Docker</p><h1 id=docker>Docker <a class=anchor href=#docker>#</a></h1><p><a href=/docker/container-diff/>container-diff 工具的使用</a></p><p><a href=/docker/dind/>Docker in Docker</a></p><p><a href=/docker/docker-buildx/>docker buildx</a></p><p><a href=/docker/docker-commands/>Docker 常用命令</a></p><p><a href=/docker/docker-compose-practice/>Docker Compose 实践</a></p><p><a href=/docker/docker-container-install-pfx-cert/>Docker 容器中安装 PFX 证书</a></p><p><a href=/docker/docker-copy-between-host-container/>Docker 主机容器互拷贝文件</a></p><p><a href=/docker/docker-manifest-build-cross-arch-image/>使用 docker manifest 命令构建多架构镜像</a></p><p><a href=/docker/docker-run-link/>理解 docker run –link</a></p><p><a href=/docker/docker-visiable-tool-kitematic/>Docker 可视化工具 Kitematic</a></p><p><a href=/docker/dockerfile/>Dockerfile</a></p><p><a href=/docker/linux-container/>Linux 容器</a></p><p><a href=/docker/non-root-account-get-docker-permission/>非 root 账号获取 docker 权限</a></p><p><a href=/docker/some-apps/>some-apps.md</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/docker/index.xml b/docker/index.xml index faec5aec..163edabe 100644 --- a/docker/index.xml +++ b/docker/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/docker/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/docker/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/docker/container-diff/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/docker/container-diff/</guid><description>🏠 首页 / Docker / container-diff 工具的使用 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/docker/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/docker/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/docker/container-diff/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/docker/container-diff/</guid><description>🏠 首页 / Docker / container-diff 工具的使用 container-diff 工具的使用 # 简介 # container-diff 是 google 开源的一款用于分析和比较 Docker 镜像的工具,它可以从多个维度分析一个或者比较两个容器镜像: 镜像构建历史 镜像文件系统 镜像大小 软件包管理 项目地址: https://github.com/GoogleContainerTools/container-diff 安装 # macOS # curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-darwin-amd64 &amp;&amp; chmod +x container-diff-darwin-amd64 &amp;&amp; sudo mv container-diff-darwin-amd64 /usr/local/bin/container-diff Linux # curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64 &amp;&amp; chmod +x container-diff-linux-amd64 &amp;&amp; sudo mv container-diff-linux-amd64 /usr/local/bin/container-diff # or curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64 &amp;&amp; chmod +x container-diff-linux-amd64 &amp;&amp; mkdir -p $HOME/bin &amp;&amp; export PATH=$PATH:$HOME/bin &amp;&amp; mv container-diff-linux-amd64 $HOME/bin/container-diff Windows # 下载地址: https://storage.</description></item><item><title/><link>https://blog.poneding.com/docker/dind/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/docker/dind/</guid><description>🏠 首页 / Docker / Docker in Docker diff --git a/docker/linux-container/index.html b/docker/linux-container/index.html index a6ae711b..677c936a 100644 --- a/docker/linux-container/index.html +++ b/docker/linux-container/index.html @@ -3,14 +3,14 @@ 资源隔离和限制 容器镜像 # 联合文件系统 # 允许文件存放在不同的层级上,但是最终可以通过统一的视图查看到这些层级的所有文件。 cgroup # namespace # mount:文件系统隔离 uts:hostname domain pid:1号进程 network user ipc:进程间通信 cgroup « Dockerfile -» 非 root 账号获取 docker 权限"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/linux-container/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Linux 容器 +» 非 root 账号获取 docker 权限"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/linux-container/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / Linux 容器 Linux 容器 # 容器是轻量级的虚拟化技术。 资源隔离和限制 容器镜像 # 联合文件系统 # 允许文件存放在不同的层级上,但是最终可以通过统一的视图查看到这些层级的所有文件。 cgroup # namespace # mount:文件系统隔离 uts:hostname domain pid:1号进程 network user ipc:进程间通信 cgroup « Dockerfile -» 非 root 账号获取 docker 权限"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Linux Container | 🍁 秋河落叶</title> +» 非 root 账号获取 docker 权限"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Linux Container | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/linux-container/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Linux Container</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#容器镜像>容器镜像</a><ul><li><a href=#联合文件系统>联合文件系统</a></li></ul></li><li><a href=#cgroup>cgroup</a></li><li><a href=#namespace>namespace</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / Linux 容器</p><h1 id=linux-容器>Linux 容器 diff --git a/docker/non-root-account-get-docker-permission/index.html b/docker/non-root-account-get-docker-permission/index.html index a6b29421..0e10c90e 100644 --- a/docker/non-root-account-get-docker-permission/index.html +++ b/docker/non-root-account-get-docker-permission/index.html @@ -5,16 +5,16 @@ sudo usermod -aG docker $USER 第二步,授权 sudo chmod a+rw /var/run/docker.sock 快去试试吧。 « Linux 容器 -» some-apps.md"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/non-root-account-get-docker-permission/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / 非 root 账号获取 docker 权限 +» some-apps.md"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/non-root-account-get-docker-permission/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / 非 root 账号获取 docker 权限 非 root 账号获取 docker 权限 # 默认 docker 的命令是需要 sudo 权限的,如果你觉得麻烦,想直接在当前用户下执行 docker 权限,你可以尝试使用下面这个解决方案。 拢共分两步: 第一步,将当前用户添加到 docker 组 sudo usermod -aG docker $USER 第二步,授权 sudo chmod a+rw /var/run/docker.sock 快去试试吧。 « Linux 容器 -» some-apps.md"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Non Root Account Get Docker Permission | 🍁 秋河落叶</title> +» some-apps.md"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Non Root Account Get Docker Permission | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/non-root-account-get-docker-permission/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Non Root Account Get Docker Permission</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / 非 root 账号获取 docker 权限</p><h1 id=非-root-账号获取-docker-权限>非 root 账号获取 docker 权限 diff --git a/docker/some-apps/index.html b/docker/some-apps/index.html index 79077a07..d026f7f4 100644 --- a/docker/some-apps/index.html +++ b/docker/some-apps/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Docker / some-apps.md Docker 应用 Cloudreve # 项目地址: https://github.com/cloudreve/Cloudreve -docker run -d --name cloudreve \ -p 5212:5212 \ --mount type=bind,source=/root/apps/cloudreve/conf.ini,target=/cloudreve/conf.ini \ --mount type=bind,source=/root/apps/cloudreve/cloudreve.db,target=/cloudreve/cloudreve.db \ -v /root/apps/cloudreve/uploads:/cloudreve/uploads \ -v /root/apps/cloudreve/avatar:/cloudreve/avatar \ cloudreve/cloudreve:latest Etcd # docker run -d --name etcd \ -p 12379:2379 \ -p 12380:2380 \ -e ALLOW_NONE_AUTHENTICATION=yes \ -e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 \ -e ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379,http://0.0.0.0:2379 \ -v /root/apps/etcd/data:/var/run/etcd \ quay.io/coreos/etcd:v3.5.6 Minio # docker run -d --name minio \ -p 9000:9000 \ -p 9001:9001 \ -e MINIO_ROOT_USER=minio \ -e MINIO_ROOT_PASSWORD='pd1n9@1024' \ -v /root/apps/minio/data:/data \ quay."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/some-apps/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / some-apps.md +docker run -d --name cloudreve \ -p 5212:5212 \ --mount type=bind,source=/root/apps/cloudreve/conf.ini,target=/cloudreve/conf.ini \ --mount type=bind,source=/root/apps/cloudreve/cloudreve.db,target=/cloudreve/cloudreve.db \ -v /root/apps/cloudreve/uploads:/cloudreve/uploads \ -v /root/apps/cloudreve/avatar:/cloudreve/avatar \ cloudreve/cloudreve:latest Etcd # docker run -d --name etcd \ -p 12379:2379 \ -p 12380:2380 \ -e ALLOW_NONE_AUTHENTICATION=yes \ -e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 \ -e ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379,http://0.0.0.0:2379 \ -v /root/apps/etcd/data:/var/run/etcd \ quay.io/coreos/etcd:v3.5.6 Minio # docker run -d --name minio \ -p 9000:9000 \ -p 9001:9001 \ -e MINIO_ROOT_USER=minio \ -e MINIO_ROOT_PASSWORD='pd1n9@1024' \ -v /root/apps/minio/data:/data \ quay."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/docker/some-apps/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Docker / some-apps.md Docker 应用 Cloudreve # 项目地址: https://github.com/cloudreve/Cloudreve -docker run -d --name cloudreve \ -p 5212:5212 \ --mount type=bind,source=/root/apps/cloudreve/conf.ini,target=/cloudreve/conf.ini \ --mount type=bind,source=/root/apps/cloudreve/cloudreve.db,target=/cloudreve/cloudreve.db \ -v /root/apps/cloudreve/uploads:/cloudreve/uploads \ -v /root/apps/cloudreve/avatar:/cloudreve/avatar \ cloudreve/cloudreve:latest Etcd # docker run -d --name etcd \ -p 12379:2379 \ -p 12380:2380 \ -e ALLOW_NONE_AUTHENTICATION=yes \ -e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 \ -e ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379,http://0.0.0.0:2379 \ -v /root/apps/etcd/data:/var/run/etcd \ quay.io/coreos/etcd:v3.5.6 Minio # docker run -d --name minio \ -p 9000:9000 \ -p 9001:9001 \ -e MINIO_ROOT_USER=minio \ -e MINIO_ROOT_PASSWORD='pd1n9@1024' \ -v /root/apps/minio/data:/data \ quay."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Some Apps | 🍁 秋河落叶</title> +docker run -d --name cloudreve \ -p 5212:5212 \ --mount type=bind,source=/root/apps/cloudreve/conf.ini,target=/cloudreve/conf.ini \ --mount type=bind,source=/root/apps/cloudreve/cloudreve.db,target=/cloudreve/cloudreve.db \ -v /root/apps/cloudreve/uploads:/cloudreve/uploads \ -v /root/apps/cloudreve/avatar:/cloudreve/avatar \ cloudreve/cloudreve:latest Etcd # docker run -d --name etcd \ -p 12379:2379 \ -p 12380:2380 \ -e ALLOW_NONE_AUTHENTICATION=yes \ -e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 \ -e ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379,http://0.0.0.0:2379 \ -v /root/apps/etcd/data:/var/run/etcd \ quay.io/coreos/etcd:v3.5.6 Minio # docker run -d --name minio \ -p 9000:9000 \ -p 9001:9001 \ -e MINIO_ROOT_USER=minio \ -e MINIO_ROOT_PASSWORD='pd1n9@1024' \ -v /root/apps/minio/data:/data \ quay."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="docker"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Some Apps | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/docker/some-apps/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Some Apps</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#cloudreve>Cloudreve</a></li><li><a href=#etcd>Etcd</a></li><li><a href=#minio>Minio</a></li><li><a href=#mysql>MySQL</a></li><li><a href=#postgres>Postgres</a></li><li><a href=#rabbitmq>RabbitMQ</a></li><li><a href=#redis>Redis</a></li><li><a href=#transfer>Transfer</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/docker/>Docker</a> / some-apps.md</p><p>Docker 应用</p><h2 id=cloudreve>Cloudreve diff --git a/ebpf/ebpf/index.html b/ebpf/ebpf/index.html index 6d45832d..e04345da 100644 --- a/ebpf/ebpf/index.html +++ b/ebpf/ebpf/index.html @@ -8,7 +8,7 @@ 编写程序 # 在很多情况下,eBPF 不是直接使用,而是通过像 Cilium、 bcc 或 bpftrace 这样的项目间接使用,这些项目提供了 eBPF 之上的抽象,不需要直接编写程序,而是提供了指定基于意图的来定义实现的能力,然后用 eBPF 实现。 如果不存在更高层次的抽象,则需要直接编写程序。Linux 内核期望 eBPF 程序以字节码的形式加载。虽然直接编写字节码当然是可能的,但更常见的开发实践是利用像 LLVM 这样的编译器套件将伪 c 代码编译成 eBPF 字节码。 安全性 # 由于 eBPF 允许我们在内核中运行任意代码,需要有一种机制来确保它的安全运行,不会使用户的机器崩溃,也不会损害他们的数据。这个机制就是 eBPF 验证器。 -验证器对 eBPF 程序进行分析,以确保无论输入什么,它都会在一定数量的指令内安全地终止。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/ebpf/ebpf/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / EBPF / eBPF +验证器对 eBPF 程序进行分析,以确保无论输入什么,它都会在一定数量的指令内安全地终止。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/ebpf/ebpf/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / EBPF / eBPF eBPF # 简介 # eBPF (extended Berkeley Packet Filter) 是一项革命性的技术,起源于 Linux 内核,它可以在特权上下文中(如操作系统内核)运行沙盒程序。它用于安全有效地扩展内核的功能,而无需通过更改内核源代码或加载内核模块的方式来实现。 从历史上看,由于内核具有监督和控制整个系统的特权,操作系统一直是实现可观测性、安全性和网络功能的理想场所。同时,由于操作系统内核的核心地位和对稳定性和安全性的高要求,操作系统内核很难快速迭代发展。因此在传统意义上,与在操作系统本身之外实现的功能相比,操作系统级别的创新速度要慢一些。 eBPF 从根本上改变了这个方式。通过允许在操作系统中运行沙盒程序的方式,应用程序开发人员可以运行 eBPF 程序,以便在运行时向操作系统添加额外的功能。然后在 JIT 编译器和验证引擎的帮助下,操作系统确保它像本地编译的程序一样具备安全性和执行效率。这引发了一股基于 eBPF 的项目热潮,它们涵盖了广泛的用例,包括下一代网络实现、可观测性和安全功能等领域。 @@ -18,9 +18,9 @@ 编写程序 # 在很多情况下,eBPF 不是直接使用,而是通过像 Cilium、 bcc 或 bpftrace 这样的项目间接使用,这些项目提供了 eBPF 之上的抽象,不需要直接编写程序,而是提供了指定基于意图的来定义实现的能力,然后用 eBPF 实现。 如果不存在更高层次的抽象,则需要直接编写程序。Linux 内核期望 eBPF 程序以字节码的形式加载。虽然直接编写字节码当然是可能的,但更常见的开发实践是利用像 LLVM 这样的编译器套件将伪 c 代码编译成 eBPF 字节码。 安全性 # 由于 eBPF 允许我们在内核中运行任意代码,需要有一种机制来确保它的安全运行,不会使用户的机器崩溃,也不会损害他们的数据。这个机制就是 eBPF 验证器。 -验证器对 eBPF 程序进行分析,以确保无论输入什么,它都会在一定数量的指令内安全地终止。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="ebpf"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Ebpf | 🍁 秋河落叶</title> +验证器对 eBPF 程序进行分析,以确保无论输入什么,它都会在一定数量的指令内安全地终止。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="ebpf"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Ebpf | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/ebpf/ebpf/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Ebpf</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#简介>简介</a><ul><li><a href=#钩子>钩子</a></li><li><a href=#编写程序>编写程序</a></li></ul></li><li><a href=#安全性>安全性</a></li><li><a href=#云原生领域>云原生领域</a></li><li><a href=#项目>项目</a></li><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/ebpf/>EBPF</a> / eBPF</p><h1 id=ebpf>eBPF diff --git a/ebpf/index.html b/ebpf/index.html index bec85a32..ad7b76df 100644 --- a/ebpf/index.html +++ b/ebpf/index.html @@ -1,8 +1,8 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / EBPF -EBPF # eBPF"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/ebpf/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / EBPF -EBPF # eBPF"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Ebpf | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/ebpf/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/ebpf/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +EBPF # eBPF"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/ebpf/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / EBPF +EBPF # eBPF"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Ebpf | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/ebpf/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/ebpf/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Ebpf</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / EBPF</p><h1 id=ebpf>EBPF <a class=anchor href=#ebpf>#</a></h1><p><a href=/ebpf/ebpf/>eBPF</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/ebpf/index.xml b/ebpf/index.xml index ddf3800b..ec04a360 100644 --- a/ebpf/index.xml +++ b/ebpf/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/ebpf/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/ebpf/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/ebpf/ebpf/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/ebpf/ebpf/</guid><description>🏠 首页 / EBPF / eBPF +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/ebpf/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/ebpf/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/ebpf/ebpf/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/ebpf/ebpf/</guid><description>🏠 首页 / EBPF / eBPF eBPF # 简介 # eBPF (extended Berkeley Packet Filter) 是一项革命性的技术,起源于 Linux 内核,它可以在特权上下文中(如操作系统内核)运行沙盒程序。它用于安全有效地扩展内核的功能,而无需通过更改内核源代码或加载内核模块的方式来实现。 从历史上看,由于内核具有监督和控制整个系统的特权,操作系统一直是实现可观测性、安全性和网络功能的理想场所。同时,由于操作系统内核的核心地位和对稳定性和安全性的高要求,操作系统内核很难快速迭代发展。因此在传统意义上,与在操作系统本身之外实现的功能相比,操作系统级别的创新速度要慢一些。 eBPF 从根本上改变了这个方式。通过允许在操作系统中运行沙盒程序的方式,应用程序开发人员可以运行 eBPF 程序,以便在运行时向操作系统添加额外的功能。然后在 JIT 编译器和验证引擎的帮助下,操作系统确保它像本地编译的程序一样具备安全性和执行效率。这引发了一股基于 eBPF 的项目热潮,它们涵盖了广泛的用例,包括下一代网络实现、可观测性和安全功能等领域。 diff --git a/front-end/build-blog-site/index.html b/front-end/build-blog-site/index.html index 11d3bdab..1040d0fc 100644 --- a/front-end/build-blog-site/index.html +++ b/front-end/build-blog-site/index.html @@ -2,13 +2,13 @@ 搭建博客站点 # 1. Hugo 搭建博客 # Hugo 是一个用 Go 语言编写的静态网站生成器。Hugo 的速度非常快,因为它是一个独立的二进制文件,不需要任何运行时依赖。Hugo 的主要特点是速度快、易于安装、易于使用、易于定制。 1.1 安装 Hugo # 参考: https://gohugo.io/installation 1.2 创建博客 # hugo new site blog --format yaml cd blog git init 1.3 选择主题 # 使用 hugo-book 主题。 -git submodule add https://github.com/alex-shpak/hugo-book themes/hugo-book 2. 定制 # 2.1 配置 hugo.yaml # # hugo server --minify --themesDir ../.. --baseURL=http://0.0.0.0:1313/theme/hugo-book/ baseURL: https://blog.poneding.com/ title: 秋河落叶 theme: hugo-book pluralizeListTitles: false defaultContentLanguage: cn # Book configuration disablePathToLower: true enableGitInfo: true # Needed for mermaid/katex shortcodes markup: tableOfContents: startLevel: 2 endLevel: 3 # ordered: true highlight: noClasses: false # style: monokai menu: after: - name: "🔗 GitHub" url: "https://github.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/front-end/build-blog-site/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / 前端技术 / 搭建博客站点 +git submodule add https://github.com/alex-shpak/hugo-book themes/hugo-book 2. 定制 # 2.1 配置 hugo.yaml # # hugo server --minify --themesDir ../.. --baseURL=http://0.0.0.0:1313/theme/hugo-book/ baseURL: https://blog.poneding.com/ title: 秋河落叶 theme: hugo-book pluralizeListTitles: false defaultContentLanguage: cn # Book configuration disablePathToLower: true enableGitInfo: true # Needed for mermaid/katex shortcodes markup: tableOfContents: startLevel: 2 endLevel: 3 # ordered: true highlight: noClasses: false # style: monokai menu: after: - name: "🔗 GitHub" url: "https://github.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/front-end/build-blog-site/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / 前端技术 / 搭建博客站点 搭建博客站点 # 1. Hugo 搭建博客 # Hugo 是一个用 Go 语言编写的静态网站生成器。Hugo 的速度非常快,因为它是一个独立的二进制文件,不需要任何运行时依赖。Hugo 的主要特点是速度快、易于安装、易于使用、易于定制。 1.1 安装 Hugo # 参考: https://gohugo.io/installation 1.2 创建博客 # hugo new site blog --format yaml cd blog git init 1.3 选择主题 # 使用 hugo-book 主题。 -git submodule add https://github.com/alex-shpak/hugo-book themes/hugo-book 2. 定制 # 2.1 配置 hugo.yaml # # hugo server --minify --themesDir ../.. --baseURL=http://0.0.0.0:1313/theme/hugo-book/ baseURL: https://blog.poneding.com/ title: 秋河落叶 theme: hugo-book pluralizeListTitles: false defaultContentLanguage: cn # Book configuration disablePathToLower: true enableGitInfo: true # Needed for mermaid/katex shortcodes markup: tableOfContents: startLevel: 2 endLevel: 3 # ordered: true highlight: noClasses: false # style: monokai menu: after: - name: "🔗 GitHub" url: "https://github.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="front-end"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Build Blog Site | 🍁 秋河落叶</title> +git submodule add https://github.com/alex-shpak/hugo-book themes/hugo-book 2. 定制 # 2.1 配置 hugo.yaml # # hugo server --minify --themesDir ../.. --baseURL=http://0.0.0.0:1313/theme/hugo-book/ baseURL: https://blog.poneding.com/ title: 秋河落叶 theme: hugo-book pluralizeListTitles: false defaultContentLanguage: cn # Book configuration disablePathToLower: true enableGitInfo: true # Needed for mermaid/katex shortcodes markup: tableOfContents: startLevel: 2 endLevel: 3 # ordered: true highlight: noClasses: false # style: monokai menu: after: - name: "🔗 GitHub" url: "https://github.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="front-end"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Build Blog Site | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/front-end/build-blog-site/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Build Blog Site</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#1-hugo-搭建博客>1. Hugo 搭建博客</a><ul><li><a href=#11-安装-hugo>1.1 安装 Hugo</a></li><li><a href=#12-创建博客>1.2 创建博客</a></li><li><a href=#13-选择主题>1.3 选择主题</a></li></ul></li><li><a href=#2-定制>2. 定制</a><ul><li><a href=#21-配置-hugoyaml>2.1 配置 hugo.yaml</a></li><li><a href=#22-定制左侧菜单栏>2.2 定制左侧菜单栏</a></li><li><a href=#22-配置-giscus-评论>2.2 配置 giscus 评论</a></li><li><a href=#23-代码主题自动切换>2.3 代码主题自动切换</a></li><li><a href=#24-logo>2.4 Logo</a></li></ul></li><li><a href=#3-部署>3. 部署</a><ul><li><a href=#31-自定义域名>3.1 自定义域名</a></li><li><a href=#32-使用-github-actions-自动部署>3.2 使用 GitHub Actions 自动部署</a></li><li><a href=#33-代码提交触发部署>3.3 代码提交触发部署</a></li><li><a href=#34-github-pages-配置>3.4 GitHub Pages 配置</a></li></ul></li><li><a href=#4-seo-配置>4. SEO 配置</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/front-end/>前端技术</a> / 搭建博客站点</p><h1 id=搭建博客站点>搭建博客站点 diff --git a/front-end/index.html b/front-end/index.html index 2d43310c..4681d670 100644 --- a/front-end/index.html +++ b/front-end/index.html @@ -2,13 +2,13 @@ 前端技术 # 搭建博客站点 Pinia 入门 VitePress -认识Vue3"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/front-end/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 前端技术 +认识Vue3"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/front-end/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 前端技术 前端技术 # 搭建博客站点 Pinia 入门 VitePress -认识Vue3"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Front End | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/front-end/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/front-end/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +认识Vue3"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Front End | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/front-end/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/front-end/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Front End</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / 前端技术</p><h1 id=前端技术>前端技术 <a class=anchor href=#%e5%89%8d%e7%ab%af%e6%8a%80%e6%9c%af>#</a></h1><p><a href=/front-end/build-blog-site/>搭建博客站点</a></p><p><a href=/front-end/pinia/>Pinia 入门</a></p><p><a href=/front-end/vitepress/>VitePress</a></p><p><a href=/front-end/vue3/>认识Vue3</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/front-end/index.xml b/front-end/index.xml index 45ea00bd..82c40eb9 100644 --- a/front-end/index.xml +++ b/front-end/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/front-end/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/front-end/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/front-end/build-blog-site/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/front-end/build-blog-site/</guid><description>🏠 首页 / 前端技术 / 搭建博客站点 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/front-end/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/front-end/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/front-end/build-blog-site/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/front-end/build-blog-site/</guid><description>🏠 首页 / 前端技术 / 搭建博客站点 搭建博客站点 # 1. Hugo 搭建博客 # Hugo 是一个用 Go 语言编写的静态网站生成器。Hugo 的速度非常快,因为它是一个独立的二进制文件,不需要任何运行时依赖。Hugo 的主要特点是速度快、易于安装、易于使用、易于定制。 1.1 安装 Hugo # 参考: https://gohugo.io/installation 1.2 创建博客 # hugo new site blog --format yaml cd blog git init 1.3 选择主题 # 使用 hugo-book 主题。 diff --git a/front-end/pinia/index.html b/front-end/pinia/index.html index 2c725e36..053bda4e 100644 --- a/front-end/pinia/index.html +++ b/front-end/pinia/index.html @@ -2,13 +2,13 @@ Pinia 入门 # 什么是pinia # Pinia 是 Vue 的专属状态管理库,可以实现跨组件或页面共享状态,是 vuex 状态管理工具的替代品,和 Vuex相比,具备以下优势 提供更加简单的API (去掉了 mutation ) 提供符合组合式API风格的API (和 Vue3 新语法统一) 去掉了modules的概念,每一个store都是一个独立的模块 搭配 TypeScript 一起使用提供可靠的类型推断 创建空Vue项目并安装Pinia # 1. 创建空Vue项目 # npm init vue@latest 2. 安装Pinia并注册 # npm i pinia import { createPinia } from 'pinia' const app = createApp(App) // 以插件的形式注册 app.use(createPinia()) app.use(router) app.mount('#app') 实现counter # 核心步骤: 定义store 组件使用store 1- 定义store -import { defineStore } from 'pinia' import { ref } from 'vue' export const useCounterStore = defineStore('counter', ()=>{ // 数据 (state) const count = ref(0) // 修改数据的方法 (action) const increment = ()=>{ count."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/front-end/pinia/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 前端技术 / Pinia 入门 +import { defineStore } from 'pinia' import { ref } from 'vue' export const useCounterStore = defineStore('counter', ()=>{ // 数据 (state) const count = ref(0) // 修改数据的方法 (action) const increment = ()=>{ count."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/front-end/pinia/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 前端技术 / Pinia 入门 Pinia 入门 # 什么是pinia # Pinia 是 Vue 的专属状态管理库,可以实现跨组件或页面共享状态,是 vuex 状态管理工具的替代品,和 Vuex相比,具备以下优势 提供更加简单的API (去掉了 mutation ) 提供符合组合式API风格的API (和 Vue3 新语法统一) 去掉了modules的概念,每一个store都是一个独立的模块 搭配 TypeScript 一起使用提供可靠的类型推断 创建空Vue项目并安装Pinia # 1. 创建空Vue项目 # npm init vue@latest 2. 安装Pinia并注册 # npm i pinia import { createPinia } from 'pinia' const app = createApp(App) // 以插件的形式注册 app.use(createPinia()) app.use(router) app.mount('#app') 实现counter # 核心步骤: 定义store 组件使用store 1- 定义store -import { defineStore } from 'pinia' import { ref } from 'vue' export const useCounterStore = defineStore('counter', ()=>{ // 数据 (state) const count = ref(0) // 修改数据的方法 (action) const increment = ()=>{ count."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="front-end"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Pinia | 🍁 秋河落叶</title> +import { defineStore } from 'pinia' import { ref } from 'vue' export const useCounterStore = defineStore('counter', ()=>{ // 数据 (state) const count = ref(0) // 修改数据的方法 (action) const increment = ()=>{ count."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="front-end"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Pinia | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/front-end/pinia/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Pinia</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#什么是pinia>什么是pinia</a></li><li><a href=#创建空vue项目并安装pinia>创建空Vue项目并安装Pinia</a><ul><li><a href=#1-创建空vue项目>1. 创建空Vue项目</a></li><li><a href=#2-安装pinia并注册>2. 安装Pinia并注册</a></li></ul></li><li><a href=#实现counter>实现counter</a></li><li><a href=#实现getters>实现getters</a></li><li><a href=#异步action>异步action</a></li><li><a href=#storetorefs保持响应式解构>storeToRefs保持响应式解构</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/front-end/>前端技术</a> / Pinia 入门</p><h1 id=pinia-入门>Pinia 入门 diff --git a/front-end/vitepress/index.html b/front-end/vitepress/index.html index f70723a2..631c5813 100644 --- a/front-end/vitepress/index.html +++ b/front-end/vitepress/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / 前端技术 / VitePress VitePress # 搭建项目 # mkdir vitepress-demo npm add -D vitepress npx vitepress init 运行 # npm run docs:dev # 或者直接调用 VitePress npx vitepress dev docs 打包 # npm run docs:build GitHub Action # .github/workflows/deploy.yaml -# 构建 VitePress 站点并将其部署到 GitHub Pages 的示例工作流程 # name: Deploy VitePress site to Pages on: # 在针对 `main` 分支的推送上运行。如果你 # 使用 `master` 分支作为默认分支,请将其更改为 `master` push: branches: [master] # 允许你从 Actions 选项卡手动运行此工作流程 workflow_dispatch: # 设置 GITHUB_TOKEN 的权限,以允许部署到 GitHub Pages permissions: contents: read pages: write id-token: write # 只允许同时进行一次部署,跳过正在运行和最新队列之间的运行队列 # 但是,不要取消正在进行的运行,因为我们希望允许这些生产部署完成 concurrency: group: pages cancel-in-progress: false jobs: # 构建工作 build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 # 如果未启用 lastUpdated,则不需要 # - uses: pnpm/action-setup@v3 # 如果使用 pnpm,请取消注释 # - uses: oven-sh/setup-bun@v1 # 如果使用 Bun,请取消注释 - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20 cache: npm # 或 pnpm / yarn - name: Setup Pages uses: actions/configure-pages@v4 - name: Install dependencies run: npm ci # 或 pnpm install / yarn install / bun install - name: Build with VitePress run: npm run docs:build # 或 pnpm docs:build / yarn docs:build / bun run docs:build - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/front-end/vitepress/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 前端技术 / VitePress +# 构建 VitePress 站点并将其部署到 GitHub Pages 的示例工作流程 # name: Deploy VitePress site to Pages on: # 在针对 `main` 分支的推送上运行。如果你 # 使用 `master` 分支作为默认分支,请将其更改为 `master` push: branches: [master] # 允许你从 Actions 选项卡手动运行此工作流程 workflow_dispatch: # 设置 GITHUB_TOKEN 的权限,以允许部署到 GitHub Pages permissions: contents: read pages: write id-token: write # 只允许同时进行一次部署,跳过正在运行和最新队列之间的运行队列 # 但是,不要取消正在进行的运行,因为我们希望允许这些生产部署完成 concurrency: group: pages cancel-in-progress: false jobs: # 构建工作 build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 # 如果未启用 lastUpdated,则不需要 # - uses: pnpm/action-setup@v3 # 如果使用 pnpm,请取消注释 # - uses: oven-sh/setup-bun@v1 # 如果使用 Bun,请取消注释 - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20 cache: npm # 或 pnpm / yarn - name: Setup Pages uses: actions/configure-pages@v4 - name: Install dependencies run: npm ci # 或 pnpm install / yarn install / bun install - name: Build with VitePress run: npm run docs:build # 或 pnpm docs:build / yarn docs:build / bun run docs:build - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/front-end/vitepress/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 前端技术 / VitePress VitePress # 搭建项目 # mkdir vitepress-demo npm add -D vitepress npx vitepress init 运行 # npm run docs:dev # 或者直接调用 VitePress npx vitepress dev docs 打包 # npm run docs:build GitHub Action # .github/workflows/deploy.yaml -# 构建 VitePress 站点并将其部署到 GitHub Pages 的示例工作流程 # name: Deploy VitePress site to Pages on: # 在针对 `main` 分支的推送上运行。如果你 # 使用 `master` 分支作为默认分支,请将其更改为 `master` push: branches: [master] # 允许你从 Actions 选项卡手动运行此工作流程 workflow_dispatch: # 设置 GITHUB_TOKEN 的权限,以允许部署到 GitHub Pages permissions: contents: read pages: write id-token: write # 只允许同时进行一次部署,跳过正在运行和最新队列之间的运行队列 # 但是,不要取消正在进行的运行,因为我们希望允许这些生产部署完成 concurrency: group: pages cancel-in-progress: false jobs: # 构建工作 build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 # 如果未启用 lastUpdated,则不需要 # - uses: pnpm/action-setup@v3 # 如果使用 pnpm,请取消注释 # - uses: oven-sh/setup-bun@v1 # 如果使用 Bun,请取消注释 - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20 cache: npm # 或 pnpm / yarn - name: Setup Pages uses: actions/configure-pages@v4 - name: Install dependencies run: npm ci # 或 pnpm install / yarn install / bun install - name: Build with VitePress run: npm run docs:build # 或 pnpm docs:build / yarn docs:build / bun run docs:build - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="front-end"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Vitepress | 🍁 秋河落叶</title> +# 构建 VitePress 站点并将其部署到 GitHub Pages 的示例工作流程 # name: Deploy VitePress site to Pages on: # 在针对 `main` 分支的推送上运行。如果你 # 使用 `master` 分支作为默认分支,请将其更改为 `master` push: branches: [master] # 允许你从 Actions 选项卡手动运行此工作流程 workflow_dispatch: # 设置 GITHUB_TOKEN 的权限,以允许部署到 GitHub Pages permissions: contents: read pages: write id-token: write # 只允许同时进行一次部署,跳过正在运行和最新队列之间的运行队列 # 但是,不要取消正在进行的运行,因为我们希望允许这些生产部署完成 concurrency: group: pages cancel-in-progress: false jobs: # 构建工作 build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 # 如果未启用 lastUpdated,则不需要 # - uses: pnpm/action-setup@v3 # 如果使用 pnpm,请取消注释 # - uses: oven-sh/setup-bun@v1 # 如果使用 Bun,请取消注释 - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20 cache: npm # 或 pnpm / yarn - name: Setup Pages uses: actions/configure-pages@v4 - name: Install dependencies run: npm ci # 或 pnpm install / yarn install / bun install - name: Build with VitePress run: npm run docs:build # 或 pnpm docs:build / yarn docs:build / bun run docs:build - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="front-end"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Vitepress | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/front-end/vitepress/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Vitepress</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#搭建项目>搭建项目</a></li><li><a href=#运行>运行</a></li><li><a href=#打包>打包</a></li><li><a href=#github-action>GitHub Action</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/front-end/>前端技术</a> / VitePress</p><h1 id=vitepress>VitePress diff --git a/front-end/vue3/index.html b/front-end/vue3/index.html index 7f914361..62f29678 100644 --- a/front-end/vue3/index.html +++ b/front-end/vue3/index.html @@ -2,13 +2,13 @@ 认识Vue3 # 1. Vue3组合式API体验 # 通过 Counter 案例 体验Vue3新引入的组合式API <script> export default { data(){ return { count:0 } }, methods:{ addCount(){ this.count++ } } } </script> <script setup> import { ref } from 'vue' const count = ref(0) const addCount = ()=> count.value++ </script> 特点: 代码量变少 分散式维护变成集中式维护 2. Vue3更多的优势 # 使用create-vue搭建Vue3项目 # 1. 认识create-vue # create-vue是Vue官方新的脚手架工具,底层切换到了 vite (下一代前端工具链),为开发提供极速响应 -2. 使用create-vue创建项目 # 前置条件 - 已安装16."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/front-end/vue3/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 前端技术 / 认识Vue3 +2. 使用create-vue创建项目 # 前置条件 - 已安装16."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/front-end/vue3/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 前端技术 / 认识Vue3 认识Vue3 # 1. Vue3组合式API体验 # 通过 Counter 案例 体验Vue3新引入的组合式API <script> export default { data(){ return { count:0 } }, methods:{ addCount(){ this.count++ } } } </script> <script setup> import { ref } from 'vue' const count = ref(0) const addCount = ()=> count.value++ </script> 特点: 代码量变少 分散式维护变成集中式维护 2. Vue3更多的优势 # 使用create-vue搭建Vue3项目 # 1. 认识create-vue # create-vue是Vue官方新的脚手架工具,底层切换到了 vite (下一代前端工具链),为开发提供极速响应 -2. 使用create-vue创建项目 # 前置条件 - 已安装16."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="front-end"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Vue3 | 🍁 秋河落叶</title> +2. 使用create-vue创建项目 # 前置条件 - 已安装16."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="front-end"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Vue3 | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/front-end/vue3/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Vue3</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#1-vue3组合式api体验>1. Vue3组合式API体验</a></li><li><a href=#2-vue3更多的优势>2. Vue3更多的优势</a></li></ul><ul><li><a href=#1-认识create-vue>1. 认识create-vue</a></li><li><a href=#2-使用create-vue创建项目>2. 使用create-vue创建项目</a></li></ul><ul><li><a href=#1-setup选项的写法和执行时机>1. setup选项的写法和执行时机</a></li><li><a href=#2-setup中写代码的特点>2. setup中写代码的特点</a></li><li><a href=#3-script-setup-语法糖>3. <code><script setup></code> 语法糖</a></li></ul><ul><li><a href=#1-reactive>1. reactive</a></li><li><a href=#2-ref>2. ref</a></li><li><a href=#3-reactive-对比-ref>3. reactive 对比 ref</a></li></ul><ul><li><a href=#1-侦听单个数据>1. 侦听单个数据</a></li><li><a href=#2-侦听多个数据>2. 侦听多个数据</a></li><li><a href=#3-immediate>3. immediate</a></li><li><a href=#4-deep>4. deep</a></li></ul><ul><li><a href=#1-选项式对比组合式>1. 选项式对比组合式</a></li><li><a href=#2-生命周期函数基本使用>2. 生命周期函数基本使用</a></li><li><a href=#3-执行多次>3. 执行多次</a></li></ul><ul><li><a href=#1-父传子>1. 父传子</a></li><li><a href=#2-子传父>2. 子传父</a></li></ul><ul><li><a href=#1-基本使用>1. 基本使用</a></li><li><a href=#2-defineexpose>2. defineExpose</a></li></ul><ul><li><a href=#1-作用和场景>1. 作用和场景</a></li><li><a href=#2-跨层传递普通数据>2. 跨层传递普通数据</a></li><li><a href=#3-跨层传递响应式数据>3. 跨层传递响应式数据</a></li><li><a href=#4-跨层传递方法>4. 跨层传递方法</a></li></ul><ul><li><a href=#1-项目地址>1. 项目地址</a></li><li><a href=#2-项目说明>2. 项目说明</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/front-end/>前端技术</a> / 认识Vue3</p><h1 id=认识vue3>认识Vue3 diff --git a/git/common-usage/index.html b/git/common-usage/index.html index 8fb1380c..a62d6878 100644 --- a/git/common-usage/index.html +++ b/git/common-usage/index.html @@ -3,14 +3,14 @@ Git 基本配置 # 配置 SSH 密钥 # 提交代码到远程仓库时,需要使用 SSH 密钥进行身份验证,因此需要先配置 SSH 密钥。 # 生成 SSH 密钥 ssh-keygen -t rsa -C poneding@gmail.com # 查看 SSH 密钥,复制到 GitHub/GitLab 等 SSH Keys 中 cat ~/.ssh/id_rsa.pub 添加 .ssh/config 文件,配置 SSH 密钥的别名,方便管理多个 SSH 密钥。 vim ~/.ssh/config 以 GitHub 为例,配置如下: -# GitHub Host github.com HostName github.com IdentityFile ~/.ssh/id_rsa 配置用户名和邮箱 # 提交代码时,需要配置用户名和邮箱。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/common-usage/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Git / Git 常用 +# GitHub Host github.com HostName github.com IdentityFile ~/.ssh/id_rsa 配置用户名和邮箱 # 提交代码时,需要配置用户名和邮箱。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/common-usage/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Git / Git 常用 Git 常用 # 本篇主要介绍 Git 的常用命令,包括 Git 的基本配置、创建仓库、添加文件、提交文件、查看状态、查看提交历史、撤销修改、删除文件、分支管理、远程仓库等。 Git 基本配置 # 配置 SSH 密钥 # 提交代码到远程仓库时,需要使用 SSH 密钥进行身份验证,因此需要先配置 SSH 密钥。 # 生成 SSH 密钥 ssh-keygen -t rsa -C poneding@gmail.com # 查看 SSH 密钥,复制到 GitHub/GitLab 等 SSH Keys 中 cat ~/.ssh/id_rsa.pub 添加 .ssh/config 文件,配置 SSH 密钥的别名,方便管理多个 SSH 密钥。 vim ~/.ssh/config 以 GitHub 为例,配置如下: -# GitHub Host github.com HostName github.com IdentityFile ~/.ssh/id_rsa 配置用户名和邮箱 # 提交代码时,需要配置用户名和邮箱。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Common Usage | 🍁 秋河落叶</title> +# GitHub Host github.com HostName github.com IdentityFile ~/.ssh/id_rsa 配置用户名和邮箱 # 提交代码时,需要配置用户名和邮箱。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Common Usage | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/git/common-usage/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/ class=active>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Common Usage</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#git-基本配置>Git 基本配置</a><ul><li><a href=#配置-ssh-密钥>配置 SSH 密钥</a></li><li><a href=#配置用户名和邮箱>配置用户名和邮箱</a></li><li><a href=#配置别名>配置别名</a></li><li><a href=#配置默认分支>配置默认分支</a></li><li><a href=#配置-rabase>配置 rabase</a></li></ul></li><li><a href=#git-仓库>Git 仓库</a><ul><li><a href=#初始化仓库>初始化仓库</a></li><li><a href=#克隆远程仓库>克隆远程仓库</a></li><li><a href=#提交本地更改到远程仓库>提交本地更改到远程仓库</a></li><li><a href=#添加远程仓库>添加远程仓库</a></li></ul></li><li><a href=#暂存更改>暂存更改</a><ul><li><a href=#添加文件>添加文件</a></li></ul></li><li><a href=#提交修正>提交修正</a></li><li><a href=#提交规范>提交规范</a></li><li><a href=#撤销更改>撤销更改</a><ul><li><a href=#还未-git-add>还未 git add</a></li><li><a href=#已经-git-add还未-git-commit>已经 git add,还未 git commit</a></li><li><a href=#已经-git-commit>已经 git commit</a></li></ul></li><li><a href=#git-分支>Git 分支</a><ul><li><a href=#查看分支>查看分支</a></li><li><a href=#创建分支>创建分支</a></li><li><a href=#同步远程分支>同步远程分支</a></li><li><a href=#合并分支>合并分支</a></li><li><a href=#删除分支>删除分支</a></li></ul></li><li><a href=#git-标签>Git 标签</a><ul><li><a href=#查看标签>查看标签</a></li><li><a href=#创建标签>创建标签</a></li><li><a href=#删除标签>删除标签</a></li></ul></li><li><a href=#git-remote>Git Remote</a><ul><li><a href=#查看远程信息>查看远程信息</a></li><li><a href=#新增远程>新增远程</a></li><li><a href=#更新远程地址>更新远程地址</a></li><li><a href=#删除远程>删除远程</a></li><li><a href=#多远程>多远程</a></li></ul></li><li><a href=#git-信息>Git 信息</a><ul><li><a href=#提交哈希值>提交哈希值</a></li></ul></li><li><a href=#删除远程仓库提交历史>删除远程仓库提交历史</a></li><li><a href=#排错>排错</a><ul><li><a href=#q1permissions-0664-for-sshid_rsa-are-too-open>Q1:Permissions 0664 for ‘~/.ssh/id_rsa’ are too open</a></li><li><a href=#q1证书颁发者未被识别>Q1:证书颁发者未被识别</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/git/>Git</a> / Git 常用</p><h1 id=git-常用>Git 常用 diff --git a/git/git-secret/index.html b/git/git-secret/index.html index 4c94cc96..4fd2998d 100644 --- a/git/git-secret/index.html +++ b/git/git-secret/index.html @@ -8,7 +8,7 @@ 使用 gpg 和所有信任用户的公钥加密文件,每个信任用户可以使用个人密钥解密文件,如果用户离开团队,将删除用户的公钥即可,他也就不能再解密文件了。 git-secret 使用 # 假设我现在有一个仓库 git-secret-demo,仓库下有一个包含敏感信息的文件 secret.json: 我现在想做的是使用 git-secret 将 secret.json 文件加密。 -首先得安装 gpg 工具 # Debian & Ubuntu sudo apt install gnupg -y # Macos brew install gnupg 本地创建 gpg RSA 密钥对 gpg --gen-key 在创建时需要输入自己的用户名和邮箱,并且需要输入你的加密密码。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/git-secret/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Git / 使用 git-secret 保护仓库敏感数据 +首先得安装 gpg 工具 # Debian & Ubuntu sudo apt install gnupg -y # Macos brew install gnupg 本地创建 gpg RSA 密钥对 gpg --gen-key 在创建时需要输入自己的用户名和邮箱,并且需要输入你的加密密码。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/git-secret/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Git / 使用 git-secret 保护仓库敏感数据 使用 git-secret 保护仓库敏感数据 # 如何保护 git 仓库中的敏感数据,例如数据库连接字符串,账号密码等? 首先,最好先将仓库设置成私有仓库!然后, 第一种方式:带有敏感数据的文件加入到. gitignore,不提交到仓库中; 第二种方式:敏感数据库文件加密后再提交到仓库中,这个就是今天要说的 git-secret。 这两种方式都有优缺点: @@ -18,9 +18,9 @@ 使用 gpg 和所有信任用户的公钥加密文件,每个信任用户可以使用个人密钥解密文件,如果用户离开团队,将删除用户的公钥即可,他也就不能再解密文件了。 git-secret 使用 # 假设我现在有一个仓库 git-secret-demo,仓库下有一个包含敏感信息的文件 secret.json: 我现在想做的是使用 git-secret 将 secret.json 文件加密。 -首先得安装 gpg 工具 # Debian & Ubuntu sudo apt install gnupg -y # Macos brew install gnupg 本地创建 gpg RSA 密钥对 gpg --gen-key 在创建时需要输入自己的用户名和邮箱,并且需要输入你的加密密码。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Git Secret | 🍁 秋河落叶</title> +首先得安装 gpg 工具 # Debian & Ubuntu sudo apt install gnupg -y # Macos brew install gnupg 本地创建 gpg RSA 密钥对 gpg --gen-key 在创建时需要输入自己的用户名和邮箱,并且需要输入你的加密密码。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Git Secret | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/git/git-secret/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Git Secret</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#git-secret-简介><strong>git-secret 简介</strong></a></li><li><a href=#git-secret-使用><strong>git-secret 使用</strong></a></li><li><a href=#git-secret-常用命令><strong>git-secret 常用命令</strong></a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/git/>Git</a> / 使用 git-secret 保护仓库敏感数据</p><h1 id=使用-git-secret-保护仓库敏感数据>使用 git-secret 保护仓库敏感数据 diff --git a/git/github-action-best-practice/index.html b/git/github-action-best-practice/index.html index 45adf1a1..08193b74 100644 --- a/git/github-action-best-practice/index.html +++ b/git/github-action-best-practice/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / Git / Github Action 使用最佳实践 Github Action 使用最佳实践 # Commit 构建 beta 版本镜像 # 仓库根目录下创建 .github/workflows/commit-cicd.yml 文件,用于提交代码触发 github action。 beta 版本的镜像 tag 命名规则:{vx.x.x}-beta-{COMMIT_ID},例如:v1.0.0-beta-f37cfa2 -name: commit-cicd env: BASE_VERSION: v1.0.0 on: push: branches: [main] workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set ENV run: | echo "VERSION=${BASE_VERSION}-beta-${GITHUB_SHA::7}" >> $GITHUB_ENV - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login to docker hub uses: docker/login-action@v2 with: username: poneding password: ${{ secrets.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/github-action-best-practice/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Git / Github Action 使用最佳实践 +name: commit-cicd env: BASE_VERSION: v1.0.0 on: push: branches: [main] workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set ENV run: | echo "VERSION=${BASE_VERSION}-beta-${GITHUB_SHA::7}" >> $GITHUB_ENV - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login to docker hub uses: docker/login-action@v2 with: username: poneding password: ${{ secrets.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/github-action-best-practice/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Git / Github Action 使用最佳实践 Github Action 使用最佳实践 # Commit 构建 beta 版本镜像 # 仓库根目录下创建 .github/workflows/commit-cicd.yml 文件,用于提交代码触发 github action。 beta 版本的镜像 tag 命名规则:{vx.x.x}-beta-{COMMIT_ID},例如:v1.0.0-beta-f37cfa2 -name: commit-cicd env: BASE_VERSION: v1.0.0 on: push: branches: [main] workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set ENV run: | echo "VERSION=${BASE_VERSION}-beta-${GITHUB_SHA::7}" >> $GITHUB_ENV - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login to docker hub uses: docker/login-action@v2 with: username: poneding password: ${{ secrets.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Github Action Best Practice | 🍁 秋河落叶</title> +name: commit-cicd env: BASE_VERSION: v1.0.0 on: push: branches: [main] workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set ENV run: | echo "VERSION=${BASE_VERSION}-beta-${GITHUB_SHA::7}" >> $GITHUB_ENV - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login to docker hub uses: docker/login-action@v2 with: username: poneding password: ${{ secrets.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Github Action Best Practice | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/git/github-action-best-practice/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Github Action Best Practice</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#commit-构建-beta-版本镜像>Commit 构建 beta 版本镜像</a></li><li><a href=#release-构建-stable-版本镜像>Release 构建 stable 版本镜像</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/git/>Git</a> / Github Action 使用最佳实践</p><h1 id=github-action-使用最佳实践>Github Action 使用最佳实践 diff --git a/git/github-host-helm-chart/index.html b/git/github-host-helm-chart/index.html index d0b90223..38977862 100644 --- a/git/github-host-helm-chart/index.html +++ b/git/github-host-helm-chart/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Git / 使用 GitHub 托管 helm-chart 仓库 使用 GitHub 托管 helm-chart 仓库 # helm 官方文档: -Helm | Chart Releaser Action to Automate GitHub Page Charts 创建 GitHub 仓库,例如:helm-charts,克隆到本地。 git clone git@github.com:[gh_id]/helm-charts.git cd helm-charts 创建干净的 gh-pages 分支。 git checkout --orphan gh-pages git rm -rf . vim README.md # helm-charts ## Usage [Helm](https://helm.sh) must be installed to use the charts. Please refer to Helm's [documentation](https://helm.sh/docs) to get started. Once Helm has been set up correctly, add the repo as follows: ```bash helm repo add mycharts https://[gh_id]."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/github-host-helm-chart/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Git / 使用 GitHub 托管 helm-chart 仓库 +Helm | Chart Releaser Action to Automate GitHub Page Charts 创建 GitHub 仓库,例如:helm-charts,克隆到本地。 git clone git@github.com:[gh_id]/helm-charts.git cd helm-charts 创建干净的 gh-pages 分支。 git checkout --orphan gh-pages git rm -rf . vim README.md # helm-charts ## Usage [Helm](https://helm.sh) must be installed to use the charts. Please refer to Helm's [documentation](https://helm.sh/docs) to get started. Once Helm has been set up correctly, add the repo as follows: ```bash helm repo add mycharts https://[gh_id]."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/github-host-helm-chart/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Git / 使用 GitHub 托管 helm-chart 仓库 使用 GitHub 托管 helm-chart 仓库 # helm 官方文档: -Helm | Chart Releaser Action to Automate GitHub Page Charts 创建 GitHub 仓库,例如:helm-charts,克隆到本地。 git clone git@github.com:[gh_id]/helm-charts.git cd helm-charts 创建干净的 gh-pages 分支。 git checkout --orphan gh-pages git rm -rf . vim README.md # helm-charts ## Usage [Helm](https://helm.sh) must be installed to use the charts. Please refer to Helm's [documentation](https://helm.sh/docs) to get started. Once Helm has been set up correctly, add the repo as follows: ```bash helm repo add mycharts https://[gh_id]."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Github Host Helm Chart | 🍁 秋河落叶</title> +Helm | Chart Releaser Action to Automate GitHub Page Charts 创建 GitHub 仓库,例如:helm-charts,克隆到本地。 git clone git@github.com:[gh_id]/helm-charts.git cd helm-charts 创建干净的 gh-pages 分支。 git checkout --orphan gh-pages git rm -rf . vim README.md # helm-charts ## Usage [Helm](https://helm.sh) must be installed to use the charts. Please refer to Helm's [documentation](https://helm.sh/docs) to get started. Once Helm has been set up correctly, add the repo as follows: ```bash helm repo add mycharts https://[gh_id]."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Github Host Helm Chart | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/git/github-host-helm-chart/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Github Host Helm Chart</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/git/>Git</a> / 使用 GitHub 托管 helm-chart 仓库</p><h1 id=使用-github-托管-helm-chart-仓库>使用 GitHub 托管 helm-chart 仓库 diff --git a/git/github-hosting-helm-reop/index.html b/git/github-hosting-helm-reop/index.html index fd6cc274..fa97a409 100644 --- a/git/github-hosting-helm-reop/index.html +++ b/git/github-hosting-helm-reop/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Git / GitHub 托管 helm-chart 仓库 GitHub 托管 helm-chart 仓库 # 创建 GitHub 仓库 # 创建 GitHub helm charts 仓库,例如:helm-charts,克隆到本地。 git clone git@github.com:poneding/helm-charts.git cd helm-charts 创建 gh-pages 孤立分支 # git checkout --orphan gh-pages git rm -rf . vim README.md 编写 README.md 文件,例如: -# helm-charts ## Usage [Helm](https://helm.sh) must be installed to use the charts. Please refer to Helm's [documentation](https://helm.sh/docs) to get started. Once Helm has been set up correctly, add the repo as follows: ```bash helm repo add poneding https://poneding."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/github-hosting-helm-reop/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Git / GitHub 托管 helm-chart 仓库 +# helm-charts ## Usage [Helm](https://helm.sh) must be installed to use the charts. Please refer to Helm's [documentation](https://helm.sh/docs) to get started. Once Helm has been set up correctly, add the repo as follows: ```bash helm repo add poneding https://poneding."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/github-hosting-helm-reop/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Git / GitHub 托管 helm-chart 仓库 GitHub 托管 helm-chart 仓库 # 创建 GitHub 仓库 # 创建 GitHub helm charts 仓库,例如:helm-charts,克隆到本地。 git clone git@github.com:poneding/helm-charts.git cd helm-charts 创建 gh-pages 孤立分支 # git checkout --orphan gh-pages git rm -rf . vim README.md 编写 README.md 文件,例如: -# helm-charts ## Usage [Helm](https://helm.sh) must be installed to use the charts. Please refer to Helm's [documentation](https://helm.sh/docs) to get started. Once Helm has been set up correctly, add the repo as follows: ```bash helm repo add poneding https://poneding."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Github Hosting Helm Reop | 🍁 秋河落叶</title> +# helm-charts ## Usage [Helm](https://helm.sh) must be installed to use the charts. Please refer to Helm's [documentation](https://helm.sh/docs) to get started. Once Helm has been set up correctly, add the repo as follows: ```bash helm repo add poneding https://poneding."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Github Hosting Helm Reop | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/git/github-hosting-helm-reop/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Github Hosting Helm Reop</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#创建-github-仓库>创建 GitHub 仓库</a></li><li><a href=#创建-gh-pages-孤立分支>创建 <code>gh-pages</code> 孤立分支</a></li><li><a href=#启用-github-pages>启用 GitHub Pages</a></li><li><a href=#charts-开发>Charts 开发</a></li><li><a href=#配置-github-action>配置 GitHub Action</a></li><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/git/>Git</a> / GitHub 托管 helm-chart 仓库</p><h1 id=github-托管-helm-chart-仓库>GitHub 托管 helm-chart 仓库 diff --git a/git/github/index.html b/git/github/index.html index 9291302a..a642f8a4 100644 --- a/git/github/index.html +++ b/git/github/index.html @@ -3,14 +3,14 @@ 获取仓库最新 Release 的版本 # 方法一: curl -s https://api.github.com/repos/ketches/registry-proxy/releases/latest | jq -r .tag_name 方法二: basename $(curl -s -w %{redirect_url} https://github.com/ketches/registry-proxy/releases/latest) « GitHub 托管 helm-chart 仓库 -» Gitlab 添加 K8s 集群"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/github/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Git / GitHub +» Gitlab 添加 K8s 集群"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/github/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Git / GitHub GitHub # GitHub 托管 helm chart 仓库 # GitHub 托管 helm chart 仓库 获取仓库最新 Release 的版本 # 方法一: curl -s https://api.github.com/repos/ketches/registry-proxy/releases/latest | jq -r .tag_name 方法二: basename $(curl -s -w %{redirect_url} https://github.com/ketches/registry-proxy/releases/latest) « GitHub 托管 helm-chart 仓库 -» Gitlab 添加 K8s 集群"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Github | 🍁 秋河落叶</title> +» Gitlab 添加 K8s 集群"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Github | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/git/github/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Github</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#github-托管-helm-chart-仓库>GitHub 托管 helm chart 仓库</a></li><li><a href=#获取仓库最新-release-的版本>获取仓库最新 Release 的版本</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/git/>Git</a> / GitHub</p><h1 id=github>GitHub diff --git a/git/gitlab-intergrate-k8s/index.html b/git/gitlab-intergrate-k8s/index.html index d80e502d..4a451587 100644 --- a/git/gitlab-intergrate-k8s/index.html +++ b/git/gitlab-intergrate-k8s/index.html @@ -7,7 +7,7 @@ 获取 API URL: 运行以下命令得到输出值: kubectl cluster-info | grep 'Kubernetes master' | awk '/http/ {print $NF}' 获取 CA Certificate: -运行以下命令得到输出值:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/gitlab-intergrate-k8s/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Git / Gitlab 添加 K8s 集群 +运行以下命令得到输出值:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/gitlab-intergrate-k8s/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Git / Gitlab 添加 K8s 集群 Gitlab 添加 K8s 集群 # 本文介绍如何在 Gitlab 项目中添加 K8s 集群,以便使用 K8s 集群部署 gitlab-runner 帮我们运行 gitlab 的 CI/CD。 参考官方文档: https://docs.gitlab.com/ee/user/project/clusters/add_remove_clusters.html#add-existing-cluster 操作步骤 # 找到添加位置: @@ -16,9 +16,9 @@ 获取 API URL: 运行以下命令得到输出值: kubectl cluster-info | grep 'Kubernetes master' | awk '/http/ {print $NF}' 获取 CA Certificate: -运行以下命令得到输出值:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Gitlab Intergrate K8s | 🍁 秋河落叶</title> +运行以下命令得到输出值:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Gitlab Intergrate K8s | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/git/gitlab-intergrate-k8s/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Gitlab Intergrate K8s</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#操作步骤>操作步骤</a></li><li><a href=#踩坑记录>踩坑记录</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/git/>Git</a> / Gitlab 添加 K8s 集群</p><h1 id=gitlab-添加-k8s-集群>Gitlab 添加 K8s 集群 diff --git a/git/gitlab-upgrade-cross-version/index.html b/git/gitlab-upgrade-cross-version/index.html index a6ae6732..e510c712 100644 --- a/git/gitlab-upgrade-cross-version/index.html +++ b/git/gitlab-upgrade-cross-version/index.html @@ -5,16 +5,16 @@ 官方推荐的升级路线文档: https://docs.gitlab.com/ee/policy/maintenance.html#upgrade-recommendations 目的 # 实现 gitlab 版本:11.2.3 到 13.0.0 版本的升级,我选择的升级路线是:11.2.3 => 11.11.8 => 12.0.12 => 12.10.6 => 13.0.0 => 13.1.2 我当前创建 gitlab 容器的脚本如下: -sudo docker run --detach \ --hostname gitlab.example.com \ --publish 8443:443 --publish 8080:80 --publish 8022:22 \ --name gitlab \ --restart always \ --volume /home/ubuntu/Apps/gitlab/etc/gitlab:/etc/gitlab \ --volume /home/ubuntu/Apps/gitlab/var/log/gitlab/logs:/var/log/gitlab \ --volume /home/ubuntu/Apps/gitlab/var/opt/gitlab:/var/opt/gitlab \ gitlab/gitlab-ce:11."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/gitlab-upgrade-cross-version/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Git / Gitlab 跨版本升级 +sudo docker run --detach \ --hostname gitlab.example.com \ --publish 8443:443 --publish 8080:80 --publish 8022:22 \ --name gitlab \ --restart always \ --volume /home/ubuntu/Apps/gitlab/etc/gitlab:/etc/gitlab \ --volume /home/ubuntu/Apps/gitlab/var/log/gitlab/logs:/var/log/gitlab \ --volume /home/ubuntu/Apps/gitlab/var/opt/gitlab:/var/opt/gitlab \ gitlab/gitlab-ce:11."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/gitlab-upgrade-cross-version/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Git / Gitlab 跨版本升级 Gitlab 跨版本升级 # 本文记录 Gitlab 跨版本升级的具体操作过程。 按照官方的说法,gitlab 允许小版本直接升级,大版本需要阶段升级。 跨版本升级示例:11.0.x -> 11.11.x -> 12.0.x -> 12.10.x -> 13.0.x。 官方推荐的升级路线文档: https://docs.gitlab.com/ee/policy/maintenance.html#upgrade-recommendations 目的 # 实现 gitlab 版本:11.2.3 到 13.0.0 版本的升级,我选择的升级路线是:11.2.3 => 11.11.8 => 12.0.12 => 12.10.6 => 13.0.0 => 13.1.2 我当前创建 gitlab 容器的脚本如下: -sudo docker run --detach \ --hostname gitlab.example.com \ --publish 8443:443 --publish 8080:80 --publish 8022:22 \ --name gitlab \ --restart always \ --volume /home/ubuntu/Apps/gitlab/etc/gitlab:/etc/gitlab \ --volume /home/ubuntu/Apps/gitlab/var/log/gitlab/logs:/var/log/gitlab \ --volume /home/ubuntu/Apps/gitlab/var/opt/gitlab:/var/opt/gitlab \ gitlab/gitlab-ce:11."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Gitlab Upgrade Cross Version | 🍁 秋河落叶</title> +sudo docker run --detach \ --hostname gitlab.example.com \ --publish 8443:443 --publish 8080:80 --publish 8022:22 \ --name gitlab \ --restart always \ --volume /home/ubuntu/Apps/gitlab/etc/gitlab:/etc/gitlab \ --volume /home/ubuntu/Apps/gitlab/var/log/gitlab/logs:/var/log/gitlab \ --volume /home/ubuntu/Apps/gitlab/var/opt/gitlab:/var/opt/gitlab \ gitlab/gitlab-ce:11."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Gitlab Upgrade Cross Version | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/git/gitlab-upgrade-cross-version/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Gitlab Upgrade Cross Version</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#目的>目的</a></li><li><a href=#操作步骤>操作步骤</a></li><li><a href=#gitlab-备份>Gitlab 备份</a></li><li><a href=#gitlab-还原>Gitlab 还原</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/git/>Git</a> / Gitlab 跨版本升级</p><h1 id=gitlab-跨版本升级>Gitlab 跨版本升级 diff --git a/git/index.html b/git/index.html index 2bd36e11..2bfdd559 100644 --- a/git/index.html +++ b/git/index.html @@ -8,7 +8,7 @@ Gitlab 添加 K8s 集群 Gitlab 跨版本升级 多 GitHub 账号管理 -搭建最简单的 git 仓库服务"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Git +搭建最简单的 git 仓库服务"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Git Git # Git 常用 使用 git-secret 保护仓库敏感数据 Github Action 使用最佳实践 @@ -18,9 +18,9 @@ Gitlab 添加 K8s 集群 Gitlab 跨版本升级 多 GitHub 账号管理 -搭建最简单的 git 仓库服务"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Git | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/git/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/git/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/ class=active>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +搭建最简单的 git 仓库服务"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Git | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/git/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/git/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/ class=active>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Git</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / Git</p><h1 id=git>Git <a class=anchor href=#git>#</a></h1><p><a href=/git/common-usage/>Git 常用</a></p><p><a href=/git/git-secret/>使用 git-secret 保护仓库敏感数据</a></p><p><a href=/git/github-action-best-practice/>Github Action 使用最佳实践</a></p><p><a href=/git/github-host-helm-chart/>使用 GitHub 托管 helm-chart 仓库</a></p><p><a href=/git/github-hosting-helm-reop/>GitHub 托管 helm-chart 仓库</a></p><p><a href=/git/github/>GitHub</a></p><p><a href=/git/gitlab-intergrate-k8s/>Gitlab 添加 K8s 集群</a></p><p><a href=/git/gitlab-upgrade-cross-version/>Gitlab 跨版本升级</a></p><p><a href=/git/multi-github-account-management/>多 GitHub 账号管理</a></p><p><a href=/git/simplest-git-server/>搭建最简单的 git 仓库服务</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/git/index.xml b/git/index.xml index 3d8ef7bd..dc801ae3 100644 --- a/git/index.xml +++ b/git/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/git/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/git/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/git/common-usage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/git/common-usage/</guid><description>🏠 首页 / Git / Git 常用 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/git/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/git/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/git/common-usage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/git/common-usage/</guid><description>🏠 首页 / Git / Git 常用 Git 常用 # 本篇主要介绍 Git 的常用命令,包括 Git 的基本配置、创建仓库、添加文件、提交文件、查看状态、查看提交历史、撤销修改、删除文件、分支管理、远程仓库等。 Git 基本配置 # 配置 SSH 密钥 # 提交代码到远程仓库时,需要使用 SSH 密钥进行身份验证,因此需要先配置 SSH 密钥。 # 生成 SSH 密钥 ssh-keygen -t rsa -C poneding@gmail.com # 查看 SSH 密钥,复制到 GitHub/GitLab 等 SSH Keys 中 cat ~/.ssh/id_rsa.pub 添加 .ssh/config 文件,配置 SSH 密钥的别名,方便管理多个 SSH 密钥。 diff --git a/git/multi-github-account-management/index.html b/git/multi-github-account-management/index.html index 78582fe5..5cac5845 100644 --- a/git/multi-github-account-management/index.html +++ b/git/multi-github-account-management/index.html @@ -4,15 +4,15 @@ 请确保你的 git 版本最低为 2.13 ~/.gitconfig [user] name = poneding email = poneding@gmail.com [includeIf "gitdir:~/src/workspace/"] path = ~/src/workspace/.gitconfig [url "git@github-workspace"] insteadOf = git@github.com [pull] rebase = false [init] defaultBranch = master [core] excludesfile = ~/.gitignore_global ~/src/workspace/.gitconfig -[user] name = dingpeng24001 email = dingpeng24001@talkweb.com.cn [url "git@github-workspace"] insteadOf = git@github.com [pull] rebase = false [init] defaultBranch = master [core] excludesfile = ~/.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/multi-github-account-management/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Git / 多 GitHub 账号管理 +[user] name = dingpeng24001 email = dingpeng24001@talkweb.com.cn [url "git@github-workspace"] insteadOf = git@github.com [pull] rebase = false [init] defaultBranch = master [core] excludesfile = ~/.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/multi-github-account-management/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Git / 多 GitHub 账号管理 多 GitHub 账号管理 # 实际开发工作中,你有可能多个 GitHub 账号:个人开发账号,工作开发账号。 在仓库代码管理的过程中你需要重复的使用 git config user.* 来切换代码提交账号,很是麻烦。以下方案可以帮你解决你的烦恼。 请确保你的 git 版本最低为 2.13 ~/.gitconfig [user] name = poneding email = poneding@gmail.com [includeIf "gitdir:~/src/workspace/"] path = ~/src/workspace/.gitconfig [url "git@github-workspace"] insteadOf = git@github.com [pull] rebase = false [init] defaultBranch = master [core] excludesfile = ~/.gitignore_global ~/src/workspace/.gitconfig -[user] name = dingpeng24001 email = dingpeng24001@talkweb.com.cn [url "git@github-workspace"] insteadOf = git@github.com [pull] rebase = false [init] defaultBranch = master [core] excludesfile = ~/.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Multi Github Account Management | 🍁 秋河落叶</title> +[user] name = dingpeng24001 email = dingpeng24001@talkweb.com.cn [url "git@github-workspace"] insteadOf = git@github.com [pull] rebase = false [init] defaultBranch = master [core] excludesfile = ~/.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Multi Github Account Management | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/git/multi-github-account-management/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Multi Github Account Management</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/git/>Git</a> / 多 GitHub 账号管理</p><h1 id=多-github-账号管理>多 GitHub 账号管理 diff --git a/git/simplest-git-server/index.html b/git/simplest-git-server/index.html index 6ac3e0a3..12b6a130 100644 --- a/git/simplest-git-server/index.html +++ b/git/simplest-git-server/index.html @@ -2,13 +2,13 @@ 搭建最简单的 git 仓库服务 # 远端 # 创建仓库服务目录: git init --bare git-server-demo.git 其实也可以直接在终端创建,但是你首先要可以能够通过 ssh 的方式连接远端,例如远端 IP 是 192.168.10.24 ssh root@192.168.10.24 git init --bare git-server-demo.git 执行完命令之后,将在远端目标目录下生成 git-server-demo 目录,子目录结构如下: -tree git-server-demo.git git-server-demo.git ├── branches ├── config ├── description ├── HEAD ├── hooks │ ├── applypatch-msg.sample │ ├── commit-msg.sample │ ├── fsmonitor-watchman.sample │ ├── post-update.sample │ ├── pre-applypatch.sample │ ├── pre-commit.sample │ ├── pre-merge-commit.sample │ ├── prepare-commit-msg."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/simplest-git-server/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Git / 搭建最简单的 git 仓库服务 +tree git-server-demo.git git-server-demo.git ├── branches ├── config ├── description ├── HEAD ├── hooks │ ├── applypatch-msg.sample │ ├── commit-msg.sample │ ├── fsmonitor-watchman.sample │ ├── post-update.sample │ ├── pre-applypatch.sample │ ├── pre-commit.sample │ ├── pre-merge-commit.sample │ ├── prepare-commit-msg."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/git/simplest-git-server/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Git / 搭建最简单的 git 仓库服务 搭建最简单的 git 仓库服务 # 远端 # 创建仓库服务目录: git init --bare git-server-demo.git 其实也可以直接在终端创建,但是你首先要可以能够通过 ssh 的方式连接远端,例如远端 IP 是 192.168.10.24 ssh root@192.168.10.24 git init --bare git-server-demo.git 执行完命令之后,将在远端目标目录下生成 git-server-demo 目录,子目录结构如下: -tree git-server-demo.git git-server-demo.git ├── branches ├── config ├── description ├── HEAD ├── hooks │ ├── applypatch-msg.sample │ ├── commit-msg.sample │ ├── fsmonitor-watchman.sample │ ├── post-update.sample │ ├── pre-applypatch.sample │ ├── pre-commit.sample │ ├── pre-merge-commit.sample │ ├── prepare-commit-msg."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Simplest Git Server | 🍁 秋河落叶</title> +tree git-server-demo.git git-server-demo.git ├── branches ├── config ├── description ├── HEAD ├── hooks │ ├── applypatch-msg.sample │ ├── commit-msg.sample │ ├── fsmonitor-watchman.sample │ ├── post-update.sample │ ├── pre-applypatch.sample │ ├── pre-commit.sample │ ├── pre-merge-commit.sample │ ├── prepare-commit-msg."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="git"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Simplest Git Server | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/git/simplest-git-server/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Simplest Git Server</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#远端>远端</a></li><li><a href=#终端>终端</a></li><li><a href=#剩余就是常规-git-步骤了>剩余就是常规 git 步骤了。</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/git/>Git</a> / 搭建最简单的 git 仓库服务</p><h1 id=搭建最简单的-git-仓库服务>搭建最简单的 git 仓库服务 diff --git a/go/dev-env-config/index.html b/go/dev-env-config/index.html index 6248cd92..581bb2f5 100644 --- a/go/dev-env-config/index.html +++ b/go/dev-env-config/index.html @@ -2,13 +2,13 @@ Go 开发环境配置 # cobra-cli # 安装: go install github.com/spf13/cobra-cli@latest 自动补全: cobra-cli completion zsh > .zfunc/_cobra-cli 在 .zshrc 文件中添加内容(如果已添加,则忽略): -fpath+=~/.zfunc autoload -Uz compinit && compinit » Golang 函数可选参数模式"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/dev-env-config/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / Go 开发环境配置 +fpath+=~/.zfunc autoload -Uz compinit && compinit » Golang 函数可选参数模式"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/dev-env-config/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / Go 开发环境配置 Go 开发环境配置 # cobra-cli # 安装: go install github.com/spf13/cobra-cli@latest 自动补全: cobra-cli completion zsh > .zfunc/_cobra-cli 在 .zshrc 文件中添加内容(如果已添加,则忽略): -fpath+=~/.zfunc autoload -Uz compinit && compinit » Golang 函数可选参数模式"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Dev Env Config | 🍁 秋河落叶</title> +fpath+=~/.zfunc autoload -Uz compinit && compinit » Golang 函数可选参数模式"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Dev Env Config | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/dev-env-config/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Dev Env Config</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#cobra-cli>cobra-cli</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Go 开发环境配置</p><h1 id=go-开发环境配置>Go 开发环境配置 diff --git a/go/function-optional-pattern/index.html b/go/function-optional-pattern/index.html index bf393853..84a9eb9d 100644 --- a/go/function-optional-pattern/index.html +++ b/go/function-optional-pattern/index.html @@ -1,8 +1,8 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Golang 编程 / Golang 函数可选参数模式 -Golang 函数可选参数模式 # 函数可选参数模式 # type Server struct { Addr string Timeout time.Duration } type Option func(*Server) func newServer(addr string, options ...Option) (*Server, error) { s := &Server{ Addr: addr, } for _, opt := range options { opt(s) } // ... return s, nil } func WithTimeout(timeout time.Duration) Option { return func(s *Server) { s.Timeout = timeout } } 通用函数可选参数模式 # type BasicService struct { redisClient string } type ServiceOption func(*BasicService) func WithRedisClient(redisClient string) ServiceOption { return func(s *BasicService) { s."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/function-optional-pattern/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / Golang 函数可选参数模式 -Golang 函数可选参数模式 # 函数可选参数模式 # type Server struct { Addr string Timeout time.Duration } type Option func(*Server) func newServer(addr string, options ...Option) (*Server, error) { s := &Server{ Addr: addr, } for _, opt := range options { opt(s) } // ... return s, nil } func WithTimeout(timeout time.Duration) Option { return func(s *Server) { s.Timeout = timeout } } 通用函数可选参数模式 # type BasicService struct { redisClient string } type ServiceOption func(*BasicService) func WithRedisClient(redisClient string) ServiceOption { return func(s *BasicService) { s."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Function Optional Pattern | 🍁 秋河落叶</title> +Golang 函数可选参数模式 # 函数可选参数模式 # type Server struct { Addr string Timeout time.Duration } type Option func(*Server) func newServer(addr string, options ...Option) (*Server, error) { s := &Server{ Addr: addr, } for _, opt := range options { opt(s) } // ... return s, nil } func WithTimeout(timeout time.Duration) Option { return func(s *Server) { s.Timeout = timeout } } 通用函数可选参数模式 # type BasicService struct { redisClient string } type ServiceOption func(*BasicService) func WithRedisClient(redisClient string) ServiceOption { return func(s *BasicService) { s."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/function-optional-pattern/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / Golang 函数可选参数模式 +Golang 函数可选参数模式 # 函数可选参数模式 # type Server struct { Addr string Timeout time.Duration } type Option func(*Server) func newServer(addr string, options ...Option) (*Server, error) { s := &Server{ Addr: addr, } for _, opt := range options { opt(s) } // ... return s, nil } func WithTimeout(timeout time.Duration) Option { return func(s *Server) { s.Timeout = timeout } } 通用函数可选参数模式 # type BasicService struct { redisClient string } type ServiceOption func(*BasicService) func WithRedisClient(redisClient string) ServiceOption { return func(s *BasicService) { s."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Function Optional Pattern | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/function-optional-pattern/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Function Optional Pattern</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#函数可选参数模式>函数可选参数模式</a></li><li><a href=#通用函数可选参数模式>通用函数可选参数模式</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Golang 函数可选参数模式</p><h1 id=golang-函数可选参数模式>Golang 函数可选参数模式 diff --git a/go/go-cert-management/index.html b/go/go-cert-management/index.html index 9fb9f342..87c3eeb2 100644 --- a/go/go-cert-management/index.html +++ b/go/go-cert-management/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / Golang 编程 / Golang 密钥对、数字签名和证书管理 Golang 密钥对、数字签名和证书管理 # Golang 实现密钥对生成 相当于使用 openssl 生成私钥和公钥: openssl genrsa -out pri.key 2048 openssl rsa -in pri.key -pubout -out pub.key package main import ( "crypto/rand" "crypto/rsa" ) func GenerateKeyPair() (*rsa.PrivateKey, *rsa.PublicKey, error) { prikey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { return nil, nil, err } return prikey, &prikey.PublicKey, nil } 实现加密和解密 加密解密:公钥加密,私钥解密 -package main import ( "crypto/rand" "crypto/rsa" ) func Encrypt(data []byte, publicKey *rsa.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-cert-management/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 密钥对、数字签名和证书管理 +package main import ( "crypto/rand" "crypto/rsa" ) func Encrypt(data []byte, publicKey *rsa.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-cert-management/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 密钥对、数字签名和证书管理 Golang 密钥对、数字签名和证书管理 # Golang 实现密钥对生成 相当于使用 openssl 生成私钥和公钥: openssl genrsa -out pri.key 2048 openssl rsa -in pri.key -pubout -out pub.key package main import ( "crypto/rand" "crypto/rsa" ) func GenerateKeyPair() (*rsa.PrivateKey, *rsa.PublicKey, error) { prikey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { return nil, nil, err } return prikey, &prikey.PublicKey, nil } 实现加密和解密 加密解密:公钥加密,私钥解密 -package main import ( "crypto/rand" "crypto/rsa" ) func Encrypt(data []byte, publicKey *rsa.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Cert Management | 🍁 秋河落叶</title> +package main import ( "crypto/rand" "crypto/rsa" ) func Encrypt(data []byte, publicKey *rsa.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Cert Management | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/go-cert-management/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Go Cert Management</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Golang 密钥对、数字签名和证书管理</p><h1 id=golang-密钥对数字签名和证书管理>Golang 密钥对、数字签名和证书管理 diff --git a/go/go-cross-complie/index.html b/go/go-cross-complie/index.html index 96339391..6cc2dc13 100644 --- a/go/go-cross-complie/index.html +++ b/go/go-cross-complie/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / Golang 编程 / Golang 不同平台架构编译 Golang 不同平台架构编译 # 在 MacOS 平台编译成 Windows、Linux 可执行文件: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go 在 Windows 平台编译成 Linux、MacOS 可执行文件: -$env:GOOS = "linux";$env:CGO_ENABLED = "0";$env:GOARCH = "amd64";go build carbon/carbon.go $env:GOOS = "linux";$env:CGO_ENABLED = "0";$env:GOARCH = "arm64";go build carbon/carbon.go $env:GOOS = "darwin";$env:CGO_ENABLED = "0";$env:GOARCH = "amd64";go build carbon/carbon.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-cross-complie/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 不同平台架构编译 +$env:GOOS = "linux";$env:CGO_ENABLED = "0";$env:GOARCH = "amd64";go build carbon/carbon.go $env:GOOS = "linux";$env:CGO_ENABLED = "0";$env:GOARCH = "arm64";go build carbon/carbon.go $env:GOOS = "darwin";$env:CGO_ENABLED = "0";$env:GOARCH = "amd64";go build carbon/carbon.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-cross-complie/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 不同平台架构编译 Golang 不同平台架构编译 # 在 MacOS 平台编译成 Windows、Linux 可执行文件: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go 在 Windows 平台编译成 Linux、MacOS 可执行文件: -$env:GOOS = "linux";$env:CGO_ENABLED = "0";$env:GOARCH = "amd64";go build carbon/carbon.go $env:GOOS = "linux";$env:CGO_ENABLED = "0";$env:GOARCH = "arm64";go build carbon/carbon.go $env:GOOS = "darwin";$env:CGO_ENABLED = "0";$env:GOARCH = "amd64";go build carbon/carbon.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Cross Complie | 🍁 秋河落叶</title> +$env:GOOS = "linux";$env:CGO_ENABLED = "0";$env:GOARCH = "amd64";go build carbon/carbon.go $env:GOOS = "linux";$env:CGO_ENABLED = "0";$env:GOARCH = "arm64";go build carbon/carbon.go $env:GOOS = "darwin";$env:CGO_ENABLED = "0";$env:GOARCH = "amd64";go build carbon/carbon.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Cross Complie | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/go-cross-complie/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Go Cross Complie</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Golang 不同平台架构编译</p><h1 id=golang-不同平台架构编译>Golang 不同平台架构编译 diff --git a/go/go-gen-cert/index.html b/go/go-gen-cert/index.html index 86bec7eb..9751cca7 100644 --- a/go/go-gen-cert/index.html +++ b/go/go-gen-cert/index.html @@ -1,8 +1,8 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / Golang 编程 / Golang 生成证书 -Golang 生成证书 # 代码实现 # package certutil import ( "bytes" "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" "encoding/pem" "math/big" "net" "time" ) // CA ca type CA struct { caInfo *x509.Certificate caPrivKey *rsa.PrivateKey caPem, caKeyPem []byte } // GetCAPem get ca pem bytes func (c *CA) GetCAPem() ([]byte, error) { if c.caPem == nil { // create the CA caBytes, err := x509.CreateCertificate(rand.Reader, c.caInfo, c.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-gen-cert/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 生成证书 -Golang 生成证书 # 代码实现 # package certutil import ( "bytes" "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" "encoding/pem" "math/big" "net" "time" ) // CA ca type CA struct { caInfo *x509.Certificate caPrivKey *rsa.PrivateKey caPem, caKeyPem []byte } // GetCAPem get ca pem bytes func (c *CA) GetCAPem() ([]byte, error) { if c.caPem == nil { // create the CA caBytes, err := x509.CreateCertificate(rand.Reader, c.caInfo, c.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Gen Cert | 🍁 秋河落叶</title> +Golang 生成证书 # 代码实现 # package certutil import ( "bytes" "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" "encoding/pem" "math/big" "net" "time" ) // CA ca type CA struct { caInfo *x509.Certificate caPrivKey *rsa.PrivateKey caPem, caKeyPem []byte } // GetCAPem get ca pem bytes func (c *CA) GetCAPem() ([]byte, error) { if c.caPem == nil { // create the CA caBytes, err := x509.CreateCertificate(rand.Reader, c.caInfo, c.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-gen-cert/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 生成证书 +Golang 生成证书 # 代码实现 # package certutil import ( "bytes" "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" "encoding/pem" "math/big" "net" "time" ) // CA ca type CA struct { caInfo *x509.Certificate caPrivKey *rsa.PrivateKey caPem, caKeyPem []byte } // GetCAPem get ca pem bytes func (c *CA) GetCAPem() ([]byte, error) { if c.caPem == nil { // create the CA caBytes, err := x509.CreateCertificate(rand.Reader, c.caInfo, c.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Gen Cert | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/go-gen-cert/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Go Gen Cert</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#代码实现>代码实现</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Golang 生成证书</p><h1 id=golang-生成证书>Golang 生成证书 diff --git a/go/go-linkname/index.html b/go/go-linkname/index.html index 1e6ac1e6..c4987b09 100644 --- a/go/go-linkname/index.html +++ b/go/go-linkname/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Golang 编程 / go:linkname 指令 go:linkname 指令 # 背景 # 阅读 Golang 源码时,发现在标准库 time.Sleep 方法没有没有方法体。如下: // Sleep pauses the current goroutine for at least the duration d. // A negative or zero duration causes Sleep to return immediately. func Sleep(d Duration) 当我们直接在代码中写一个空方法 func Foo(),编译时会报错:missing function body。所以标准库使用了什么魔法来实现空方法的呢? 进一步研究,得知 time.Sleep 运行时实际调用了 runtime.timeSleep方法,如下: -// timeSleep puts the current goroutine to sleep for at least ns nanoseconds. // //go:linkname timeSleep time."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-linkname/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / go:linkname 指令 +// timeSleep puts the current goroutine to sleep for at least ns nanoseconds. // //go:linkname timeSleep time."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-linkname/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / go:linkname 指令 go:linkname 指令 # 背景 # 阅读 Golang 源码时,发现在标准库 time.Sleep 方法没有没有方法体。如下: // Sleep pauses the current goroutine for at least the duration d. // A negative or zero duration causes Sleep to return immediately. func Sleep(d Duration) 当我们直接在代码中写一个空方法 func Foo(),编译时会报错:missing function body。所以标准库使用了什么魔法来实现空方法的呢? 进一步研究,得知 time.Sleep 运行时实际调用了 runtime.timeSleep方法,如下: -// timeSleep puts the current goroutine to sleep for at least ns nanoseconds. // //go:linkname timeSleep time."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Linkname | 🍁 秋河落叶</title> +// timeSleep puts the current goroutine to sleep for at least ns nanoseconds. // //go:linkname timeSleep time."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Linkname | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/go-linkname/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Go Linkname</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#背景>背景</a></li><li><a href=#介绍>介绍</a></li><li><a href=#示例>示例</a></li><li><a href=#拓展>拓展</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / go:linkname 指令</p><h1 id=golinkname-指令>go:linkname 指令 diff --git a/go/go-list-to-tree/index.html b/go/go-list-to-tree/index.html index 64ec3653..65021a69 100644 --- a/go/go-list-to-tree/index.html +++ b/go/go-list-to-tree/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / Golang 编程 / Golang 列表转树 Golang 列表转树 # 场景介绍 # 从数据库获取到了菜单列表数据,这些菜单数据通过字段 ParentID 表示父子层级关系,现在需要将菜单列表数据转成树状的实例对象。 数据库取出的初始数据: -raw := []Menu{ {Name: "一级菜单 1", ID: 1, PID: 0}, {Name: "一级菜单 2", ID: 2, PID: 0}, {Name: "一级菜单 3", ID: 3, PID: 0}, {Name: "二级菜单 1-1", ID: 11, PID: 1}, {Name: "二级菜单 1-2", ID: 12, PID: 1}, {Name: "二级菜单 1-3", ID: 13, PID: 1}, {Name: "二级菜单 2-1", ID: 21, PID: 2}, {Name: "二级菜单 2-2", ID: 22, PID: 2}, {Name: "二级菜单 2-3", ID: 23, PID: 2}, } 需要得到的目标数据:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-list-to-tree/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 列表转树 +raw := []Menu{ {Name: "一级菜单 1", ID: 1, PID: 0}, {Name: "一级菜单 2", ID: 2, PID: 0}, {Name: "一级菜单 3", ID: 3, PID: 0}, {Name: "二级菜单 1-1", ID: 11, PID: 1}, {Name: "二级菜单 1-2", ID: 12, PID: 1}, {Name: "二级菜单 1-3", ID: 13, PID: 1}, {Name: "二级菜单 2-1", ID: 21, PID: 2}, {Name: "二级菜单 2-2", ID: 22, PID: 2}, {Name: "二级菜单 2-3", ID: 23, PID: 2}, } 需要得到的目标数据:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-list-to-tree/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 列表转树 Golang 列表转树 # 场景介绍 # 从数据库获取到了菜单列表数据,这些菜单数据通过字段 ParentID 表示父子层级关系,现在需要将菜单列表数据转成树状的实例对象。 数据库取出的初始数据: -raw := []Menu{ {Name: "一级菜单 1", ID: 1, PID: 0}, {Name: "一级菜单 2", ID: 2, PID: 0}, {Name: "一级菜单 3", ID: 3, PID: 0}, {Name: "二级菜单 1-1", ID: 11, PID: 1}, {Name: "二级菜单 1-2", ID: 12, PID: 1}, {Name: "二级菜单 1-3", ID: 13, PID: 1}, {Name: "二级菜单 2-1", ID: 21, PID: 2}, {Name: "二级菜单 2-2", ID: 22, PID: 2}, {Name: "二级菜单 2-3", ID: 23, PID: 2}, } 需要得到的目标数据:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go List to Tree | 🍁 秋河落叶</title> +raw := []Menu{ {Name: "一级菜单 1", ID: 1, PID: 0}, {Name: "一级菜单 2", ID: 2, PID: 0}, {Name: "一级菜单 3", ID: 3, PID: 0}, {Name: "二级菜单 1-1", ID: 11, PID: 1}, {Name: "二级菜单 1-2", ID: 12, PID: 1}, {Name: "二级菜单 1-3", ID: 13, PID: 1}, {Name: "二级菜单 2-1", ID: 21, PID: 2}, {Name: "二级菜单 2-2", ID: 22, PID: 2}, {Name: "二级菜单 2-3", ID: 23, PID: 2}, } 需要得到的目标数据:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go List to Tree | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/go-list-to-tree/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Go List to Tree</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#场景介绍>场景介绍</a></li><li><a href=#代码实现>代码实现</a></li><li><a href=#注意事项>注意事项</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Golang 列表转树</p><h1 id=golang-列表转树>Golang 列表转树 diff --git a/go/go-mtls/index.html b/go/go-mtls/index.html index bff079e4..ad96c576 100644 --- a/go/go-mtls/index.html +++ b/go/go-mtls/index.html @@ -4,15 +4,15 @@ 使用双向TLS连接的主要目的是当服务器应该只接受来自有限的允许的客户端的 TLS 连接时。例如,一个组织希望将服务器的 TLS 连接限制为只来自该组织的合法合作伙伴或客户。显然,为客户端添加IP白名单不是一个好的安全实践,因为IP可能被欺骗。 为了简化 mTLS 握手的过程,我们这样简单梳理: 客户端发送访问服务器上受保护信息的请求; 服务器向客户端提供公钥证书; 客户端通过使用 CA 的公钥来验证服务器公钥证书的数字签名,以验证服务器的证书; 如果步骤 3 成功,客户机将其客户端公钥证书发送到服务器; 服务器使用步骤 3 中相同的方法验证客户机的证书; 如果成功,服务器将对受保护信息的访问权授予客户机。 代码实现 # 需要实现客户端验证服务端的公钥证书,服务端验证客户端的公钥证书。 -生成证书 # echo '清理并生成目录' OUT=./certs DAYS=365 RSALEN=2048 CN=poneding rm -rf ${OUT}/* mkdir ${OUT} >> /dev/null 2>&1 cd ${OUT} echo '生成CA的私钥' openssl genrsa -out ca.key ${RSALEN} >> /dev/null 2>&1 echo '生成CA的签名证书' openssl req -new \ -x509 \ -key ca."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-mtls/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / Golang 实现双向认证 +生成证书 # echo '清理并生成目录' OUT=./certs DAYS=365 RSALEN=2048 CN=poneding rm -rf ${OUT}/* mkdir ${OUT} >> /dev/null 2>&1 cd ${OUT} echo '生成CA的私钥' openssl genrsa -out ca.key ${RSALEN} >> /dev/null 2>&1 echo '生成CA的签名证书' openssl req -new \ -x509 \ -key ca."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-mtls/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / Golang 实现双向认证 Golang 实现双向认证 # TLS # 传输层安全协议(TLS),在互联网上,通常是由服务器单向的向客户端提供证书,以证明其身份。 mTLS # 双向 TLS 认证,是指在客户端和服务器之间使用双行加密通道,mTLS 是云原生应用中常用的通信安全协议。 使用双向TLS连接的主要目的是当服务器应该只接受来自有限的允许的客户端的 TLS 连接时。例如,一个组织希望将服务器的 TLS 连接限制为只来自该组织的合法合作伙伴或客户。显然,为客户端添加IP白名单不是一个好的安全实践,因为IP可能被欺骗。 为了简化 mTLS 握手的过程,我们这样简单梳理: 客户端发送访问服务器上受保护信息的请求; 服务器向客户端提供公钥证书; 客户端通过使用 CA 的公钥来验证服务器公钥证书的数字签名,以验证服务器的证书; 如果步骤 3 成功,客户机将其客户端公钥证书发送到服务器; 服务器使用步骤 3 中相同的方法验证客户机的证书; 如果成功,服务器将对受保护信息的访问权授予客户机。 代码实现 # 需要实现客户端验证服务端的公钥证书,服务端验证客户端的公钥证书。 -生成证书 # echo '清理并生成目录' OUT=./certs DAYS=365 RSALEN=2048 CN=poneding rm -rf ${OUT}/* mkdir ${OUT} >> /dev/null 2>&1 cd ${OUT} echo '生成CA的私钥' openssl genrsa -out ca.key ${RSALEN} >> /dev/null 2>&1 echo '生成CA的签名证书' openssl req -new \ -x509 \ -key ca."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Mtls | 🍁 秋河落叶</title> +生成证书 # echo '清理并生成目录' OUT=./certs DAYS=365 RSALEN=2048 CN=poneding rm -rf ${OUT}/* mkdir ${OUT} >> /dev/null 2>&1 cd ${OUT} echo '生成CA的私钥' openssl genrsa -out ca.key ${RSALEN} >> /dev/null 2>&1 echo '生成CA的签名证书' openssl req -new \ -x509 \ -key ca."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Mtls | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/go-mtls/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Go Mtls</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#tls>TLS</a></li><li><a href=#mtls>mTLS</a></li><li><a href=#代码实现>代码实现</a><ul><li><a href=#生成证书>生成证书</a></li><li><a href=#服务端>服务端</a></li><li><a href=#客户端>客户端</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Golang 实现双向认证</p><h1 id=golang-实现双向认证>Golang 实现双向认证 diff --git a/go/go-publish-package-01/index.html b/go/go-publish-package-01/index.html index b3964baa..aa918a92 100644 --- a/go/go-publish-package-01/index.html +++ b/go/go-publish-package-01/index.html @@ -8,7 +8,7 @@ module 名称需要与 github 仓库一致,这样其他人才能通过 go get github.com/poneding/commmon-go 下载到你的类库。 4、编写 go 类库代码,例如:: hell/hello.go: -package hello import "fmt" func Say(name string) { fmt.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-publish-package-01/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 发布类库 - 1 +package hello import "fmt" func Say(name string) { fmt.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-publish-package-01/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 发布类库 - 1 Golang 发布类库 - 1 # 本页介绍如何在 Github 上发布我们自己的 Golang 类库。 1、创建 github 仓库托管 go 类库代码,例如 common-go:: 2、将仓库克隆至本地:: @@ -18,9 +18,9 @@ module 名称需要与 github 仓库一致,这样其他人才能通过 go get github.com/poneding/commmon-go 下载到你的类库。 4、编写 go 类库代码,例如:: hell/hello.go: -package hello import "fmt" func Say(name string) { fmt.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Publish Package 01 | 🍁 秋河落叶</title> +package hello import "fmt" func Say(name string) { fmt.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Publish Package 01 | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/go-publish-package-01/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Go Publish Package 01</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Golang 发布类库 - 1</p><h1 id=golang-发布类库---1>Golang 发布类库 - 1 diff --git a/go/go-publish-package-02/index.html b/go/go-publish-package-02/index.html index 5b42d8af..35a760f9 100644 --- a/go/go-publish-package-02/index.html +++ b/go/go-publish-package-02/index.html @@ -8,7 +8,7 @@ 1、切换至 v1 分支: git checkout v1 2、修改类库代码: hello/hello.go: -package hello import "fmt" func Say(name string) { fmt.Printf("Hello, %s\n", name) fmt.Println("common-go version: v1.0.1") } 3、提交代码并发布:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-publish-package-02/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 发布类库 - 2 +package hello import "fmt" func Say(name string) { fmt.Printf("Hello, %s\n", name) fmt.Println("common-go version: v1.0.1") } 3、提交代码并发布:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-publish-package-02/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 发布类库 - 2 Golang 发布类库 - 2 # 本页介绍如何在 Github 上升级我们已发布的 Golang 类库。 Go 类库版本规则 # go 类库版本的规则:主版本号.次版本号.修订号,其中: 主版本号:类库进行了不可向下兼容的修改,例如功能重构,这时候主版本号往上追加; 次版本号:类库进行了可向下兼容的修改,例如新增功能,这时候次版本号往上追加; 修订号:类库进行了可向下兼容的修改(修改的规模更小),例如修复或优化功能,这时候修订好往上追加。 Go 类库发版示例 # 同样以 github.com/poneding/common-go 类库为示例。 @@ -18,9 +18,9 @@ 1、切换至 v1 分支: git checkout v1 2、修改类库代码: hello/hello.go: -package hello import "fmt" func Say(name string) { fmt.Printf("Hello, %s\n", name) fmt.Println("common-go version: v1.0.1") } 3、提交代码并发布:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Publish Package 02 | 🍁 秋河落叶</title> +package hello import "fmt" func Say(name string) { fmt.Printf("Hello, %s\n", name) fmt.Println("common-go version: v1.0.1") } 3、提交代码并发布:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Publish Package 02 | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/go-publish-package-02/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Go Publish Package 02</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#go-类库版本规则>Go 类库版本规则</a></li><li><a href=#go-类库发版示例>Go 类库发版示例</a><ul><li><a href=#小版本升级>小版本升级</a></li><li><a href=#大版本升级>大版本升级</a></li></ul></li><li><a href=#使用本地-go-类库>使用本地 go 类库</a></li><li><a href=#结束语>结束语</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Golang 发布类库 - 2</p><h1 id=golang-发布类库---2>Golang 发布类库 - 2 diff --git a/go/go-solid/index.html b/go/go-solid/index.html index e590afac..3f6c9a1b 100644 --- a/go/go-solid/index.html +++ b/go/go-solid/index.html @@ -5,16 +5,16 @@ 现在 Go 显然没有 classses - 相反,我们有更强大的组合概念 - 但是如果你能回顾一下 class 这个词的用法,我认为此时会有一定价值。 为什么一段代码只有一个改变的原因很重要?嗯,就像你自己的代码可能会改变一样令人沮丧,发现您的代码所依赖的代码在您脚下发生变化更痛苦。当你的代码必须改变时,它应该响应直接刺激作出改变,而不应该成为附带损害的受害者。 因此,具有单一责任的代码修改的原因最少。 -耦合和内聚 # 描述改变一个软件是多么容易或困难的两个词是:耦合和内聚。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-solid/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / Go 程序 SOLID 设计原则 +耦合和内聚 # 描述改变一个软件是多么容易或困难的两个词是:耦合和内聚。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-solid/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / Go 程序 SOLID 设计原则 Go 程序 SOLID 设计原则 # 可重用软件设计的五个原则,SOLID 原则: 单一职责原则(Single Responsibility Principle) 开放 / 封闭原则(Open / Closed Principle) 里氏替换原则(Liskov Substitution Principle) 接口隔离原则(Interface Segregation Principle) 依赖倒置原则(Dependency Inversion Principle) 单一职责原则 # SOLID 的第一个原则,S,是单一责任原则。 A class should have one, and only one, reason to change. – Robert C Martin 现在 Go 显然没有 classses - 相反,我们有更强大的组合概念 - 但是如果你能回顾一下 class 这个词的用法,我认为此时会有一定价值。 为什么一段代码只有一个改变的原因很重要?嗯,就像你自己的代码可能会改变一样令人沮丧,发现您的代码所依赖的代码在您脚下发生变化更痛苦。当你的代码必须改变时,它应该响应直接刺激作出改变,而不应该成为附带损害的受害者。 因此,具有单一责任的代码修改的原因最少。 -耦合和内聚 # 描述改变一个软件是多么容易或困难的两个词是:耦合和内聚。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Solid | 🍁 秋河落叶</title> +耦合和内聚 # 描述改变一个软件是多么容易或困难的两个词是:耦合和内聚。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Solid | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/go-solid/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Go Solid</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#单一职责原则>单一职责原则</a><ul><li><a href=#耦合和内聚>耦合和内聚</a></li><li><a href=#库名称的设计>库名称的设计</a></li><li><a href=#糟糕的库名称>糟糕的库名称</a></li><li><a href=#unix-设计理念>Unix 设计理念</a></li></ul></li><li><a href=#开放--封闭原则>开放 / 封闭原则</a></li><li><a href=#里氏替换原则>里氏替换原则</a><ul><li><a href=#interfaces>Interfaces</a></li><li><a href=#ioreader>io.Reader</a></li></ul></li><li><a href=#接口隔离原则>接口隔离原则</a></li><li><a href=#依赖倒置原则>依赖倒置原则</a></li><li><a href=#总结>总结</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Go 程序 SOLID 设计原则</p><h1 id=go-程序-solid-设计原则>Go 程序 SOLID 设计原则 diff --git a/go/go-stdlib/index.html b/go/go-stdlib/index.html index f992c291..27b7ec9f 100644 --- a/go/go-stdlib/index.html +++ b/go/go-stdlib/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / Golang 编程 / Golang 标准库 Golang 标准库 # fmt # 格式化打印 %v 原样输出 %T 打印类型 %t bool %s string %f float %d 10进制整数 %b 2进制整数 %o 8进制整数 %x 16进制整数 0-9,a-f %X 16进制整数 0-9,A-F %c char %p pointer %.2f float 保留两位 path # file := "./logs/2021-01-25/error.log" fileName := path.Base(file) # 返回文件名:error.log fileExt := path.Ext(file) # 返回文件后缀:.log fileDir := path.Dir(file) # 返回文件路径: ./logs/2021-01-25 os/exec # Golang语言有一个包叫做 os/exec,使用该包可以直接在程序中调用主机的命令,使用示例如下: -func OsExecUsage() error { fmt.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-stdlib/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 标准库 +func OsExecUsage() error { fmt.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-stdlib/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Golang 标准库 Golang 标准库 # fmt # 格式化打印 %v 原样输出 %T 打印类型 %t bool %s string %f float %d 10进制整数 %b 2进制整数 %o 8进制整数 %x 16进制整数 0-9,a-f %X 16进制整数 0-9,A-F %c char %p pointer %.2f float 保留两位 path # file := "./logs/2021-01-25/error.log" fileName := path.Base(file) # 返回文件名:error.log fileExt := path.Ext(file) # 返回文件后缀:.log fileDir := path.Dir(file) # 返回文件路径: ./logs/2021-01-25 os/exec # Golang语言有一个包叫做 os/exec,使用该包可以直接在程序中调用主机的命令,使用示例如下: -func OsExecUsage() error { fmt.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Stdlib | 🍁 秋河落叶</title> +func OsExecUsage() error { fmt.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Stdlib | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/go-stdlib/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Go Stdlib</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#fmt>fmt</a></li><li><a href=#path>path</a></li><li><a href=#osexec>os/exec</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Golang 标准库</p><h1 id=golang-标准库>Golang 标准库 diff --git a/go/go-testing/index.html b/go/go-testing/index.html index 1dd24e5e..1c6f0510 100644 --- a/go/go-testing/index.html +++ b/go/go-testing/index.html @@ -6,7 +6,7 @@ go list -f={{.XTestGoFiles}} . 包内测试:测试文件的包名称与被测包一致,可以访问被测包内所有成员,相当于白盒测试; 包外测试:测试文件的包名称与被测包不一致,一般在被测包名称后面添加 _test 后缀,只能访问被测包内公开成员,相当于黑盒测试。 « Golang 标准库 -» Golang"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-testing/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / testing +» Golang"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go-testing/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / testing testing # 命令 # 测试 go test -run=TestCompare -v . 运行测试,测试函数名称中仅包含 TestCompare 前缀。 列出包内测试文件 @@ -14,9 +14,9 @@ go list -f={{.XTestGoFiles}} . 包内测试:测试文件的包名称与被测包一致,可以访问被测包内所有成员,相当于白盒测试; 包外测试:测试文件的包名称与被测包不一致,一般在被测包名称后面添加 _test 后缀,只能访问被测包内公开成员,相当于黑盒测试。 « Golang 标准库 -» Golang"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Testing | 🍁 秋河落叶</title> +» Golang"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go Testing | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/go-testing/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Go Testing</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#命令>命令</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / testing</p><h1 id=testing>testing diff --git a/go/go/index.html b/go/go/index.html index 797d0e3a..ecac8243 100644 --- a/go/go/index.html +++ b/go/go/index.html @@ -9,7 +9,7 @@ 使用 close() 函数关闭: close(ch) 当你的程序不再需要往 channel 中发送数据时,可以关闭 channel。 如果往已经关闭的 channal 发送数据,程序发生异常。 -无缓冲 channel # 如果当前没有一个 goroutine 对无缓冲 channel 接收数据,那么无缓冲 channel 会阻止发送数据。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / Golang +无缓冲 channel # 如果当前没有一个 goroutine 对无缓冲 channel 接收数据,那么无缓冲 channel 会阻止发送数据。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/go/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / Golang Golang # 资料 # Go 安全指南 Go 语言编程规范 Golang channel # golang 实现并发是通过通信共享内存,channel 是 go 语言中goroutine 的通信管道,通过 channel 将值从一个 goroutine 发送到另一个 goroutine。 语法 # 创建 channel: 使用 make() 函数创建: @@ -20,9 +20,9 @@ 使用 close() 函数关闭: close(ch) 当你的程序不再需要往 channel 中发送数据时,可以关闭 channel。 如果往已经关闭的 channal 发送数据,程序发生异常。 -无缓冲 channel # 如果当前没有一个 goroutine 对无缓冲 channel 接收数据,那么无缓冲 channel 会阻止发送数据。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go | 🍁 秋河落叶</title> +无缓冲 channel # 如果当前没有一个 goroutine 对无缓冲 channel 接收数据,那么无缓冲 channel 会阻止发送数据。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Go | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/go/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Go</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#资料>资料</a></li><li><a href=#golang-channel>Golang channel</a><ul><li><a href=#语法>语法</a></li><li><a href=#无缓冲-channel>无缓冲 channel</a></li><li><a href=#有缓冲-channel>有缓冲 channel</a></li><li><a href=#无缓冲-channel-与有缓冲-channel的区别>无缓冲 channel 与有缓冲 channel的区别</a></li></ul></li><li><a href=#读取文件>读取文件</a><ul><li><a href=#一次性全读>一次性全读</a></li><li><a href=#按行读取>按行读取</a></li></ul></li><li><a href=#优雅退出>优雅退出</a><ul><li><a href=#不处理优雅退出>不处理优雅退出</a></li><li><a href=#优雅退出-1with-context>优雅退出 1(with context)</a></li><li><a href=#优雅退出-2without-context>优雅退出 2(without context)</a></li></ul></li><li><a href=#函数式选项模式>函数式选项模式</a></li><li><a href=#调用-api>调用 API</a><ul><li><a href=#get>Get</a></li><li><a href=#post>Post</a></li></ul></li><li><a href=#调用-jenkins-api>调用 Jenkins API</a></li><li><a href=#位运算>位运算</a></li><li><a href=#实现简易网络连接客户端>实现简易网络连接客户端</a></li><li><a href=#git>git</a></li><li><a href=#elasticsearch>elasticsearch</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Golang</p><h1 id=golang>Golang diff --git a/go/gopkg-errors/index.html b/go/gopkg-errors/index.html index ded43302..0b31dc9c 100644 --- a/go/gopkg-errors/index.html +++ b/go/gopkg-errors/index.html @@ -5,16 +5,16 @@ if err != nil { return err } 递归的向上传递错误,这种方式有一个缺陷:最终处理错误的位置无法获取错误的调用上下文信息。 errors 包以不破坏错误的原始值的方式向错误中的添加调用上下文信息。 获取包 # go get github.com/pkg/errors 错误添加上下文 # The errors.Wrap function returns a new error that adds context to the original error. For example -_, err := ioutil.ReadAll(r) if err !"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/gopkg-errors/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / gopkg-errors.md +_, err := ioutil.ReadAll(r) if err !"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/gopkg-errors/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 / gopkg-errors.md title: Go 包 - errors date: 2022-10-19T14:44:06+08:00 lastmod: 2022-11-03T03:32:31.646Z tags: Golang gopkg keywords: Golang gopkg errors weight: 1 errors 包为你的 Go 程序提供一种对程序员调试、查看日志更友好的错误处理方式。 Go 程序中传统的错误处理方法: if err != nil { return err } 递归的向上传递错误,这种方式有一个缺陷:最终处理错误的位置无法获取错误的调用上下文信息。 errors 包以不破坏错误的原始值的方式向错误中的添加调用上下文信息。 获取包 # go get github.com/pkg/errors 错误添加上下文 # The errors.Wrap function returns a new error that adds context to the original error. For example -_, err := ioutil.ReadAll(r) if err !"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Gopkg Errors | 🍁 秋河落叶</title> +_, err := ioutil.ReadAll(r) if err !"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Gopkg Errors | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/gopkg-errors/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Gopkg Errors</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#获取包>获取包</a></li><li><a href=#错误添加上下文>错误添加上下文</a></li><li><a href=#retrieving-the-cause-of-an-error>Retrieving the cause of an error</a></li><li><a href=#roadmap>Roadmap</a></li><li><a href=#contributing>Contributing</a></li><li><a href=#license>License</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / gopkg-errors.md</p><hr><p>title: Go 包 - errors diff --git a/go/goreleaser/index.html b/go/goreleaser/index.html index 49173872..4c57ecea 100644 --- a/go/goreleaser/index.html +++ b/go/goreleaser/index.html @@ -8,7 +8,7 @@ goreleaser build --single-target 配置 github token # token 必须至少包含 write:package 权限,才能上传到发布资源中。 从github生成token,写入文件: mkdir ~/.config/goreleaser vim ~/.config/goreleaser/github_token 或者直接在终端导入环境配置: -export GITHUB_TOKEN="YOUR_GITHUB_TOKEN" 为项目打上 tag # git tag v0.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/goreleaser/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Goreleaser +export GITHUB_TOKEN="YOUR_GITHUB_TOKEN" 为项目打上 tag # git tag v0.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/goreleaser/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Goreleaser Goreleaser # Go 程序项目的自动化发布工具,简单的发布命令帮助我们省去大量的重复工作。 安装 # MacOs: brew install goreleaser/tap/goreleaser 源码编译: @@ -18,9 +18,9 @@ goreleaser build --single-target 配置 github token # token 必须至少包含 write:package 权限,才能上传到发布资源中。 从github生成token,写入文件: mkdir ~/.config/goreleaser vim ~/.config/goreleaser/github_token 或者直接在终端导入环境配置: -export GITHUB_TOKEN="YOUR_GITHUB_TOKEN" 为项目打上 tag # git tag v0.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Goreleaser | 🍁 秋河落叶</title> +export GITHUB_TOKEN="YOUR_GITHUB_TOKEN" 为项目打上 tag # git tag v0.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Goreleaser | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/goreleaser/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Goreleaser</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装>安装</a></li><li><a href=#初始化>初始化</a><ul><li><a href=#验证-goreleaseryml>验证 .goreleaser.yml</a></li></ul></li><li><a href=#配置-github-token>配置 github token</a></li><li><a href=#为项目打上-tag>为项目打上 tag</a></li><li><a href=#执行-goreleaser>执行 goreleaser</a></li><li><a href=#dry-run>Dry run</a><ul><li><a href=#build-only-模式>Build only 模式</a></li><li><a href=#release-标识>Release 标识</a></li></ul></li><li><a href=#工作原理>工作原理</a></li><li><a href=#cgo>CGO</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Goreleaser</p><h1 id=goreleaser>Goreleaser diff --git a/go/index.html b/go/index.html index 778e3528..c4c72a9e 100644 --- a/go/index.html +++ b/go/index.html @@ -17,7 +17,7 @@ Goreleaser Mac M1 交叉编译 CGO pprof -使用 Go 生成 OpenSSH 兼容的 RSA 密钥对"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 +使用 Go 生成 OpenSSH 兼容的 RSA 密钥对"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Golang 编程 Golang 编程 # Go 开发环境配置 Golang 函数可选参数模式 Golang 密钥对、数字签名和证书管理 @@ -36,9 +36,9 @@ Goreleaser Mac M1 交叉编译 CGO pprof -使用 Go 生成 OpenSSH 兼容的 RSA 密钥对"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Go | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/go/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/ class=active>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +使用 Go 生成 OpenSSH 兼容的 RSA 密钥对"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Go | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/go/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/ class=active>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Go</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / Golang 编程</p><h1 id=golang-编程>Golang 编程 <a class=anchor href=#golang-%e7%bc%96%e7%a8%8b>#</a></h1><p><a href=/go/dev-env-config/>Go 开发环境配置</a></p><p><a href=/go/function-optional-pattern/>Golang 函数可选参数模式</a></p><p><a href=/go/go-cert-management/>Golang 密钥对、数字签名和证书管理</a></p><p><a href=/go/go-cross-complie/>Golang 不同平台架构编译</a></p><p><a href=/go/go-gen-cert/>Golang 生成证书</a></p><p><a href=/go/go-linkname/>go:linkname 指令</a></p><p><a href=/go/go-list-to-tree/>Golang 列表转树</a></p><p><a href=/go/go-mtls/>Golang 实现双向认证</a></p><p><a href=/go/go-publish-package-01/>Golang 发布类库 - 1</a></p><p><a href=/go/go-publish-package-02/>Golang 发布类库 - 2</a></p><p><a href=/go/go-solid/>Go 程序 SOLID 设计原则</a></p><p><a href=/go/go-stdlib/>Golang 标准库</a></p><p><a href=/go/go-testing/>testing</a></p><p><a href=/go/go/>Golang</a></p><p><a href=/go/gopkg-errors/>gopkg-errors.md</a></p><p><a href=/go/goreleaser/>Goreleaser</a></p><p><a href=/go/mac-appl-silicon-cross-compile-cgo/>Mac M1 交叉编译 CGO</a></p><p><a href=/go/pprof/>pprof</a></p><p><a href=/go/ssh-keygen-with-go/>使用 Go 生成 OpenSSH 兼容的 RSA 密钥对</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/go/index.xml b/go/index.xml index 20e05665..6751c299 100644 --- a/go/index.xml +++ b/go/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/go/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/go/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/go/dev-env-config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/go/dev-env-config/</guid><description>🏠 首页 / Golang 编程 / Go 开发环境配置 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/go/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/go/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/go/dev-env-config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/go/dev-env-config/</guid><description>🏠 首页 / Golang 编程 / Go 开发环境配置 Go 开发环境配置 # cobra-cli # 安装: go install github.com/spf13/cobra-cli@latest 自动补全: cobra-cli completion zsh &gt; .zfunc/_cobra-cli 在 .zshrc 文件中添加内容(如果已添加,则忽略): diff --git a/go/mac-appl-silicon-cross-compile-cgo/index.html b/go/mac-appl-silicon-cross-compile-cgo/index.html index 8481ac6f..dcdfdaf5 100644 --- a/go/mac-appl-silicon-cross-compile-cgo/index.html +++ b/go/mac-appl-silicon-cross-compile-cgo/index.html @@ -5,16 +5,16 @@ CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-unknown-linux-gnu-gcc CXX=x86_64-unknown-linux-gnu-g++ go build CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=aarch64-unknown-linux-gnu-gcc CXX=aarch64-unknown-linux-gnu-g++ go build 方法二 # 1、安装依赖 brew install FiloSottile/musl-cross/musl-cross 2、添加到 PATH export PATH=$PATH:/opt/homebrew/Cellar/musl-cross/0.9.9_1/bin 3、编译 CGO 程序 -# -tags=musl 不能省略不然会出现其他错误 CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ go build -tags=musl # 如果linux不想安装musl支持 CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ CGO_LDFLAGS="-static" go build -tags=musl CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CGO_LDFLAGS="-static" go build CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=x86_64-linux-musl-gcc CGO_LDFLAGS="-static" go build 参考 # https://blog.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/mac-appl-silicon-cross-compile-cgo/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Mac M1 交叉编译 CGO +# -tags=musl 不能省略不然会出现其他错误 CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ go build -tags=musl # 如果linux不想安装musl支持 CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ CGO_LDFLAGS="-static" go build -tags=musl CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CGO_LDFLAGS="-static" go build CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=x86_64-linux-musl-gcc CGO_LDFLAGS="-static" go build 参考 # https://blog.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/mac-appl-silicon-cross-compile-cgo/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / Mac M1 交叉编译 CGO Mac M1 交叉编译 CGO # 方法一 # 1、安装依赖 brew tap messense/macos-cross-toolchains brew install x86_64-unknown-linux-gnu brew install aarch64-unknown-linux-gnu 2、添加到 PATH export PATH=$PATH:/opt/homebrew/Cellar/x86_64-unknown-linux-gnu/11.2.0_1/bin::/opt/homebrew/Cellar/aarch64-unknown-linux-gnu/11.2.0_1/bin 3、编译 CGO 程序 CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-unknown-linux-gnu-gcc CXX=x86_64-unknown-linux-gnu-g++ go build CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=aarch64-unknown-linux-gnu-gcc CXX=aarch64-unknown-linux-gnu-g++ go build 方法二 # 1、安装依赖 brew install FiloSottile/musl-cross/musl-cross 2、添加到 PATH export PATH=$PATH:/opt/homebrew/Cellar/musl-cross/0.9.9_1/bin 3、编译 CGO 程序 -# -tags=musl 不能省略不然会出现其他错误 CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ go build -tags=musl # 如果linux不想安装musl支持 CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ CGO_LDFLAGS="-static" go build -tags=musl CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CGO_LDFLAGS="-static" go build CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=x86_64-linux-musl-gcc CGO_LDFLAGS="-static" go build 参考 # https://blog.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>MAC Appl Silicon Cross Compile Cgo | 🍁 秋河落叶</title> +# -tags=musl 不能省略不然会出现其他错误 CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ go build -tags=musl # 如果linux不想安装musl支持 CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ CGO_LDFLAGS="-static" go build -tags=musl CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CGO_LDFLAGS="-static" go build CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=x86_64-linux-musl-gcc CGO_LDFLAGS="-static" go build 参考 # https://blog.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>MAC Appl Silicon Cross Compile Cgo | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/mac-appl-silicon-cross-compile-cgo/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>MAC Appl Silicon Cross Compile Cgo</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#方法一>方法一</a></li><li><a href=#方法二>方法二</a></li><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / Mac M1 交叉编译 CGO</p><h1 id=mac-m1-交叉编译-cgo>Mac M1 交叉编译 CGO diff --git a/go/pprof/index.html b/go/pprof/index.html index 71f560b7..e1d8f485 100644 --- a/go/pprof/index.html +++ b/go/pprof/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / Golang 编程 / pprof pprof # pprof 是性能调试工具,可以生成类似火焰图、堆栈图,内存分析图等。 -package main import ( "fmt" "math/rand" "net/http" "time" _ "net/http/pprof" ) // 吃内存 type Eater struct { Name string Buffer [][]int } var e Eater func main() { e = Eater{Name: "eater"} http.HandleFunc("/go", goHandler) http.ListenAndServe(":8080", nil) // 如果不使用默认的 mux(http.DefaultServeMux),可以使用如下方式集成 pprof // mux := http.NewServeMux() // mux.HandleFunc("/go", goHandler) // mux.HandleFunc("/debug/pprof/", pprof.Index) // mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline) // mux.HandleFunc("/debug/pprof/profile", pprof.Profile) // mux.HandleFunc("/debug/pprof/symbol", pprof.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/pprof/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / pprof +package main import ( "fmt" "math/rand" "net/http" "time" _ "net/http/pprof" ) // 吃内存 type Eater struct { Name string Buffer [][]int } var e Eater func main() { e = Eater{Name: "eater"} http.HandleFunc("/go", goHandler) http.ListenAndServe(":8080", nil) // 如果不使用默认的 mux(http.DefaultServeMux),可以使用如下方式集成 pprof // mux := http.NewServeMux() // mux.HandleFunc("/go", goHandler) // mux.HandleFunc("/debug/pprof/", pprof.Index) // mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline) // mux.HandleFunc("/debug/pprof/profile", pprof.Profile) // mux.HandleFunc("/debug/pprof/symbol", pprof.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/pprof/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / pprof pprof # pprof 是性能调试工具,可以生成类似火焰图、堆栈图,内存分析图等。 -package main import ( "fmt" "math/rand" "net/http" "time" _ "net/http/pprof" ) // 吃内存 type Eater struct { Name string Buffer [][]int } var e Eater func main() { e = Eater{Name: "eater"} http.HandleFunc("/go", goHandler) http.ListenAndServe(":8080", nil) // 如果不使用默认的 mux(http.DefaultServeMux),可以使用如下方式集成 pprof // mux := http.NewServeMux() // mux.HandleFunc("/go", goHandler) // mux.HandleFunc("/debug/pprof/", pprof.Index) // mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline) // mux.HandleFunc("/debug/pprof/profile", pprof.Profile) // mux.HandleFunc("/debug/pprof/symbol", pprof.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Pprof | 🍁 秋河落叶</title> +package main import ( "fmt" "math/rand" "net/http" "time" _ "net/http/pprof" ) // 吃内存 type Eater struct { Name string Buffer [][]int } var e Eater func main() { e = Eater{Name: "eater"} http.HandleFunc("/go", goHandler) http.ListenAndServe(":8080", nil) // 如果不使用默认的 mux(http.DefaultServeMux),可以使用如下方式集成 pprof // mux := http.NewServeMux() // mux.HandleFunc("/go", goHandler) // mux.HandleFunc("/debug/pprof/", pprof.Index) // mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline) // mux.HandleFunc("/debug/pprof/profile", pprof.Profile) // mux.HandleFunc("/debug/pprof/symbol", pprof.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Pprof | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/pprof/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Pprof</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / pprof</p><h1 id=pprof>pprof diff --git a/go/ssh-keygen-with-go/index.html b/go/ssh-keygen-with-go/index.html index 2f2b2d3d..ee01fb88 100644 --- a/go/ssh-keygen-with-go/index.html +++ b/go/ssh-keygen-with-go/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / Golang 编程 / 使用 Go 生成 OpenSSH 兼容的 RSA 密钥对 使用 Go 生成 OpenSSH 兼容的 RSA 密钥对 # 我们可以使用 ssh-keygen 命令生成一对用于 SSH 访问的私钥和公钥。本文将介绍如何使用 Go 生成一对 OpenSSH 兼容的 RSA 密钥对。 以下代码中 GenOpenSSHKeyPair 方法用于生成一对用于 SSH 访问的私钥和公钥。生成的私钥以 PEM 编码,公钥以 OpenSSH authorized_keys 文件中包含的格式进行编码。 -package util import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "golang.org/x/crypto/ssh" ) // GenOpenSSHKeyPair make a pair of private and public keys for SSH access. // Private Key generated is PEM encoded // Public key is encoded in the format for inclusion in an OpenSSH authorized_keys file.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/ssh-keygen-with-go/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / 使用 Go 生成 OpenSSH 兼容的 RSA 密钥对 +package util import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "golang.org/x/crypto/ssh" ) // GenOpenSSHKeyPair make a pair of private and public keys for SSH access. // Private Key generated is PEM encoded // Public key is encoded in the format for inclusion in an OpenSSH authorized_keys file.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/go/ssh-keygen-with-go/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Golang 编程 / 使用 Go 生成 OpenSSH 兼容的 RSA 密钥对 使用 Go 生成 OpenSSH 兼容的 RSA 密钥对 # 我们可以使用 ssh-keygen 命令生成一对用于 SSH 访问的私钥和公钥。本文将介绍如何使用 Go 生成一对 OpenSSH 兼容的 RSA 密钥对。 以下代码中 GenOpenSSHKeyPair 方法用于生成一对用于 SSH 访问的私钥和公钥。生成的私钥以 PEM 编码,公钥以 OpenSSH authorized_keys 文件中包含的格式进行编码。 -package util import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "golang.org/x/crypto/ssh" ) // GenOpenSSHKeyPair make a pair of private and public keys for SSH access. // Private Key generated is PEM encoded // Public key is encoded in the format for inclusion in an OpenSSH authorized_keys file.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>SSH Keygen With Go | 🍁 秋河落叶</title> +package util import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "golang.org/x/crypto/ssh" ) // GenOpenSSHKeyPair make a pair of private and public keys for SSH access. // Private Key generated is PEM encoded // Public key is encoded in the format for inclusion in an OpenSSH authorized_keys file.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="go"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>SSH Keygen With Go | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/go/ssh-keygen-with-go/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>SSH Keygen With Go</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/go/>Golang 编程</a> / 使用 Go 生成 OpenSSH 兼容的 RSA 密钥对</p><h1 id=使用-go-生成-openssh-兼容的-rsa-密钥对>使用 Go 生成 OpenSSH 兼容的 RSA 密钥对 diff --git a/graphql/graphql/index.html b/graphql/graphql/index.html index fddb8572..46fffaa3 100644 --- a/graphql/graphql/index.html +++ b/graphql/graphql/index.html @@ -15,7 +15,7 @@ GraphQL 让你的整个应用共享一套 API,而不用被限制于特定存储引擎。GraphQL 引擎已经有多种语言实现,通过 GraphQL API 能够更好利用你的现有数据和代码。你只需要为类型系统的字段编写函数,GraphQL 就能通过优化并发的方式来调用它们。 资源定义,请求和响应 # 数据描述: type User { name: String phone: String Friends: [User] } 数据请求: -{ user(name: "dp") { phone } } 请求结果:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/graphql/graphql/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Graphql / Graphql +{ user(name: "dp") { phone } } 请求结果:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/graphql/graphql/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Graphql / Graphql Graphql # https://graphql.cn/learn/ 介绍 # 一种 API 查询语言,也是一种满足使用现有数据完成几乎所有数据查询的运行时。 对 API 数据提供可理解的完整描述,赋予客户端准确获取所需数据,使得 API 的演进更加轻松,也可以使用它来构建强大的开发者工具(LowCode?)。 @@ -32,9 +32,9 @@ GraphQL 让你的整个应用共享一套 API,而不用被限制于特定存储引擎。GraphQL 引擎已经有多种语言实现,通过 GraphQL API 能够更好利用你的现有数据和代码。你只需要为类型系统的字段编写函数,GraphQL 就能通过优化并发的方式来调用它们。 资源定义,请求和响应 # 数据描述: type User { name: String phone: String Friends: [User] } 数据请求: -{ user(name: "dp") { phone } } 请求结果:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="graphql"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Graphql | 🍁 秋河落叶</title> +{ user(name: "dp") { phone } } 请求结果:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="graphql"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Graphql | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/graphql/graphql/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Graphql</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#介绍>介绍</a><ul><li><a href=#特性>特性</a></li><li><a href=#资源定义请求和响应>资源定义,请求和响应</a></li></ul></li><li><a href=#变量>变量</a></li><li><a href=#graphqlite>GraphQLite</a></li><li><a href=#schema>Schema</a></li><li><a href=#文档>文档</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/graphql/>Graphql</a> / Graphql</p><h1 id=graphql>Graphql diff --git a/graphql/index.html b/graphql/index.html index 32c38ee0..25239e8b 100644 --- a/graphql/index.html +++ b/graphql/index.html @@ -1,8 +1,8 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Graphql -Graphql # Graphql"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/graphql/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Graphql -Graphql # Graphql"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Graphql | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/graphql/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/graphql/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +Graphql # Graphql"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/graphql/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Graphql +Graphql # Graphql"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Graphql | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/graphql/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/graphql/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Graphql</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / Graphql</p><h1 id=graphql>Graphql <a class=anchor href=#graphql>#</a></h1><p><a href=/graphql/graphql/>Graphql</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/graphql/index.xml b/graphql/index.xml index bc1e7c2e..150bc4d3 100644 --- a/graphql/index.xml +++ b/graphql/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/graphql/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/graphql/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/graphql/graphql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/graphql/graphql/</guid><description>🏠 首页 / Graphql / Graphql +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/graphql/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/graphql/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/graphql/graphql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/graphql/graphql/</guid><description>🏠 首页 / Graphql / Graphql Graphql # https://graphql.cn/learn/ 介绍 # 一种 API 查询语言,也是一种满足使用现有数据完成几乎所有数据查询的运行时。 对 API 数据提供可理解的完整描述,赋予客户端准确获取所需数据,使得 API 的演进更加轻松,也可以使用它来构建强大的开发者工具(LowCode?)。 diff --git a/grpc/gRPC/index.html b/grpc/gRPC/index.html index 0b16e471..fc5abeb1 100644 --- a/grpc/gRPC/index.html +++ b/grpc/gRPC/index.html @@ -1,8 +1,8 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content=" 🏠 首页 / Grpc / gRPC 实战 -gRPC 实战 # 准备 # golang 1.13+ Protoc "><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/grpc/gRPC/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content=" 🏠 首页 / Grpc / gRPC 实战 -gRPC 实战 # 准备 # golang 1.13+ Protoc "><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="grpc"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>G Rpc | 🍁 秋河落叶</title> +gRPC 实战 # 准备 # golang 1.13+ Protoc "><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/grpc/gRPC/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content=" 🏠 首页 / Grpc / gRPC 实战 +gRPC 实战 # 准备 # golang 1.13+ Protoc "><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="grpc"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>G Rpc | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/grpc/gRPC/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>G Rpc</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#准备>准备</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/grpc/>Grpc</a> / gRPC 实战</p><h1 id=grpc-实战>gRPC 实战 diff --git a/grpc/index.html b/grpc/index.html index c4a4859a..2b4d24ae 100644 --- a/grpc/index.html +++ b/grpc/index.html @@ -1,8 +1,8 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Grpc -Grpc # gRPC 实战"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/grpc/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Grpc -Grpc # gRPC 实战"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Grpc | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/grpc/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/grpc/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +Grpc # gRPC 实战"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/grpc/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Grpc +Grpc # gRPC 实战"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Grpc | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/grpc/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/grpc/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Grpc</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / Grpc</p><h1 id=grpc>Grpc <a class=anchor href=#grpc>#</a></h1><p><a href=/grpc/gRPC/>gRPC 实战</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/grpc/index.xml b/grpc/index.xml index 2c523049..62ffe082 100644 --- a/grpc/index.xml +++ b/grpc/index.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/grpc/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/grpc/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/grpc/gRPC/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/grpc/gRPC/</guid><description> 🏠 首页 / Grpc / gRPC 实战 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/grpc/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/grpc/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/grpc/gRPC/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/grpc/gRPC/</guid><description> 🏠 首页 / Grpc / gRPC 实战 gRPC 实战 # 准备 # golang 1.13+ Protoc</description></item></channel></rss> \ No newline at end of file diff --git a/index.html b/index.html index f134409b..b0375882 100644 --- a/index.html +++ b/index.html @@ -1,9 +1,9 @@ -<!doctype html><html lang=cn dir=ltr><head><meta name=generator content="Hugo 0.127.0"><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🍁 秋河落叶 # 数据结构与算法 # 堆排序 快速排序 AWS # 搭建EKS集群 Cluster AutoScaler 创建 EKS 集群 EKS配置 ALB Ingress EKS小细节汇总 EKS实践 集成Gitlab自动发布(一) EKS实践 集成Gitlab自动发布(二) EKS-使用EFS Gitlab & EKS K8s 部署 Kong 服务 K8s 部署 konga K8s 部署 Postgres Terraform 重新管理资源 CKA # 001 准备CKA 考题 计算机科学 # 互联网如何运作? 网络通信 虚拟内存 Dapr # Dapr 0-1 设计模式 # CI/CD DevOps # Agile Ansible 蓝绿部署、滚动部署和灰度部署 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING) 商业画布 使用grafana监控5xx服务 使用Grafana监控service Grafana Jaeger nginx Docker # container-diff 工具的使用 Docker in Docker docker buildx Docker 常用命令 Docker Compose 实践 Docker 容器中安装 PFX 证书 Docker 主机容器互拷贝文件 使用 docker manifest 命令构建多架构镜像 理解 docker run –link Docker 可视化工具 Kitematic Dockerfile Linux 容器 非 root 账号获取 docker 权限 some-apps."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🍁 秋河落叶 # 数据结构与算法 # 堆排序 快速排序 AWS # 搭建EKS集群 Cluster AutoScaler 创建 EKS 集群 EKS配置 ALB Ingress EKS小细节汇总 EKS实践 集成Gitlab自动发布(一) EKS实践 集成Gitlab自动发布(二) EKS-使用EFS Gitlab & EKS K8s 部署 Kong 服务 K8s 部署 konga K8s 部署 Postgres Terraform 重新管理资源 CKA # 001 准备CKA 考题 计算机科学 # 互联网如何运作? 网络通信 虚拟内存 Dapr # Dapr 0-1 设计模式 # CI/CD DevOps # Agile Ansible 蓝绿部署、滚动部署和灰度部署 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING) 商业画布 使用grafana监控5xx服务 使用Grafana监控service Grafana Jaeger nginx Docker # container-diff 工具的使用 Docker in Docker docker buildx Docker 常用命令 Docker Compose 实践 Docker 容器中安装 PFX 证书 Docker 主机容器互拷贝文件 使用 docker manifest 命令构建多架构镜像 理解 docker run –link Docker 可视化工具 Kitematic Dockerfile Linux 容器 非 root 账号获取 docker 权限 some-apps."><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>| 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/ class=active><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<!doctype html><html lang=cn dir=ltr><head><meta name=generator content="Hugo 0.127.0"><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="秋河落叶 # 数据结构与算法 # 堆排序 快速排序 AWS # 搭建EKS集群 Cluster AutoScaler 创建 EKS 集群 EKS配置 ALB Ingress EKS小细节汇总 EKS实践 集成Gitlab自动发布(一) EKS实践 集成Gitlab自动发布(二) EKS-使用EFS Gitlab & EKS K8s 部署 Kong 服务 K8s 部署 konga K8s 部署 Postgres Terraform 重新管理资源 CKA # 001 准备CKA 考题 计算机科学 # 互联网如何运作? 网络通信 虚拟内存 Dapr # Dapr 0-1 设计模式 # CI/CD DevOps # Agile Ansible 蓝绿部署、滚动部署和灰度部署 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING) 商业画布 使用grafana监控5xx服务 使用Grafana监控service Grafana Jaeger nginx Docker # container-diff 工具的使用 Docker in Docker docker buildx Docker 常用命令 Docker Compose 实践 Docker 容器中安装 PFX 证书 Docker 主机容器互拷贝文件 使用 docker manifest 命令构建多架构镜像 理解 docker run –link Docker 可视化工具 Kitematic Dockerfile Linux 容器 非 root 账号获取 docker 权限 some-apps."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="秋河落叶 # 数据结构与算法 # 堆排序 快速排序 AWS # 搭建EKS集群 Cluster AutoScaler 创建 EKS 集群 EKS配置 ALB Ingress EKS小细节汇总 EKS实践 集成Gitlab自动发布(一) EKS实践 集成Gitlab自动发布(二) EKS-使用EFS Gitlab & EKS K8s 部署 Kong 服务 K8s 部署 konga K8s 部署 Postgres Terraform 重新管理资源 CKA # 001 准备CKA 考题 计算机科学 # 互联网如何运作? 网络通信 虚拟内存 Dapr # Dapr 0-1 设计模式 # CI/CD DevOps # Agile Ansible 蓝绿部署、滚动部署和灰度部署 混沌工程原则 (PRINCIPLES OF CHAOS ENGINEERING) 商业画布 使用grafana监控5xx服务 使用Grafana监控service Grafana Jaeger nginx Docker # container-diff 工具的使用 Docker in Docker docker buildx Docker 常用命令 Docker Compose 实践 Docker 容器中安装 PFX 证书 Docker 主机容器互拷贝文件 使用 docker manifest 命令构建多架构镜像 理解 docker run –link Docker 可视化工具 Kitematic Dockerfile Linux 容器 非 root 账号获取 docker 权限 some-apps."><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>| 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/ class=active><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong></strong> -<label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#数据结构与算法>数据结构与算法</a></li><li><a href=#aws>AWS</a></li><li><a href=#cka>CKA</a></li><li><a href=#计算机科学>计算机科学</a></li><li><a href=#dapr>Dapr</a></li><li><a href=#设计模式>设计模式</a></li><li><a href=#devops>DevOps</a></li><li><a href=#docker>Docker</a></li><li><a href=#ebpf>EBPF</a></li><li><a href=#前端技术>前端技术</a></li><li><a href=#git>Git</a></li><li><a href=#golang-编程>Golang 编程</a></li><li><a href=#graphql>Graphql</a></li><li><a href=#grpc>Grpc</a></li><li><a href=#istio>Istio</a></li><li><a href=#kubernetes>Kubernetes</a></li><li><a href=#linux>Linux</a></li><li><a href=#数据中间件>数据中间件</a></li><li><a href=#操作系统>操作系统</a></li><li><a href=#阅读>阅读</a></li><li><a href=#rust-编程>Rust 编程</a></li></ul></nav></aside></header><article class="markdown book-article"><h1 id=-秋河落叶>🍁 秋河落叶 -<a class=anchor href=#-%e7%a7%8b%e6%b2%b3%e8%90%bd%e5%8f%b6>#</a></h1><h2 id=数据结构与算法>数据结构与算法 +<label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#数据结构与算法>数据结构与算法</a></li><li><a href=#aws>AWS</a></li><li><a href=#cka>CKA</a></li><li><a href=#计算机科学>计算机科学</a></li><li><a href=#dapr>Dapr</a></li><li><a href=#设计模式>设计模式</a></li><li><a href=#devops>DevOps</a></li><li><a href=#docker>Docker</a></li><li><a href=#ebpf>EBPF</a></li><li><a href=#前端技术>前端技术</a></li><li><a href=#git>Git</a></li><li><a href=#golang-编程>Golang 编程</a></li><li><a href=#graphql>Graphql</a></li><li><a href=#grpc>Grpc</a></li><li><a href=#istio>Istio</a></li><li><a href=#kubernetes>Kubernetes</a></li><li><a href=#linux>Linux</a></li><li><a href=#数据中间件>数据中间件</a></li><li><a href=#操作系统>操作系统</a></li><li><a href=#阅读>阅读</a></li><li><a href=#rust-编程>Rust 编程</a></li></ul></nav></aside></header><article class="markdown book-article"><h1 id=秋河落叶>秋河落叶 +<a class=anchor href=#%e7%a7%8b%e6%b2%b3%e8%90%bd%e5%8f%b6>#</a></h1><h2 id=数据结构与算法>数据结构与算法 <a class=anchor href=#%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84%e4%b8%8e%e7%ae%97%e6%b3%95>#</a></h2><ul><li><a href=/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/>堆排序</a></li><li><a href=/algo/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/>快速排序</a></li></ul><h2 id=aws>AWS <a class=anchor href=#aws>#</a></h2><ul><li><a href=/aws/build-eks-cluster/>搭建EKS集群</a></li><li><a href=/aws/cluster-autoscaler/>Cluster AutoScaler</a></li><li><a href=/aws/create-eks-cluster/>创建 EKS 集群</a></li><li><a href=/aws/eks-config-alb-ingress/>EKS配置 ALB Ingress</a></li><li><a href=/aws/eks-details/>EKS小细节汇总</a></li><li><a href=/aws/eks-intergrate-gitlab-auto-release-01/>EKS实践 集成Gitlab自动发布(一)</a></li><li><a href=/aws/eks-intergrate-gitlab-auto-release-02/>EKS实践 集成Gitlab自动发布(二)</a></li><li><a href=/aws/eks-use-efs/>EKS-使用EFS</a></li><li><a href=/aws/gitlab-eks/>Gitlab & EKS</a></li><li><a href=/aws/k8s-deploy-kong/>K8s 部署 Kong 服务</a></li><li><a href=/aws/k8s-deploy-konga/>K8s 部署 konga</a></li><li><a href=/aws/k8s-deploy-postgres/>K8s 部署 Postgres</a></li><li><a href=/aws/terraform-remanage-resource/>Terraform 重新管理资源</a></li></ul><h2 id=cka>CKA <a class=anchor href=#cka>#</a></h2><ul><li><a href=/cka/001/>001</a></li><li><a href=/cka/prepare-cka/>准备CKA</a></li><li><a href=/cka/tasks/>考题</a></li></ul><h2 id=计算机科学>计算机科学 @@ -24,6 +24,6 @@ <a class=anchor href=#%e6%95%b0%e6%8d%ae%e4%b8%ad%e9%97%b4%e4%bb%b6>#</a></h2><ul><li><a href=/middleware/elasticsearch/>Elasticsearch</a></li><li><a href=/middleware/mongodb/>MongoDB</a></li><li><a href=/middleware/mysql/>MySQL</a></li><li><a href=/middleware/postgres/>Postgres</a></li><li><a href=/middleware/redis/>Redis</a></li></ul><h2 id=操作系统>操作系统 <a class=anchor href=#%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f>#</a></h2><ul><li><a href=/os/macos/>MacOS</a></li><li><a href=/os/ohmyzsh/>ohmyzsh</a></li><li><a href=/os/openssl/>openssl</a></li><li><a href=/os/ubuntu/>Ubuntu</a></li><li><a href=/os/windows/>Windows 使用姿势</a></li></ul><h2 id=阅读>阅读 <a class=anchor href=#%e9%98%85%e8%af%bb>#</a></h2><ul><li><a href=/reading/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91Operator%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5/>云原生应用开发:Operator原理与实践</a></li><li><a href=/reading/%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E6%9C%AC%E7%AE%97%E6%B3%95%E4%B9%A6/>我的第一本算法书</a></li><li><a href=/reading/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/>深入理解计算机网络.md</a></li></ul><h2 id=rust-编程>Rust 编程 -<a class=anchor href=#rust-%e7%bc%96%e7%a8%8b>#</a></h2><ul><li><a href=/rust/cargo/>Rust cargo 管理工具</a></li><li><a href=/rust/dev-env-config/>Rust 开发环境配置</a></li><li><a href=/rust/getting-started/>Rust 入门</a></li><li><a href=/rust/rust-programming/>查看根目录</a></li><li><a href=/rust/vscode-debugging/>Rust VSCode 调试</a></li><li><a href=/rust/wasm-programming/>Rust WASM 编程</a></li></ul></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> +<a class=anchor href=#rust-%e7%bc%96%e7%a8%8b>#</a></h2><ul><li><a href=/rust/cargo/>Rust cargo 管理工具</a></li><li><a href=/rust/dev-env-config/>Rust 开发环境配置</a></li><li><a href=/rust/getting-started/>Rust 入门</a></li><li><a href=/rust/rust-programming/>查看根目录</a></li><li><a href=/rust/vscode-debugging/>Rust VSCode 调试</a></li><li><a href=/rust/wasm-programming/>Rust WASM 编程</a></li></ul></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/eba83a9dd883e0d30f24deb76aba97d7ab801ee4 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> <span>2024/06/13</span></a></div><div><a class="flex align-center" href=https://github.com/poneding/blog/edit/master/content/_index.md target=_blank rel=noopener><img src=/svg/edit.svg class=book-icon alt> <span>编辑本页</span></a></div></div><script>(function(){function e(e){const t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}document.querySelectorAll("pre code").forEach(t=>{t.addEventListener("click",function(){if(window.getSelection().toString())return;e(t.parentElement),navigator.clipboard&&navigator.clipboard.writeText(t.parentElement.textContent)})})})()</script></footer><div class=book-comments><script src=https://giscus.app/client.js data-repo=poneding/blog data-repo-id=R_kgDOMITIHg data-category=General data-category-id=DIC_kwDOMITIHs4CgB4x data-mapping=url data-strict=0 data-reactions-enabled=1 data-emit-metadata=0 data-input-position=top data-theme=preferred_color_scheme data-lang=zh-CN data-loading=lazy crossorigin=anonymous async></script></div><label for=menu-control class="hidden book-menu-overlay"></label></div><aside class=book-toc><div class=book-toc-content><nav id=TableOfContents><ul><li><a href=#数据结构与算法>数据结构与算法</a></li><li><a href=#aws>AWS</a></li><li><a href=#cka>CKA</a></li><li><a href=#计算机科学>计算机科学</a></li><li><a href=#dapr>Dapr</a></li><li><a href=#设计模式>设计模式</a></li><li><a href=#devops>DevOps</a></li><li><a href=#docker>Docker</a></li><li><a href=#ebpf>EBPF</a></li><li><a href=#前端技术>前端技术</a></li><li><a href=#git>Git</a></li><li><a href=#golang-编程>Golang 编程</a></li><li><a href=#graphql>Graphql</a></li><li><a href=#grpc>Grpc</a></li><li><a href=#istio>Istio</a></li><li><a href=#kubernetes>Kubernetes</a></li><li><a href=#linux>Linux</a></li><li><a href=#数据中间件>数据中间件</a></li><li><a href=#操作系统>操作系统</a></li><li><a href=#阅读>阅读</a></li><li><a href=#rust-编程>Rust 编程</a></li></ul></nav></div></aside></main></body></html> \ No newline at end of file diff --git a/index.xml b/index.xml index ea05f8b7..af0824cf 100644 --- a/index.xml +++ b/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/</guid><description>🏠 首页 / 数据结构与算法 / 堆排序 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/</guid><description>🏠 首页 / 数据结构与算法 / 堆排序 堆排序 # 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种**选择排序,**它的最坏,最好,平均时间复杂度均为 O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 # 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。: 算法实现(golang) # package main import &#34;fmt&#34; type BinaryTreeNode struct { Value int Left, Right *BinaryTreeNode } func main() { tree := &amp;BinaryTreeNode{ Left: &amp;BinaryTreeNode{ Left: &amp;BinaryTreeNode{ Value: 1, }, Right: &amp;BinaryTreeNode{ Value: 2, }, Value: 3, }, Right: &amp;BinaryTreeNode{ Value: 4, }, Value: 5, } res := HeapSort(tree) fmt.Println(res) } func HeapSort(tree *BinaryTreeNode) []int { var res []int if tree == nil { return []int{} } res = heapSortHelper(tree, res) return res } func heapSortHelper(tree *BinaryTreeNode, res []int) []int { if tree.</description></item><item><title/><link>https://blog.poneding.com/algo/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/algo/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/</guid><description>🏠 首页 / 数据结构与算法 / 快速排序 diff --git a/istio/Istio/index.html b/istio/Istio/index.html index a295f70c..201c7a39 100644 --- a/istio/Istio/index.html +++ b/istio/Istio/index.html @@ -6,7 +6,7 @@ 实现需求包括: 服务发现 负载均衡 故障恢复 指标和监控 A/B 测试 金丝雀发布 速率控制 访问控制 端到端认证 istioctl # 管理 istio 的命令行工具。 安装 # curl -L https://istio.io/downloadIstio | sh - cp istio-x.x.x /usr/local cd istio-x.x.x export PATH=$PWD/bin:$PATH Istio 的绝大多数治理能力都是在 Sidecar 而非应用程序中实现,因此是非侵入的; Istio 的调用链埋点逻辑也是在 Sidecar 代理中完成,对应用程序非侵入,但应用程序需做适当的修改,即配合在请求头上传递生成的 Trace 相关信息。 关键功能: -流量管理 可观察性 策略执行 服务身份和安全 平台支持 集成和定制 架构 # 数据面板 # Envoy # Envoy 是用 C++ 开发的高性能代理,用于协调服务网格中所有服务的入站和出站流量。Envoy 代理是唯一与数据平面流量交互的 Istio 组件。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/Istio/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / Istio +流量管理 可观察性 策略执行 服务身份和安全 平台支持 集成和定制 架构 # 数据面板 # Envoy # Envoy 是用 C++ 开发的高性能代理,用于协调服务网格中所有服务的入站和出站流量。Envoy 代理是唯一与数据平面流量交互的 Istio 组件。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/Istio/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / Istio Istio # 简介 # Istio,是一种服务网格的平台。在微服务系统中起着连接,保护,控制和观察服务的作用。它可以降低微服务部署的复杂程度,减轻开发团队压力,无缝接入现有分布式应用程序,可以集成日志,遥测,和策略系统的 API 接口。 服务网格: Service Mesh 是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,Service Mesh 保证请求可以在这些拓扑中可靠地穿梭。在实际应用当中,Service Mesh 通常是由一系列轻量级的网络代理组成的,它们与应用程序部署在一起,但应用程序不需要知道它们的存在。 @@ -14,9 +14,9 @@ 实现需求包括: 服务发现 负载均衡 故障恢复 指标和监控 A/B 测试 金丝雀发布 速率控制 访问控制 端到端认证 istioctl # 管理 istio 的命令行工具。 安装 # curl -L https://istio.io/downloadIstio | sh - cp istio-x.x.x /usr/local cd istio-x.x.x export PATH=$PWD/bin:$PATH Istio 的绝大多数治理能力都是在 Sidecar 而非应用程序中实现,因此是非侵入的; Istio 的调用链埋点逻辑也是在 Sidecar 代理中完成,对应用程序非侵入,但应用程序需做适当的修改,即配合在请求头上传递生成的 Trace 相关信息。 关键功能: -流量管理 可观察性 策略执行 服务身份和安全 平台支持 集成和定制 架构 # 数据面板 # Envoy # Envoy 是用 C++ 开发的高性能代理,用于协调服务网格中所有服务的入站和出站流量。Envoy 代理是唯一与数据平面流量交互的 Istio 组件。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Istio | 🍁 秋河落叶</title> +流量管理 可观察性 策略执行 服务身份和安全 平台支持 集成和定制 架构 # 数据面板 # Envoy # Envoy 是用 C++ 开发的高性能代理,用于协调服务网格中所有服务的入站和出站流量。Envoy 代理是唯一与数据平面流量交互的 Istio 组件。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Istio | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/istio/Istio/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Istio</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#简介>简介</a></li><li><a href=#istioctl>istioctl</a></li><li><a href=#安装>安装</a></li><li><a href=#架构>架构</a><ul><li><a href=#数据面板>数据面板</a></li><li><a href=#控制面板>控制面板</a></li></ul></li><li><a href=#流量管理>流量管理</a><ul><li><a href=#虚拟服务virtual-service>虚拟服务(Virtual Service)</a></li><li><a href=#目标规则destination-rule>目标规则(Destination Rule)</a></li><li><a href=#网关gateway>网关(Gateway)</a></li><li><a href=#服务入口service-entry>服务入口(Service Entry)</a></li><li><a href=#sidecar>Sidecar</a></li><li><a href=#网络弹性和测试>网络弹性和测试</a></li></ul></li><li><a href=#记录>记录</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/istio/>Istio</a> / Istio</p><h1 id=istio>Istio diff --git a/istio/aws-acm-tls-management/index.html b/istio/aws-acm-tls-management/index.html index 49b5dc90..d6bbd77d 100644 --- a/istio/aws-acm-tls-management/index.html +++ b/istio/aws-acm-tls-management/index.html @@ -2,13 +2,13 @@ 使用 aws-acm 管理 tls 密钥和证书 # 参考: https://medium.com/faun/managing-tls-keys-and-certs-in-istio-using-amazons-acm-8ff9a0b99033 在Ingressgateway service的annotation中添加: kind: Service apiVersion: v1 metadata: name: my-ingressgateway namespace: istio-system labels: app: my-ingressgateway annotations: # external-dns.alpha.kubernetes.io/hostname: example.com service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: '3600' service.beta.kubernetes.io/aws-load-balancer-ssl-cert: >- arn:aws:acm:ap-southeast-1:xxxxxxxxxxxx:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https .... service.yaml: -apiVersion: v1 kind: Service metadata: name: demo-api labels: app: demop-api spec: ports: - name: http port: 80 targetPort: 80 selector: app: demo-api pod 所在的 namespace 需要开启 istio-injection,例如:kubectl label namespace default istio-injection=enabled"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/aws-acm-tls-management/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / 使用 aws-acm 管理 tls 密钥和证书 +apiVersion: v1 kind: Service metadata: name: demo-api labels: app: demop-api spec: ports: - name: http port: 80 targetPort: 80 selector: app: demo-api pod 所在的 namespace 需要开启 istio-injection,例如:kubectl label namespace default istio-injection=enabled"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/aws-acm-tls-management/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / 使用 aws-acm 管理 tls 密钥和证书 使用 aws-acm 管理 tls 密钥和证书 # 参考: https://medium.com/faun/managing-tls-keys-and-certs-in-istio-using-amazons-acm-8ff9a0b99033 在Ingressgateway service的annotation中添加: kind: Service apiVersion: v1 metadata: name: my-ingressgateway namespace: istio-system labels: app: my-ingressgateway annotations: # external-dns.alpha.kubernetes.io/hostname: example.com service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: '3600' service.beta.kubernetes.io/aws-load-balancer-ssl-cert: >- arn:aws:acm:ap-southeast-1:xxxxxxxxxxxx:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https .... service.yaml: -apiVersion: v1 kind: Service metadata: name: demo-api labels: app: demop-api spec: ports: - name: http port: 80 targetPort: 80 selector: app: demo-api pod 所在的 namespace 需要开启 istio-injection,例如:kubectl label namespace default istio-injection=enabled"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Aws Acm Tls Management | 🍁 秋河落叶</title> +apiVersion: v1 kind: Service metadata: name: demo-api labels: app: demop-api spec: ports: - name: http port: 80 targetPort: 80 selector: app: demo-api pod 所在的 namespace 需要开启 istio-injection,例如:kubectl label namespace default istio-injection=enabled"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Aws Acm Tls Management | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/istio/aws-acm-tls-management/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Aws Acm Tls Management</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/istio/>Istio</a> / 使用 aws-acm 管理 tls 密钥和证书</p><h1 id=使用-aws-acm-管理-tls-密钥和证书>使用 aws-acm 管理 tls 密钥和证书 diff --git a/istio/index.html b/istio/index.html index 2543abdb..cac5c239 100644 --- a/istio/index.html +++ b/istio/index.html @@ -8,7 +8,7 @@ 使用 Istio 实现服务超时 应用层级设置访问白名单 实现 Https 协议的转发 -Istio 0-1 流量管理方案"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Istio +Istio 0-1 流量管理方案"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Istio Istio # Istio 使用 aws-acm 管理 tls 密钥和证书 安装 Istio @@ -18,9 +18,9 @@ 使用 Istio 实现服务超时 应用层级设置访问白名单 实现 Https 协议的转发 -Istio 0-1 流量管理方案"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Istio | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/istio/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/istio/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +Istio 0-1 流量管理方案"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Istio | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/istio/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/istio/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Istio</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / Istio</p><h1 id=istio>Istio <a class=anchor href=#istio>#</a></h1><p><a href=/istio/Istio/>Istio</a></p><p><a href=/istio/aws-acm-tls-management/>使用 aws-acm 管理 tls 密钥和证书</a></p><p><a href=/istio/installation/>安装 Istio</a></p><p><a href=/istio/istio-auth-policy/>授权策略 Authorization Policy</a></p><p><a href=/istio/istio-canary-deploy/>应用平台实现应用金丝雀发布</a></p><p><a href=/istio/istio-cors/>Istio 0-1 使用Istio实现Cors</a></p><p><a href=/istio/istio-timeout/>使用 Istio 实现服务超时</a></p><p><a href=/istio/istio-white-manifest/>应用层级设置访问白名单</a></p><p><a href=/istio/tls-transform/>实现 Https 协议的转发</a></p><p><a href=/istio/traffic-management/>Istio 0-1 流量管理方案</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/istio/index.xml b/istio/index.xml index 5f304677..1b422082 100644 --- a/istio/index.xml +++ b/istio/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/istio/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/istio/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/istio/aws-acm-tls-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/istio/aws-acm-tls-management/</guid><description>🏠 首页 / Istio / 使用 aws-acm 管理 tls 密钥和证书 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/istio/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/istio/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/istio/aws-acm-tls-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/istio/aws-acm-tls-management/</guid><description>🏠 首页 / Istio / 使用 aws-acm 管理 tls 密钥和证书 使用 aws-acm 管理 tls 密钥和证书 # 参考: https://medium.com/faun/managing-tls-keys-and-certs-in-istio-using-amazons-acm-8ff9a0b99033 在Ingressgateway service的annotation中添加: kind: Service apiVersion: v1 metadata: name: my-ingressgateway namespace: istio-system labels: app: my-ingressgateway annotations: # external-dns.alpha.kubernetes.io/hostname: example.com service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: &#39;3600&#39; service.beta.kubernetes.io/aws-load-balancer-ssl-cert: &gt;- arn:aws:acm:ap-southeast-1:xxxxxxxxxxxx:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https .... service.yaml: diff --git a/istio/installation/index.html b/istio/installation/index.html index 62fddd22..f5708023 100644 --- a/istio/installation/index.html +++ b/istio/installation/index.html @@ -6,7 +6,7 @@ step 1会下载istio包,目录istio-{ISTIO_VERSION},进入目录 cd istio-{ISTIO_VERSION} 拷贝bin目录下的istioctl二进制文件到PATH目录下: cp bin/istio /usr/local/bin « 使用 aws-acm 管理 tls 密钥和证书 -» 授权策略 Authorization Policy"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/installation/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / 安装 Istio +» 授权策略 Authorization Policy"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/installation/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / 安装 Istio 安装 Istio # 安装istioctl # Step 1 下载: 以下操作步骤默认会安装最新版 istioctl。 curl -L https://istio.io/downloadIstio | sh - 以上命令默认会安装最新版 istioctl,如果需要安装指定版本例如 1.6.8,使用以下命令。 @@ -14,9 +14,9 @@ step 1会下载istio包,目录istio-{ISTIO_VERSION},进入目录 cd istio-{ISTIO_VERSION} 拷贝bin目录下的istioctl二进制文件到PATH目录下: cp bin/istio /usr/local/bin « 使用 aws-acm 管理 tls 密钥和证书 -» 授权策略 Authorization Policy"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Installation | 🍁 秋河落叶</title> +» 授权策略 Authorization Policy"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Installation | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/istio/installation/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Installation</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装istioctl>安装istioctl</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/istio/>Istio</a> / 安装 Istio</p><h1 id=安装-istio>安装 Istio diff --git a/istio/istio-auth-policy/index.html b/istio/istio-auth-policy/index.html index 5e1bf932..34a8acc0 100644 --- a/istio/istio-auth-policy/index.html +++ b/istio/istio-auth-policy/index.html @@ -8,7 +8,7 @@ rules: 访问控制的请求条件: from:请求来源 to:请求目标 when:应用规则所需的提交 示例 # 以下授权策略允许两个源(服务帐号 cluster.local/ns/default/sa/sleep 和命名空间 dev),在使用有效的 JWT 令牌发送请求时,可以访问命名空间 foo 中的带有标签 app: httpbin 和 version: v1 的工作负载。 -apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: httpbin namespace: foo spec: selector: matchLabels: app: httpbin version: v1 action: ALLOW rules: - from: - source: principals: ["cluster.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/istio-auth-policy/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Istio / 授权策略 Authorization Policy +apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: httpbin namespace: foo spec: selector: matchLabels: app: httpbin version: v1 action: ALLOW rules: - from: - source: principals: ["cluster.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/istio-auth-policy/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Istio / 授权策略 Authorization Policy 授权策略 Authorization Policy # 授权架构 # 由于服务网格的 Sidecar 设计模式,每个工作负载都会有一个 Envoy 代理,而每个代理都运行着授权引擎,以此给请求授权。授权引擎依靠授权策略来鉴定请求权限,返回 ALLOW 或 DENY 鉴权结果。 授权启用 # 将授权策略应用到工作负载即生效访问控制。对于没有应用授权策略的工作负载,则不会对请求做访问控制。 授权策略 # 资源定义 # selector: @@ -18,9 +18,9 @@ rules: 访问控制的请求条件: from:请求来源 to:请求目标 when:应用规则所需的提交 示例 # 以下授权策略允许两个源(服务帐号 cluster.local/ns/default/sa/sleep 和命名空间 dev),在使用有效的 JWT 令牌发送请求时,可以访问命名空间 foo 中的带有标签 app: httpbin 和 version: v1 的工作负载。 -apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: httpbin namespace: foo spec: selector: matchLabels: app: httpbin version: v1 action: ALLOW rules: - from: - source: principals: ["cluster.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Istio Auth Policy | 🍁 秋河落叶</title> +apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: httpbin namespace: foo spec: selector: matchLabels: app: httpbin version: v1 action: ALLOW rules: - from: - source: principals: ["cluster.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Istio Auth Policy | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/istio/istio-auth-policy/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Istio Auth Policy</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#授权架构>授权架构</a></li><li><a href=#授权启用>授权启用</a></li><li><a href=#授权策略>授权策略</a><ul><li><a href=#资源定义>资源定义</a></li><li><a href=#示例>示例</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/istio/>Istio</a> / 授权策略 Authorization Policy</p><h1 id=授权策略-authorization-policy>授权策略 Authorization Policy diff --git a/istio/istio-canary-deploy/index.html b/istio/istio-canary-deploy/index.html index dee4f424..1c7c5ed5 100644 --- a/istio/istio-canary-deploy/index.html +++ b/istio/istio-canary-deploy/index.html @@ -7,7 +7,7 @@ 前提 # 使用金丝雀发布的前提条件: 应用处于发布状态,已经至少发布一次,当前存在稳定的运行版本; 应用已经开启 Istio Gateway,涉及到 VirtualService 的流量转发; 应用当前不是金丝雀状态,要不然乱套了。 发布细节 # CI 发布除了创建或更新 Deployment,Service 之外,默认创建或更新 istio 的 DestinationRule 资源; deployment: -apiVersion: apps/v1 kind: Deployment metadata: name: myapp-pbd3n69-v{iteration} # 出于兼容历史发布,当iteration为0时,name不附带iteration,iteration大于0时,name将附带iteration labels: app: myapp-pbd3n69 version: v{iteration} spec: selector: matchLabels: app: myapp-pbd3n69 version: v{iteration} template: metadata: labels: app: myapp-pbd3n69 version: v{iteration} ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/istio-canary-deploy/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / 应用平台实现应用金丝雀发布 +apiVersion: apps/v1 kind: Deployment metadata: name: myapp-pbd3n69-v{iteration} # 出于兼容历史发布,当iteration为0时,name不附带iteration,iteration大于0时,name将附带iteration labels: app: myapp-pbd3n69 version: v{iteration} spec: selector: matchLabels: app: myapp-pbd3n69 version: v{iteration} template: metadata: labels: app: myapp-pbd3n69 version: v{iteration} ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/istio-canary-deploy/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / 应用平台实现应用金丝雀发布 应用平台实现应用金丝雀发布 # 实现思路 # 应用正常的 CI 流程添加请求参数: CanaryMode【bool,true | false,缺省值 false】 CanaryWeight 【int,缺省值 10】 使用 Istio 的 DetinationRule + VirtualService 实现流量按权重分配到不同版本应用。 概念 # Iteration:发布迭代号,。是一个字段值,使用金丝雀发布时累加该值,从 0 累加。 @@ -16,9 +16,9 @@ 前提 # 使用金丝雀发布的前提条件: 应用处于发布状态,已经至少发布一次,当前存在稳定的运行版本; 应用已经开启 Istio Gateway,涉及到 VirtualService 的流量转发; 应用当前不是金丝雀状态,要不然乱套了。 发布细节 # CI 发布除了创建或更新 Deployment,Service 之外,默认创建或更新 istio 的 DestinationRule 资源; deployment: -apiVersion: apps/v1 kind: Deployment metadata: name: myapp-pbd3n69-v{iteration} # 出于兼容历史发布,当iteration为0时,name不附带iteration,iteration大于0时,name将附带iteration labels: app: myapp-pbd3n69 version: v{iteration} spec: selector: matchLabels: app: myapp-pbd3n69 version: v{iteration} template: metadata: labels: app: myapp-pbd3n69 version: v{iteration} ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Istio Canary Deploy | 🍁 秋河落叶</title> +apiVersion: apps/v1 kind: Deployment metadata: name: myapp-pbd3n69-v{iteration} # 出于兼容历史发布,当iteration为0时,name不附带iteration,iteration大于0时,name将附带iteration labels: app: myapp-pbd3n69 version: v{iteration} spec: selector: matchLabels: app: myapp-pbd3n69 version: v{iteration} template: metadata: labels: app: myapp-pbd3n69 version: v{iteration} ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Istio Canary Deploy | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/istio/istio-canary-deploy/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Istio Canary Deploy</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#实现思路>实现思路</a></li><li><a href=#概念>概念</a></li><li><a href=#前提>前提</a></li><li><a href=#发布细节>发布细节</a></li><li><a href=#撤回retract>撤回(Retract)</a></li><li><a href=#批准ratify>批准(Ratify)</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/istio/>Istio</a> / 应用平台实现应用金丝雀发布</p><h1 id=应用平台实现应用金丝雀发布>应用平台实现应用金丝雀发布 diff --git a/istio/istio-cors/index.html b/istio/istio-cors/index.html index 6a092609..f5ac00c7 100644 --- a/istio/istio-cors/index.html +++ b/istio/istio-cors/index.html @@ -6,7 +6,7 @@ Istio 实现 # 基于 Istio VirtualService 的配置实现。 官方文档: Istio / Virtual Service#CorsPolicy 在目标服务上设置允许的请求域 Hello: -apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: b spec: http: - route: - destination: host: b.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/istio-cors/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Istio / Istio 0-1 使用Istio实现Cors +apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: b spec: http: - route: - destination: host: b.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/istio-cors/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Istio / Istio 0-1 使用Istio实现Cors Istio 0-1 使用Istio实现Cors # Cors # Cors(Cross-Origin Resource Sharing):跨域资源共享,是一种基于 HTTP Header 的机制,该机制通过允许服务器标示除了它自己以外的其它 origin(域,协议和端口),这样浏览器可以访问加载这些资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送的真实请求,该机制通过浏览器发起一个到服务器托管的跨源资源的"预检"请求。在预检中,浏览器发送的头中标示有 HTTP 方法和真实请求中会用到的头。 跨源HTTP请求的一个例子:运行在 https://a.com 的JavaScript代码使用 XMLHttpRequest来发起一个到 https://b.com/data.js 的请求。 出于安全性,浏览器限制脚本内发起的跨域 HTTP 请求。 例如,XMLHttpRequest 和 Fetch API 遵循同源策略。 这意味着使用这些 API 的 Web 应用程序只能从加载应用程序的同一个域请求 HTTP 资源,除非响应报文包含了正确 CORS 响应头。 @@ -14,9 +14,9 @@ Istio 实现 # 基于 Istio VirtualService 的配置实现。 官方文档: Istio / Virtual Service#CorsPolicy 在目标服务上设置允许的请求域 Hello: -apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: b spec: http: - route: - destination: host: b.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Istio Cors | 🍁 秋河落叶</title> +apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: b spec: http: - route: - destination: host: b.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Istio Cors | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/istio/istio-cors/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Istio Cors</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#cors>Cors</a></li><li><a href=#istio-实现>Istio 实现</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/istio/>Istio</a> / Istio 0-1 使用Istio实现Cors</p><h1 id=istio-0-1-使用istio实现cors>Istio 0-1 使用Istio实现Cors diff --git a/istio/istio-timeout/index.html b/istio/istio-timeout/index.html index efd15bad..3c331200 100644 --- a/istio/istio-timeout/index.html +++ b/istio/istio-timeout/index.html @@ -6,7 +6,7 @@ 配置服务 VirtualService 既可实现: apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: myapp spec: hosts: - myapp http: - route: - destination: host: myapp subset: v1 timeout: 1s timeout:请求超过设定的超时时间,响应返回 504 请求超时。 « Istio 0-1 使用Istio实现Cors -» 应用层级设置访问白名单"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/istio-timeout/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / 使用 Istio 实现服务超时 +» 应用层级设置访问白名单"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/istio-timeout/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / 使用 Istio 实现服务超时 使用 Istio 实现服务超时 # 参考 # https://www.servicemesher.com/blog/circuit-breaking-and-outlier-detection-in-istio/ 超时 # 为了防止无限期的等待服务,一般都会给服务设置超时时间,AWS 的 LoadBalancer 默认的超时时间是 60s。但是不同的服务,可能需要不同的超时设置,例如 DocumentApi 超时时间可能需要设置的长一点。 LoadBalancer 的超时是全局的,我们基于 Istio 服务网格集成了针对单个服务的超时功能。 重试 # 重试也是一个服务很常用的功能,例如某次请求分配到了一个问题节点,请求失败,则自动重试特定次数。 @@ -14,9 +14,9 @@ 配置服务 VirtualService 既可实现: apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: myapp spec: hosts: - myapp http: - route: - destination: host: myapp subset: v1 timeout: 1s timeout:请求超过设定的超时时间,响应返回 504 请求超时。 « Istio 0-1 使用Istio实现Cors -» 应用层级设置访问白名单"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Istio Timeout | 🍁 秋河落叶</title> +» 应用层级设置访问白名单"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Istio Timeout | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/istio/istio-timeout/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Istio Timeout</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#参考>参考</a></li><li><a href=#超时>超时</a></li><li><a href=#重试>重试</a></li><li><a href=#熔断限流>熔断/限流</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/istio/>Istio</a> / 使用 Istio 实现服务超时</p><h1 id=使用-istio-实现服务超时>使用 Istio 实现服务超时 diff --git a/istio/istio-white-manifest/index.html b/istio/istio-white-manifest/index.html index 0a884fb0..2f71d31a 100644 --- a/istio/istio-white-manifest/index.html +++ b/istio/istio-white-manifest/index.html @@ -5,16 +5,16 @@ 通过: https://www.example.com/foo 访问 foo; 通过: https://www.example.com/bar 访问 bar; 插曲 # 按照 istio 官方文档,使用 AuthorizationPolicy 即可实现基于应用层级的访问白名单设置: -apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: foo spec: selector: matchLabels: app: foo action: ALLOW rules: - from: - source: ipBlocks: ["1.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/istio-white-manifest/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Istio / 应用层级设置访问白名单 +apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: foo spec: selector: matchLabels: app: foo action: ALLOW rules: - from: - source: ipBlocks: ["1.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/istio-white-manifest/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Istio / 应用层级设置访问白名单 应用层级设置访问白名单 # 需求 # 两个应用,foo 和 bar,应用 foo 只允许 IP 地址为 1.2.3.4 访问,应用 bar 只允许 IP 地址为 5.6.7.8 访问。 实现 # 基于 istio 的 AuthorizationPolicy 实现。 假设,现在 K8s 集群中已经安装 istio,并且有一个正在运行着的 istio-ingressgateway 转发应用 foo 和 bar: 通过: https://www.example.com/foo 访问 foo; 通过: https://www.example.com/bar 访问 bar; 插曲 # 按照 istio 官方文档,使用 AuthorizationPolicy 即可实现基于应用层级的访问白名单设置: -apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: foo spec: selector: matchLabels: app: foo action: ALLOW rules: - from: - source: ipBlocks: ["1.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Istio White Manifest | 🍁 秋河落叶</title> +apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: foo spec: selector: matchLabels: app: foo action: ALLOW rules: - from: - source: ipBlocks: ["1.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Istio White Manifest | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/istio/istio-white-manifest/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Istio White Manifest</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#需求>需求</a></li><li><a href=#实现>实现</a><ul><li><a href=#插曲>插曲</a></li><li><a href=#最终方案>最终方案</a></li></ul></li><li><a href=#附录>附录</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/istio/>Istio</a> / 应用层级设置访问白名单</p><h1 id=应用层级设置访问白名单>应用层级设置访问白名单 diff --git a/istio/tls-transform/index.html b/istio/tls-transform/index.html index a4d2e51b..982c5900 100644 --- a/istio/tls-transform/index.html +++ b/istio/tls-transform/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Istio / 实现 Https 协议的转发 实现 Https 协议的转发 # apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: demo spec: http: - headers: request: set: X-Forwarded-Proto: https match: - uri: prefix: / name: demo.default « 应用层级设置访问白名单 -» Istio 0-1 流量管理方案"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/tls-transform/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / 实现 Https 协议的转发 +» Istio 0-1 流量管理方案"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/tls-transform/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / 实现 Https 协议的转发 实现 Https 协议的转发 # apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: demo spec: http: - headers: request: set: X-Forwarded-Proto: https match: - uri: prefix: / name: demo.default « 应用层级设置访问白名单 -» Istio 0-1 流量管理方案"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Tls Transform | 🍁 秋河落叶</title> +» Istio 0-1 流量管理方案"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Tls Transform | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/istio/tls-transform/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Tls Transform</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/istio/>Istio</a> / 实现 Https 协议的转发</p><h1 id=实现-https-协议的转发>实现 Https 协议的转发 diff --git a/istio/traffic-management/index.html b/istio/traffic-management/index.html index d303a051..7adfac3e 100644 --- a/istio/traffic-management/index.html +++ b/istio/traffic-management/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Istio / Istio 0-1 流量管理方案 Istio 0-1 流量管理方案 # 设置 istio-system 命名空间下 istiod Deployment 的环境变量: PILOT_ENABLE_VIRTUAL_SERVICE_DELEGATE =true: -« 实现 Https 协议的转发"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/traffic-management/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / Istio 0-1 流量管理方案 +« 实现 Https 协议的转发"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/istio/traffic-management/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Istio / Istio 0-1 流量管理方案 Istio 0-1 流量管理方案 # 设置 istio-system 命名空间下 istiod Deployment 的环境变量: PILOT_ENABLE_VIRTUAL_SERVICE_DELEGATE =true: -« 实现 Https 协议的转发"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Traffic Management | 🍁 秋河落叶</title> +« 实现 Https 协议的转发"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="istio"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Traffic Management | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/istio/traffic-management/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Traffic Management</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/istio/>Istio</a> / Istio 0-1 流量管理方案</p><h1 id=istio-0-1-流量管理方案>Istio 0-1 流量管理方案 diff --git a/kubernetes/anti-affinity-improves-service-availability/index.html b/kubernetes/anti-affinity-improves-service-availability/index.html index fc1b88af..5a10d2aa 100644 --- a/kubernetes/anti-affinity-improves-service-availability/index.html +++ b/kubernetes/anti-affinity-improves-service-availability/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Kubernetes / 反亲和性提高服务可用性 反亲和性提高服务可用性 # 在 Kubernetes 中部署服务时,我们通常会部署多副本来提高服务的可用性。但是当这些副本集中部署在一个节点,而且很不幸,该节点出现故障,那么服务很容易陷入不可用状态。 下面介绍一种方法,将服务副本分散部署在不同的节点(把鸡蛋放在不同的篮子里),避免单个节点故障导致服务多副本毁坏,提高服务可用性。 -反亲和 # apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: selector: matchLabels: app: nginx replicas: 5 template: metadata: labels: app: nginx spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - nginx topologyKey: kubernetes.io/hostname containers: - name: nginx image: nginx ports: - name: tcp containerPort: 80 使用 kubernetes.io/hostname 作为拓扑域,查看匹配规则,即同一打有同样标签 app=nginx 的 pod 会调度到不同的节点。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/anti-affinity-improves-service-availability/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 反亲和性提高服务可用性 +反亲和 # apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: selector: matchLabels: app: nginx replicas: 5 template: metadata: labels: app: nginx spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - nginx topologyKey: kubernetes.io/hostname containers: - name: nginx image: nginx ports: - name: tcp containerPort: 80 使用 kubernetes.io/hostname 作为拓扑域,查看匹配规则,即同一打有同样标签 app=nginx 的 pod 会调度到不同的节点。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/anti-affinity-improves-service-availability/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 反亲和性提高服务可用性 反亲和性提高服务可用性 # 在 Kubernetes 中部署服务时,我们通常会部署多副本来提高服务的可用性。但是当这些副本集中部署在一个节点,而且很不幸,该节点出现故障,那么服务很容易陷入不可用状态。 下面介绍一种方法,将服务副本分散部署在不同的节点(把鸡蛋放在不同的篮子里),避免单个节点故障导致服务多副本毁坏,提高服务可用性。 -反亲和 # apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: selector: matchLabels: app: nginx replicas: 5 template: metadata: labels: app: nginx spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - nginx topologyKey: kubernetes.io/hostname containers: - name: nginx image: nginx ports: - name: tcp containerPort: 80 使用 kubernetes.io/hostname 作为拓扑域,查看匹配规则,即同一打有同样标签 app=nginx 的 pod 会调度到不同的节点。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Anti Affinity Improves Service Availability | 🍁 秋河落叶</title> +反亲和 # apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: selector: matchLabels: app: nginx replicas: 5 template: metadata: labels: app: nginx spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - nginx topologyKey: kubernetes.io/hostname containers: - name: nginx image: nginx ports: - name: tcp containerPort: 80 使用 kubernetes.io/hostname 作为拓扑域,查看匹配规则,即同一打有同样标签 app=nginx 的 pod 会调度到不同的节点。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Anti Affinity Improves Service Availability | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/anti-affinity-improves-service-availability/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Anti Affinity Improves Service Availability</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#反亲和>反亲和</a><ul><li><a href=#亲和性反亲和性调度策略比较>亲和性/反亲和性调度策略比较</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 反亲和性提高服务可用性</p><h1 id=反亲和性提高服务可用性>反亲和性提高服务可用性 diff --git a/kubernetes/apiserver-builder/index.html b/kubernetes/apiserver-builder/index.html index f6b570cd..3d2075dc 100644 --- a/kubernetes/apiserver-builder/index.html +++ b/kubernetes/apiserver-builder/index.html @@ -3,14 +3,14 @@ ⚠️ 注意:由于历史原因需要进入 $(go env GOPATH)/src/<package> 包目录下执行初始化命令。 mkdir -p $(go env GOPATH)/src/github.com/poneding/apiserver-demo && cd $(go env GOPATH)/src/github.com/poneding/apiserver-demo apiserver-boot init repo --domain k8sdev.poneding.com 创建 API: # apiserver-boot create <group> <version> <resource> apiserver-boot create demo v1alpha1 User apiserver-boot create group version resource --group demo --version v1alpha1 --kind User 参考 # https://github.com/kubernetes-sigs/apiserver-builder-alpha/blob/master/docs/tools_user_guide.md https://github.com/kubernetes-sigs/apiserver-builder-alpha/blob/master/README.md « 反亲和性提高服务可用性 -» apiserver"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/apiserver-builder/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / apiserver-builder +» apiserver"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/apiserver-builder/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / apiserver-builder apiserver-builder # 安装 # go install sigs.k8s.io/apiserver-builder-alpha/cmd/apiserver-boot@v1.23.0 搭建 # 初始化项目: ⚠️ 注意:由于历史原因需要进入 $(go env GOPATH)/src/<package> 包目录下执行初始化命令。 mkdir -p $(go env GOPATH)/src/github.com/poneding/apiserver-demo && cd $(go env GOPATH)/src/github.com/poneding/apiserver-demo apiserver-boot init repo --domain k8sdev.poneding.com 创建 API: # apiserver-boot create <group> <version> <resource> apiserver-boot create demo v1alpha1 User apiserver-boot create group version resource --group demo --version v1alpha1 --kind User 参考 # https://github.com/kubernetes-sigs/apiserver-builder-alpha/blob/master/docs/tools_user_guide.md https://github.com/kubernetes-sigs/apiserver-builder-alpha/blob/master/README.md « 反亲和性提高服务可用性 -» apiserver"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Apiserver Builder | 🍁 秋河落叶</title> +» apiserver"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Apiserver Builder | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/apiserver-builder/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Apiserver Builder</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装>安装</a></li><li><a href=#搭建>搭建</a></li><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / apiserver-builder</p><h1 id=apiserver-builder>apiserver-builder diff --git a/kubernetes/apiserver/index.html b/kubernetes/apiserver/index.html index 19b4c0ee..902bce54 100644 --- a/kubernetes/apiserver/index.html +++ b/kubernetes/apiserver/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Kubernetes / apiserver apiserver # 每一个 api 版本均有一个 apiservice 与之对应 k api-versions | wc -l 30 k get apiservices.apiregistration.k8s.io| wc -l 30 « apiserver-builder -» 二进制搭建 K8s - 1 机器准备"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/apiserver/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / apiserver +» 二进制搭建 K8s - 1 机器准备"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/apiserver/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / apiserver apiserver # 每一个 api 版本均有一个 apiservice 与之对应 k api-versions | wc -l 30 k get apiservices.apiregistration.k8s.io| wc -l 30 « apiserver-builder -» 二进制搭建 K8s - 1 机器准备"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Apiserver | 🍁 秋河落叶</title> +» 二进制搭建 K8s - 1 机器准备"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Apiserver | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/apiserver/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Apiserver</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / apiserver</p><h1 id=apiserver>apiserver diff --git a/kubernetes/binary-build-k8s-01-prepare-nodes/index.html b/kubernetes/binary-build-k8s-01-prepare-nodes/index.html index b9bd8726..262aa5f3 100644 --- a/kubernetes/binary-build-k8s-01-prepare-nodes/index.html +++ b/kubernetes/binary-build-k8s-01-prepare-nodes/index.html @@ -7,7 +7,7 @@ 虚拟机能够连网,相关的安装包文件下载和 Docker 下载镜像需要使用到外网。 当前虚拟机: k8s-master01: 192.168.115.131 k8s-node01: 192.168.115.132 k8s-node02: 192.168.115.133 虚拟机初始化 # 不做特殊说明的话: -以下操作需要在 Master 和 Node 的所有机器上执行"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/binary-build-k8s-01-prepare-nodes/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 二进制搭建 K8s - 1 机器准备 +以下操作需要在 Master 和 Node 的所有机器上执行"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/binary-build-k8s-01-prepare-nodes/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 二进制搭建 K8s - 1 机器准备 二进制搭建 K8s - 1 机器准备 # 写在前面 # 记录和分享使用二进制搭建 K8s 集群的详细过程,由于操作比较冗长,大概会分四篇写完: 机器准备: 部署 etcd 集群: 部署 Master: 部署 Node: 整个目标是使用二进制的方式搭建一个小型 K8s 集群(1 个 Master,2 个 Node),供自己学习测试。 至于为什么要自己去用二进制的方式去搭建 K8s,而不是选用 minikube 或者 kubeadm 去搭建? @@ -16,9 +16,9 @@ 虚拟机能够连网,相关的安装包文件下载和 Docker 下载镜像需要使用到外网。 当前虚拟机: k8s-master01: 192.168.115.131 k8s-node01: 192.168.115.132 k8s-node02: 192.168.115.133 虚拟机初始化 # 不做特殊说明的话: -以下操作需要在 Master 和 Node 的所有机器上执行"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Binary Build K8s 01 Prepare Nodes | 🍁 秋河落叶</title> +以下操作需要在 Master 和 Node 的所有机器上执行"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Binary Build K8s 01 Prepare Nodes | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/binary-build-k8s-01-prepare-nodes/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Binary Build K8s 01 Prepare Nodes</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#写在前面>写在前面</a></li><li><a href=#准备工作>准备工作</a></li><li><a href=#虚拟机初始化>虚拟机初始化</a><ul><li><a href=#配置网络接口>配置网络接口</a></li><li><a href=#安装基础软件>安装基础软件</a></li><li><a href=#修改主机名并添加-hosts>修改主机名并添加 hosts</a></li><li><a href=#添加-hosts>添加 hosts</a></li><li><a href=#关闭防火墙selinuxswap>关闭防火墙、selinux、swap</a></li><li><a href=#同步时间>同步时间</a></li><li><a href=#master-准备文件>Master 准备文件</a></li><li><a href=#node-准备文件>Node 准备文件</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 二进制搭建 K8s - 1 机器准备</p><h1 id=二进制搭建-k8s---1-机器准备>二进制搭建 K8s - 1 机器准备 diff --git a/kubernetes/binary-build-k8s-02-deploy-etcd/index.html b/kubernetes/binary-build-k8s-02-deploy-etcd/index.html index a7c356c1..0410a9c2 100644 --- a/kubernetes/binary-build-k8s-02-deploy-etcd/index.html +++ b/kubernetes/binary-build-k8s-02-deploy-etcd/index.html @@ -3,14 +3,14 @@ 机器准备: 部署 etcd 集群: 部署 Master: 部署 Node: etcd 作为 K8s 的数据库,需要首先安装,为其他组件做服务基础。 etcd 是一个分布式的数据库系统,为了模拟 etcd 的高可用,我们将 etcd 部署在三台虚拟机上,正好就部署在 K8s 集群所使用的三台机器上吧。 etcd 集群,K8s 组件之间通信,为了安全可靠,我们最好启用 HTTPS 安全机制。K8s 提供了基于 CA 签名的双向数字证书认证方式和简单的基于 HTTP Base 或 Token 的认证方式,其中 CA 证书方式的安全性最高。我们使用 cfssl 为我们的 K8s 集群配置 CA 证书,此外也可以使用 openssl。 -安装 cfssl # 在 Master 机器执行:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/binary-build-k8s-02-deploy-etcd/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 二进制搭建 K8s - 2 部署 etcd 集群 +安装 cfssl # 在 Master 机器执行:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/binary-build-k8s-02-deploy-etcd/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 二进制搭建 K8s - 2 部署 etcd 集群 二进制搭建 K8s - 2 部署 etcd 集群 # 写在前面 # 记录和分享使用二进制搭建 K8s 集群的详细过程,由于操作比较冗长,大概会分四篇写完: 机器准备: 部署 etcd 集群: 部署 Master: 部署 Node: etcd 作为 K8s 的数据库,需要首先安装,为其他组件做服务基础。 etcd 是一个分布式的数据库系统,为了模拟 etcd 的高可用,我们将 etcd 部署在三台虚拟机上,正好就部署在 K8s 集群所使用的三台机器上吧。 etcd 集群,K8s 组件之间通信,为了安全可靠,我们最好启用 HTTPS 安全机制。K8s 提供了基于 CA 签名的双向数字证书认证方式和简单的基于 HTTP Base 或 Token 的认证方式,其中 CA 证书方式的安全性最高。我们使用 cfssl 为我们的 K8s 集群配置 CA 证书,此外也可以使用 openssl。 -安装 cfssl # 在 Master 机器执行:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Binary Build K8s 02 Deploy Etcd | 🍁 秋河落叶</title> +安装 cfssl # 在 Master 机器执行:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Binary Build K8s 02 Deploy Etcd | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/binary-build-k8s-02-deploy-etcd/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Binary Build K8s 02 Deploy Etcd</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#写在前面>写在前面</a></li><li><a href=#安装-cfssl>安装 cfssl</a></li><li><a href=#制作-etcd-证书>制作 etcd 证书</a></li><li><a href=#安装-etcd-集群>安装 etcd 集群</a></li><li><a href=#配置-etcd>配置 etcd</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 二进制搭建 K8s - 2 部署 etcd 集群</p><h1 id=二进制搭建-k8s---2-部署-etcd-集群>二进制搭建 K8s - 2 部署 etcd 集群 diff --git a/kubernetes/binary-build-k8s-03-deploy-master/index.html b/kubernetes/binary-build-k8s-03-deploy-master/index.html index 9e917fc9..fcd4583d 100644 --- a/kubernetes/binary-build-k8s-03-deploy-master/index.html +++ b/kubernetes/binary-build-k8s-03-deploy-master/index.html @@ -2,13 +2,13 @@ 二进制搭建 K8s - 3 部署 Master # 写在前面 # 记录和分享使用二进制搭建 K8s 集群的详细过程,由于操作比较冗长,大概会分四篇写完: 机器准备: 部署 etcd 集群: 部署 Master: 部署 Node: 我们已经知道在 K8s 的 Master 上存在着 kube-apiserver、kube-controller-manager、kube-scheduler 三大组件。本篇介绍在 Master 机器安装这些组件,除此之外,如果想在 Master 机器上操作集群,还需要安装 kubectl 工具。 安装 kubectl # kubernetes 的安装包里已经将 kubectl 包含进去了,部署很简单: -cd /root/kubernetes/resources/ tar -zxvf ./kubernetes-server-linux-amd64.tar.gz cp kubernetes/server/bin/kubectl /usr/bin kubectl api-versions 制作 kubernetes 证书 # mkdir /root/kubernetes/resources/cert/kubernetes /etc/kubernetes/{ssl,bin} -p cp kubernetes/server/bin/kube-apiserver kubernetes/server/bin/kube-controller-manager kubernetes/server/bin/kube-scheduler /etc/kubernetes/bin cd /root/kubernetes/resources/cert/kubernetes 接下来都在 Master 机器上执行,编辑 ca-config."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/binary-build-k8s-03-deploy-master/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 二进制搭建 K8s - 3 部署 Master +cd /root/kubernetes/resources/ tar -zxvf ./kubernetes-server-linux-amd64.tar.gz cp kubernetes/server/bin/kubectl /usr/bin kubectl api-versions 制作 kubernetes 证书 # mkdir /root/kubernetes/resources/cert/kubernetes /etc/kubernetes/{ssl,bin} -p cp kubernetes/server/bin/kube-apiserver kubernetes/server/bin/kube-controller-manager kubernetes/server/bin/kube-scheduler /etc/kubernetes/bin cd /root/kubernetes/resources/cert/kubernetes 接下来都在 Master 机器上执行,编辑 ca-config."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/binary-build-k8s-03-deploy-master/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 二进制搭建 K8s - 3 部署 Master 二进制搭建 K8s - 3 部署 Master # 写在前面 # 记录和分享使用二进制搭建 K8s 集群的详细过程,由于操作比较冗长,大概会分四篇写完: 机器准备: 部署 etcd 集群: 部署 Master: 部署 Node: 我们已经知道在 K8s 的 Master 上存在着 kube-apiserver、kube-controller-manager、kube-scheduler 三大组件。本篇介绍在 Master 机器安装这些组件,除此之外,如果想在 Master 机器上操作集群,还需要安装 kubectl 工具。 安装 kubectl # kubernetes 的安装包里已经将 kubectl 包含进去了,部署很简单: -cd /root/kubernetes/resources/ tar -zxvf ./kubernetes-server-linux-amd64.tar.gz cp kubernetes/server/bin/kubectl /usr/bin kubectl api-versions 制作 kubernetes 证书 # mkdir /root/kubernetes/resources/cert/kubernetes /etc/kubernetes/{ssl,bin} -p cp kubernetes/server/bin/kube-apiserver kubernetes/server/bin/kube-controller-manager kubernetes/server/bin/kube-scheduler /etc/kubernetes/bin cd /root/kubernetes/resources/cert/kubernetes 接下来都在 Master 机器上执行,编辑 ca-config."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Binary Build K8s 03 Deploy Master | 🍁 秋河落叶</title> +cd /root/kubernetes/resources/ tar -zxvf ./kubernetes-server-linux-amd64.tar.gz cp kubernetes/server/bin/kubectl /usr/bin kubectl api-versions 制作 kubernetes 证书 # mkdir /root/kubernetes/resources/cert/kubernetes /etc/kubernetes/{ssl,bin} -p cp kubernetes/server/bin/kube-apiserver kubernetes/server/bin/kube-controller-manager kubernetes/server/bin/kube-scheduler /etc/kubernetes/bin cd /root/kubernetes/resources/cert/kubernetes 接下来都在 Master 机器上执行,编辑 ca-config."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Binary Build K8s 03 Deploy Master | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/binary-build-k8s-03-deploy-master/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Binary Build K8s 03 Deploy Master</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#写在前面>写在前面</a></li><li><a href=#安装-kubectl>安装 kubectl</a></li><li><a href=#制作-kubernetes-证书>制作 kubernetes 证书</a></li><li><a href=#创建-tlsbootstrapping-token>创建 TLSBootstrapping Token</a></li><li><a href=#安装-kube-apiserver>安装 kube-apiserver</a></li><li><a href=#安装-kube-controller-manager>安装 kube-controller-manager</a></li><li><a href=#安装-kube-scheduler>安装 kube-scheduler</a></li><li><a href=#kubelet-bootstrap-授权>kubelet-bootstrap 授权</a></li><li><a href=#apiserver-授权-kubelet>apiserver 授权 kubelet</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 二进制搭建 K8s - 3 部署 Master</p><h1 id=二进制搭建-k8s---3-部署-master>二进制搭建 K8s - 3 部署 Master diff --git a/kubernetes/binary-build-k8s-04-deploy-worker/index.html b/kubernetes/binary-build-k8s-04-deploy-worker/index.html index b250e72d..29637bf4 100644 --- a/kubernetes/binary-build-k8s-04-deploy-worker/index.html +++ b/kubernetes/binary-build-k8s-04-deploy-worker/index.html @@ -3,14 +3,14 @@ 机器准备: 部署 etcd 集群: 部署 Master: 部署 Node: K8s 的 Node 上需要运行 kubelet 和 kube-proxy。本篇介绍在 Node 机器安装这两个组件,除此之外,安装通信需要的 cni 插件。 本篇的执行命令需要在准备的两台Node机器上执行。 安装 docker # 可以参照官网: https://docs.docker.com/engine/install/ -# 卸载老版本或重装 docker 时执行第一行 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine -y # 安装 docker yum install -y yum-utils yum-config-manager \ --add-repo \ https://download."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/binary-build-k8s-04-deploy-worker/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 二进制搭建 K8s - 4 部署 Node +# 卸载老版本或重装 docker 时执行第一行 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine -y # 安装 docker yum install -y yum-utils yum-config-manager \ --add-repo \ https://download."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/binary-build-k8s-04-deploy-worker/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 二进制搭建 K8s - 4 部署 Node 二进制搭建 K8s - 4 部署 Node # 写在前面 # 记录和分享使用二进制搭建 K8s 集群的详细过程,由于操作比较冗长,大概会分四篇写完: 机器准备: 部署 etcd 集群: 部署 Master: 部署 Node: K8s 的 Node 上需要运行 kubelet 和 kube-proxy。本篇介绍在 Node 机器安装这两个组件,除此之外,安装通信需要的 cni 插件。 本篇的执行命令需要在准备的两台Node机器上执行。 安装 docker # 可以参照官网: https://docs.docker.com/engine/install/ -# 卸载老版本或重装 docker 时执行第一行 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine -y # 安装 docker yum install -y yum-utils yum-config-manager \ --add-repo \ https://download."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Binary Build K8s 04 Deploy Worker | 🍁 秋河落叶</title> +# 卸载老版本或重装 docker 时执行第一行 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine -y # 安装 docker yum install -y yum-utils yum-config-manager \ --add-repo \ https://download."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Binary Build K8s 04 Deploy Worker | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/binary-build-k8s-04-deploy-worker/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Binary Build K8s 04 Deploy Worker</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#写在前面>写在前面</a></li><li><a href=#安装-docker>安装 docker</a></li><li><a href=#安装-kubelet>安装 kubelet</a></li><li><a href=#安装-kube-proxy>安装 kube-proxy</a></li><li><a href=#部署-cni-网络插件>部署 cni 网络插件</a></li><li><a href=#部署-flannel-集群网络>部署 Flannel 集群网络</a></li><li><a href=#k8s-集群测试>K8s 集群测试</a></li><li><a href=#结束语>结束语</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 二进制搭建 K8s - 4 部署 Node</p><h1 id=二进制搭建-k8s---4-部署-node>二进制搭建 K8s - 4 部署 Node diff --git a/kubernetes/cloud-native-understood/index.html b/kubernetes/cloud-native-understood/index.html index 65345a9b..56f28993 100644 --- a/kubernetes/cloud-native-understood/index.html +++ b/kubernetes/cloud-native-understood/index.html @@ -5,16 +5,16 @@ 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。 云原生本身不能称为是一种架构,它首先是一种基础设施,运行在其上的应用称作云原生应用,只有符合云原生设计哲学的应用架构才叫云原生应用架构。 « 二进制搭建 K8s - 4 部署 Node -» 集群联邦"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/cloud-native-understood/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 尝试理解云原生 +» 集群联邦"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/cloud-native-understood/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 尝试理解云原生 Kubernetes 0-1 尝试理解云原生 # 最初的云原生定义: 应用容器化 面向微服务架构 应用支持容器编排调度 重新定义云原生: 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。 云原生本身不能称为是一种架构,它首先是一种基础设施,运行在其上的应用称作云原生应用,只有符合云原生设计哲学的应用架构才叫云原生应用架构。 « 二进制搭建 K8s - 4 部署 Node -» 集群联邦"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Cloud Native Understood | 🍁 秋河落叶</title> +» 集群联邦"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Cloud Native Understood | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/cloud-native-understood/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Cloud Native Understood</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 0-1 尝试理解云原生</p><h1 id=kubernetes-0-1-尝试理解云原生>Kubernetes 0-1 尝试理解云原生 diff --git a/kubernetes/cluster-federation/index.html b/kubernetes/cluster-federation/index.html index 3e8ff07a..dc456eaa 100644 --- a/kubernetes/cluster-federation/index.html +++ b/kubernetes/cluster-federation/index.html @@ -7,7 +7,7 @@ 这其中通过三个概念来实现: Template:定义了联邦资源的模板,用于指定联邦资源的属性 Placement:定义了联邦集群资源的部署位置,用于指定联邦资源的部署位置。 Overrides:定义了联邦集群资源的覆盖规则,用于覆盖联邦资源的属性。 kubefed 为所有的 Kubernetes 原生资源提供了对应的联邦资源,例如 FederatedService、FederatedDeployment 等。 联邦资源中定义了原生资源的 Template、又通过 Overrides 定义了资源同步到不同的工作集群时需要做的变更,例如: -kind: FederatedDeployment ... spec: ... overrides: # Apply overrides to cluster1 - clusterName: cluster1 clusterOverrides: # Set the replicas field to 5 - path: "/spec/replicas" value: 5 # Set the image of the first container - path: "/spec/template/spec/containers/0/image" value: "nginx:1.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/cluster-federation/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / 集群联邦 +kind: FederatedDeployment ... spec: ... overrides: # Apply overrides to cluster1 - clusterName: cluster1 clusterOverrides: # Set the replicas field to 5 - path: "/spec/replicas" value: 5 # Set the image of the first container - path: "/spec/template/spec/containers/0/image" value: "nginx:1.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/cluster-federation/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / 集群联邦 集群联邦 # 云服务提供商的集群联邦是一种将多个独立的 Kubernetes 集群组合在一起的方法。这种方法允许用户在多个集群之间共享资源,例如 Pods、Services、Deployments 等。集群联邦的目标是在多个集群上引入新的控制面板,提供一个统一的视图,使用户可以在多个集群之间无缝地部署和管理应用程序。 概念 # 数据中心:Region,是一个物理位置,包含多个可用性区域。 可用性区域:Availability Zone(AZ),是一个独立的数据中心,包含 N 多服务器节点。 管理集群:或者宿主集群,是一个集群联邦的核心,用于管理多个工作集群。 联邦集群:或者工作集群,是一个普通的 Kubernetes 集群,用于部署工作负载。 集群联邦需要解决的问题 # 跨集群服务发现:连通多个集群,使得服务可以在多个集群之间发现,让请求跨越集群边界。 跨集群调度:将负载调度到多个集群,保证服务的稳定性以及可用性。 集群联邦开源项目 # Kubefed # 项目地址 之前由 Kubernetes 官方多集群兴趣小组开发,目前已经停止维护。 @@ -16,9 +16,9 @@ 这其中通过三个概念来实现: Template:定义了联邦资源的模板,用于指定联邦资源的属性 Placement:定义了联邦集群资源的部署位置,用于指定联邦资源的部署位置。 Overrides:定义了联邦集群资源的覆盖规则,用于覆盖联邦资源的属性。 kubefed 为所有的 Kubernetes 原生资源提供了对应的联邦资源,例如 FederatedService、FederatedDeployment 等。 联邦资源中定义了原生资源的 Template、又通过 Overrides 定义了资源同步到不同的工作集群时需要做的变更,例如: -kind: FederatedDeployment ... spec: ... overrides: # Apply overrides to cluster1 - clusterName: cluster1 clusterOverrides: # Set the replicas field to 5 - path: "/spec/replicas" value: 5 # Set the image of the first container - path: "/spec/template/spec/containers/0/image" value: "nginx:1.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Cluster Federation | 🍁 秋河落叶</title> +kind: FederatedDeployment ... spec: ... overrides: # Apply overrides to cluster1 - clusterName: cluster1 clusterOverrides: # Set the replicas field to 5 - path: "/spec/replicas" value: 5 # Set the image of the first container - path: "/spec/template/spec/containers/0/image" value: "nginx:1.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Cluster Federation | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/cluster-federation/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Cluster Federation</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#概念>概念</a></li><li><a href=#集群联邦需要解决的问题>集群联邦需要解决的问题</a></li><li><a href=#集群联邦开源项目>集群联邦开源项目</a><ul><li><a href=#kubefed>Kubefed</a></li><li><a href=#karmada>Karmada</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 集群联邦</p><h1 id=集群联邦>集群联邦 diff --git a/kubernetes/configmap-understood/index.html b/kubernetes/configmap-understood/index.html index db0ab55e..102158a9 100644 --- a/kubernetes/configmap-understood/index.html +++ b/kubernetes/configmap-understood/index.html @@ -6,7 +6,7 @@ 单行命令创建 ConfigMap # 创建一个键值对的 ConfigMap: kubectl create configmap first-config --from-literal=user=admin 创建完成之后,使用 kubectl describe configmap first-config 查看,可以看到这个 configmap 的键值内容。 可以使用多组 --from-literal=<key>=<value> 参数,在 configmap 中定义多组键值对。 创建一个文件内容的 ConfigMap 假如我当前有一个配置文件 app.json,文件内容如下: -{ "App": "MyApp", "Version": "v1.0" } 使用以下命令创建 ConfigMap:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/configmap-understood/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / 了解 ConfigMap +{ "App": "MyApp", "Version": "v1.0" } 使用以下命令创建 ConfigMap:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/configmap-understood/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / 了解 ConfigMap 了解 ConfigMap # 几乎所有的应用都需要配置信息,在 K8s 部署应用,最佳实践是将应用的配置信息(环境变量或者配置文件)和程序本身分离,这样配置信息的更新和复用都可以更简单,也使得程序更加灵活。 Kubernetes 允许将配置选项分离到单独的资源对象 ConfigMap 中,本质上是一个键值对映射,值可以是一个短 string 串,也可以是一个完整的配置文件。 本篇主要介绍 ConfigMap 资源的创建和使用。 @@ -14,9 +14,9 @@ 单行命令创建 ConfigMap # 创建一个键值对的 ConfigMap: kubectl create configmap first-config --from-literal=user=admin 创建完成之后,使用 kubectl describe configmap first-config 查看,可以看到这个 configmap 的键值内容。 可以使用多组 --from-literal=<key>=<value> 参数,在 configmap 中定义多组键值对。 创建一个文件内容的 ConfigMap 假如我当前有一个配置文件 app.json,文件内容如下: -{ "App": "MyApp", "Version": "v1.0" } 使用以下命令创建 ConfigMap:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Configmap Understood | 🍁 秋河落叶</title> +{ "App": "MyApp", "Version": "v1.0" } 使用以下命令创建 ConfigMap:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Configmap Understood | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/configmap-understood/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Configmap Understood</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#configmap-的创建>ConfigMap 的创建</a><ul><li><a href=#单行命令创建-configmap>单行命令创建 ConfigMap</a></li><li><a href=#基于资源清单文件创建-configmap>基于资源清单文件创建 ConfigMap</a></li></ul></li><li><a href=#configmap-的使用>ConfigMap 的使用</a><ul><li><a href=#使用-configmap-作为容器的环境变量>使用 ConfigMap 作为容器的环境变量</a></li><li><a href=#使用-configmap-作为-volume-向容器提供文件>使用 ConfigMap 作为 Volume 向容器提供文件</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 了解 ConfigMap</p><h1 id=了解-configmap>了解 ConfigMap diff --git a/kubernetes/delete-es-log-index-scheduler/index.html b/kubernetes/delete-es-log-index-scheduler/index.html index 5fa39af4..689117b8 100644 --- a/kubernetes/delete-es-log-index-scheduler/index.html +++ b/kubernetes/delete-es-log-index-scheduler/index.html @@ -3,14 +3,14 @@ ConfigMap # 这个configMap用来存储一个shell脚本,该shell脚本执行日志索引清除操作: apiVersion: v1 kind: ConfigMap metadata: name: es-log-indices-clear-configmap namespace: efk data: clean-indices.sh: | #/bin/bash LAST_MONTH_DATE=`date -d "1 month ago" +"%Y.%m.%d"` echo Start clear es indices *-${LAST_MONTH_DATE} curl -XDELETE http://elasticsearch:9200/*-${LAST_MONTH_DATE} --- 说明:这里我配置的configmap所在命名空间和efk部署的命名空间一致,并且es的Service的名称是elasticsearch,所以可以使用 http://elasticsearch:9200访问到es服务,否则的话需要是无法访问到的,所以这里需要根据具体情况配置es的服务地址; CronJob # CronJob使用了 poneding/sparrow -apiVersion: batch/v1beta1 kind: CronJob metadata: name: clean-indices namespace: efk spec: schedule: "0 0 1/1 * *" jobTemplate: spec: template: spec: containers: - name: auto-recycle-job image: poneding/sparrow args: ["/bin/sh", "/job/clean-indices.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/delete-es-log-index-scheduler/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / 定期删除 ElasticSearch 日志索引 +apiVersion: batch/v1beta1 kind: CronJob metadata: name: clean-indices namespace: efk spec: schedule: "0 0 1/1 * *" jobTemplate: spec: template: spec: containers: - name: auto-recycle-job image: poneding/sparrow args: ["/bin/sh", "/job/clean-indices.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/delete-es-log-index-scheduler/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / 定期删除 ElasticSearch 日志索引 定期删除 ElasticSearch 日志索引 # 背景 # 当前在 K8s 集群中部署了一套 EFK 日志监控系统,日复一日,ElasticSearch收集的数据越来越多,内存以及存储占用越来越高,需要定期来删除老旧的日志数据,来解放内存和存储空间,考虑到 K8s 中 cronjob 的功能特性,打算使用它制定一个es日志索引清除脚本,定时清除日志数据。 ConfigMap # 这个configMap用来存储一个shell脚本,该shell脚本执行日志索引清除操作: apiVersion: v1 kind: ConfigMap metadata: name: es-log-indices-clear-configmap namespace: efk data: clean-indices.sh: | #/bin/bash LAST_MONTH_DATE=`date -d "1 month ago" +"%Y.%m.%d"` echo Start clear es indices *-${LAST_MONTH_DATE} curl -XDELETE http://elasticsearch:9200/*-${LAST_MONTH_DATE} --- 说明:这里我配置的configmap所在命名空间和efk部署的命名空间一致,并且es的Service的名称是elasticsearch,所以可以使用 http://elasticsearch:9200访问到es服务,否则的话需要是无法访问到的,所以这里需要根据具体情况配置es的服务地址; CronJob # CronJob使用了 poneding/sparrow -apiVersion: batch/v1beta1 kind: CronJob metadata: name: clean-indices namespace: efk spec: schedule: "0 0 1/1 * *" jobTemplate: spec: template: spec: containers: - name: auto-recycle-job image: poneding/sparrow args: ["/bin/sh", "/job/clean-indices.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Delete Es Log Index Scheduler | 🍁 秋河落叶</title> +apiVersion: batch/v1beta1 kind: CronJob metadata: name: clean-indices namespace: efk spec: schedule: "0 0 1/1 * *" jobTemplate: spec: template: spec: containers: - name: auto-recycle-job image: poneding/sparrow args: ["/bin/sh", "/job/clean-indices.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Delete Es Log Index Scheduler | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/delete-es-log-index-scheduler/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Delete Es Log Index Scheduler</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#背景>背景</a></li><li><a href=#configmap>ConfigMap</a></li><li><a href=#cronjob>CronJob</a></li><li><a href=#遇到的问题>遇到的问题</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 定期删除 ElasticSearch 日志索引</p><h1 id=定期删除-elasticsearch-日志索引>定期删除 ElasticSearch 日志索引 diff --git a/kubernetes/delete-k8s-resource-force/index.html b/kubernetes/delete-k8s-resource-force/index.html index 2ad9c476..99695219 100644 --- a/kubernetes/delete-k8s-resource-force/index.html +++ b/kubernetes/delete-k8s-resource-force/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / Kubernetes / 强制删除 K8s 资源 强制删除 K8s 资源 # 强制删除 Pod # kubectl delete po <pod> -n <namespace> --force --grace-period=0 强制删除 PVC # kubectl patch pv <pv> -n <namespace> -p '{"metadata":{"finalizers":null}}' 强制删除 PV # kubectl patch pvc <pvc> -n <namespace> -p '{"metadata":{"finalizers":null}}' 强制删除命名空间 # 在删除 kubesphere 的命名空间时遇到无法删除成功的现象,命名空间一直处于 Terminating 状态。 $ kubectl get ns |grep kubesphere NAME STATUS AGE kubesphere-controls-system Terminating 22d kubesphere-monitoring-system Terminating 21d 在网上找到了一种解决方案。 -首先获取命名空间的 json 文件,'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/delete-k8s-resource-force/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / 强制删除 K8s 资源 +首先获取命名空间的 json 文件,'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/delete-k8s-resource-force/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / 强制删除 K8s 资源 强制删除 K8s 资源 # 强制删除 Pod # kubectl delete po <pod> -n <namespace> --force --grace-period=0 强制删除 PVC # kubectl patch pv <pv> -n <namespace> -p '{"metadata":{"finalizers":null}}' 强制删除 PV # kubectl patch pvc <pvc> -n <namespace> -p '{"metadata":{"finalizers":null}}' 强制删除命名空间 # 在删除 kubesphere 的命名空间时遇到无法删除成功的现象,命名空间一直处于 Terminating 状态。 $ kubectl get ns |grep kubesphere NAME STATUS AGE kubesphere-controls-system Terminating 22d kubesphere-monitoring-system Terminating 21d 在网上找到了一种解决方案。 -首先获取命名空间的 json 文件,'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Delete K8s Resource Force | 🍁 秋河落叶</title> +首先获取命名空间的 json 文件,'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Delete K8s Resource Force | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/delete-k8s-resource-force/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Delete K8s Resource Force</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#强制删除-pod>强制删除 Pod</a></li><li><a href=#强制删除-pvc>强制删除 PVC</a></li><li><a href=#强制删除-pv>强制删除 PV</a></li><li><a href=#强制删除命名空间>强制删除命名空间</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 强制删除 K8s 资源</p><h1 id=强制删除-k8s-资源>强制删除 K8s 资源 diff --git a/kubernetes/gateway-api-practice/index.html b/kubernetes/gateway-api-practice/index.html index 2a9c5ad0..08a963de 100644 --- a/kubernetes/gateway-api-practice/index.html +++ b/kubernetes/gateway-api-practice/index.html @@ -2,13 +2,13 @@ Gateway API 实践 # Gateway API 还在积极开发中,目前已经发布了 v1.0.0 版本。可以通过 gateway-api 文档 获取最新进展。 Gateway API 概述 # Gateway API 是一个 Kubernetes 的扩展 API,它定义了一套 API 来管理网关、路由、TLS 等资源对象,可以用来替代传统的 Ingress。 和 Ingress 一样,Gateway API 也是一个抽象层,它定义了一套 API 接口,这些接口由社区中的不同厂商来实现,比如 nginx、envoy、traefik 等。 -API 清单 # GatewayClass Gateway HTTPRoute GRPCRoute BackendTLSPolicy ReferenceGrant 安装 Gateway API # # 安装最新版 gateway-api CRDs export LATEST=$(curl -s https://api.github.com/repos/kubernetes-sigs/gateway-api/releases/latest | jq -r .tag_name) kubectl apply -f https://github."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/gateway-api-practice/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Gateway API 实践 +API 清单 # GatewayClass Gateway HTTPRoute GRPCRoute BackendTLSPolicy ReferenceGrant 安装 Gateway API # # 安装最新版 gateway-api CRDs export LATEST=$(curl -s https://api.github.com/repos/kubernetes-sigs/gateway-api/releases/latest | jq -r .tag_name) kubectl apply -f https://github."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/gateway-api-practice/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Gateway API 实践 Gateway API 实践 # Gateway API 还在积极开发中,目前已经发布了 v1.0.0 版本。可以通过 gateway-api 文档 获取最新进展。 Gateway API 概述 # Gateway API 是一个 Kubernetes 的扩展 API,它定义了一套 API 来管理网关、路由、TLS 等资源对象,可以用来替代传统的 Ingress。 和 Ingress 一样,Gateway API 也是一个抽象层,它定义了一套 API 接口,这些接口由社区中的不同厂商来实现,比如 nginx、envoy、traefik 等。 -API 清单 # GatewayClass Gateway HTTPRoute GRPCRoute BackendTLSPolicy ReferenceGrant 安装 Gateway API # # 安装最新版 gateway-api CRDs export LATEST=$(curl -s https://api.github.com/repos/kubernetes-sigs/gateway-api/releases/latest | jq -r .tag_name) kubectl apply -f https://github."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Gateway API Practice | 🍁 秋河落叶</title> +API 清单 # GatewayClass Gateway HTTPRoute GRPCRoute BackendTLSPolicy ReferenceGrant 安装 Gateway API # # 安装最新版 gateway-api CRDs export LATEST=$(curl -s https://api.github.com/repos/kubernetes-sigs/gateway-api/releases/latest | jq -r .tag_name) kubectl apply -f https://github."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Gateway API Practice | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/gateway-api-practice/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Gateway API Practice</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#gateway-api-概述>Gateway API 概述</a></li><li><a href=#api-清单>API 清单</a></li><li><a href=#安装-gateway-api>安装 Gateway API</a></li><li><a href=#安装-gateway-controller>安装 Gateway Controller</a></li><li><a href=#实践>实践</a><ul><li><a href=#简单网关路由>简单网关路由</a></li><li><a href=#tls-网关路由certmanager--lets-encrypt>TLS 网关路由:CertManager + Let’s Encrypt</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Gateway API 实践</p><h1 id=gateway-api-实践>Gateway API 实践 diff --git a/kubernetes/helm-k8s-package-management-tool/index.html b/kubernetes/helm-k8s-package-management-tool/index.html index 2747911e..f8352d2d 100644 --- a/kubernetes/helm-k8s-package-management-tool/index.html +++ b/kubernetes/helm-k8s-package-management-tool/index.html @@ -14,7 +14,7 @@ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 ./get-helm.sh ./get-helm.sh 也可以下载指定版本手动安装 下载地址: https://github.com/helm/helm/releases wget https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz tar -zxvf ./helm-v3.5.2-linux-amd64.tar.gz sudo mv linux-amd64/helm /usr/local/bin/helm 第一个helm命令 -helm help 更多安装方式可查看: https://helm."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/helm-k8s-package-management-tool/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 Helm Kubernetes 的包管理工具 +helm help 更多安装方式可查看: https://helm."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/helm-k8s-package-management-tool/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 Helm Kubernetes 的包管理工具 Kubernetes 0-1 Helm Kubernetes 的包管理工具 # Helm is the best way to find, share, and use software built for Kubernetes. Helm是为Kubernetes寻找,共享和使用软件构建的最佳方式。 简介 # Helm帮助管理Kubernetes应用程序,即使是面对复杂的K8s引用,Helm Charts也可以轻松实现定义,安装和升级。 @@ -30,9 +30,9 @@ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 ./get-helm.sh ./get-helm.sh 也可以下载指定版本手动安装 下载地址: https://github.com/helm/helm/releases wget https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz tar -zxvf ./helm-v3.5.2-linux-amd64.tar.gz sudo mv linux-amd64/helm /usr/local/bin/helm 第一个helm命令 -helm help 更多安装方式可查看: https://helm."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Helm K8s Package Management Tool | 🍁 秋河落叶</title> +helm help 更多安装方式可查看: https://helm."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Helm K8s Package Management Tool | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/helm-k8s-package-management-tool/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Helm K8s Package Management Tool</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#简介>简介</a></li><li><a href=#安装>安装</a></li><li><a href=#使用>使用</a></li><li><a href=#定制>定制</a></li><li><a href=#常用命令>常用命令</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 0-1 Helm Kubernetes 的包管理工具</p><h1 id=kubernetes-0-1-helm-kubernetes-的包管理工具>Kubernetes 0-1 Helm Kubernetes 的包管理工具 diff --git a/kubernetes/hpa-usage/index.html b/kubernetes/hpa-usage/index.html index ed7a5a8f..33ee1d9a 100644 --- a/kubernetes/hpa-usage/index.html +++ b/kubernetes/hpa-usage/index.html @@ -4,15 +4,15 @@ Metrics Server的指标数据可以通过Dashboard查看到; 安装Metrics Server # HPA介绍 # HPA(Horizontal Pod Autoscaler,Pod水平自动扩缩),根据Pod的资源利用率自动调整Pod管理器中副本数:Pod资源利用率低,降低Pod副本数,降低资源的使用,节约成本;Pod资源利用率高,增加Pod副本数,提高应用的负载能力。 示例 # 以部署redis为例,现使用redis « Kubernetes 0-1 Helm Kubernetes 的包管理工具 -» HTTP 客户端调用 Kubernetes APIServer"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/hpa-usage/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 实现Pod自动扩缩HPA +» HTTP 客户端调用 Kubernetes APIServer"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/hpa-usage/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 实现Pod自动扩缩HPA Kubernetes 0-1 实现Pod自动扩缩HPA # https://blog.51cto.com/14143894/2458468?source=dra 前言 # 在K8s集群中,我们可以通过部署Metrics Server来持续收集Pod的资源利用指标数据,我们可以根据收集到的指标数据来评估是否需要调整Pod的数量以贴合它的使用需求。例如,当我们观察到Pod的CPU利用率过高时,我们可以适当上调Deployment的Replicas字段值,来手动实现Pod的横向扩容。 Metrics Server的指标数据可以通过Dashboard查看到; 安装Metrics Server # HPA介绍 # HPA(Horizontal Pod Autoscaler,Pod水平自动扩缩),根据Pod的资源利用率自动调整Pod管理器中副本数:Pod资源利用率低,降低Pod副本数,降低资源的使用,节约成本;Pod资源利用率高,增加Pod副本数,提高应用的负载能力。 示例 # 以部署redis为例,现使用redis « Kubernetes 0-1 Helm Kubernetes 的包管理工具 -» HTTP 客户端调用 Kubernetes APIServer"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Hpa Usage | 🍁 秋河落叶</title> +» HTTP 客户端调用 Kubernetes APIServer"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Hpa Usage | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/hpa-usage/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Hpa Usage</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#前言>前言</a></li><li><a href=#安装metrics-server>安装Metrics Server</a></li><li><a href=#hpa介绍>HPA介绍</a></li><li><a href=#示例>示例</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 0-1 实现Pod自动扩缩HPA</p><h1 id=kubernetes-0-1-实现pod自动扩缩hpa>Kubernetes 0-1 实现Pod自动扩缩HPA diff --git a/kubernetes/http-call-k8s-apiserver/index.html b/kubernetes/http-call-k8s-apiserver/index.html index 17ae48d2..7dafda7a 100644 --- a/kubernetes/http-call-k8s-apiserver/index.html +++ b/kubernetes/http-call-k8s-apiserver/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Kubernetes / HTTP 客户端调用 Kubernetes APIServer HTTP 客户端调用 Kubernetes APIServer # 本篇介绍几种如何通过 HTTP 客户端调用 Kubernetes APIServer 的姿势。 如何获取 Kubernetes api-server 地址 # 查看 api-server 的几种方式: -# 1. 直接查看 kubeconfig 文件 $ cat ~/.kube/config apiVersion: v1 clusters: - cluster: server: https://192.168.58.2:8443 ... # 2. kubectl 查看集群信息 $ kubectl cluster-info Kubernetes control plane is running at https://192.168.58.2:8443 ... # 3. kubectl 查看集群配置 $ kubectl config view clusters: - cluster: ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/http-call-k8s-apiserver/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / HTTP 客户端调用 Kubernetes APIServer +# 1. 直接查看 kubeconfig 文件 $ cat ~/.kube/config apiVersion: v1 clusters: - cluster: server: https://192.168.58.2:8443 ... # 2. kubectl 查看集群信息 $ kubectl cluster-info Kubernetes control plane is running at https://192.168.58.2:8443 ... # 3. kubectl 查看集群配置 $ kubectl config view clusters: - cluster: ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/http-call-k8s-apiserver/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / HTTP 客户端调用 Kubernetes APIServer HTTP 客户端调用 Kubernetes APIServer # 本篇介绍几种如何通过 HTTP 客户端调用 Kubernetes APIServer 的姿势。 如何获取 Kubernetes api-server 地址 # 查看 api-server 的几种方式: -# 1. 直接查看 kubeconfig 文件 $ cat ~/.kube/config apiVersion: v1 clusters: - cluster: server: https://192.168.58.2:8443 ... # 2. kubectl 查看集群信息 $ kubectl cluster-info Kubernetes control plane is running at https://192.168.58.2:8443 ... # 3. kubectl 查看集群配置 $ kubectl config view clusters: - cluster: ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>HTTP Call K8s Apiserver | 🍁 秋河落叶</title> +# 1. 直接查看 kubeconfig 文件 $ cat ~/.kube/config apiVersion: v1 clusters: - cluster: server: https://192.168.58.2:8443 ... # 2. kubectl 查看集群信息 $ kubectl cluster-info Kubernetes control plane is running at https://192.168.58.2:8443 ... # 3. kubectl 查看集群配置 $ kubectl config view clusters: - cluster: ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>HTTP Call K8s Apiserver | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/http-call-k8s-apiserver/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>HTTP Call K8s Apiserver</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#如何获取-kubernetes-api-server-地址>如何获取 Kubernetes api-server 地址</a></li><li><a href=#api-server-如何给客户端授权>api-server 如何给客户端授权</a><ul><li><a href=#使用证书授权>使用证书授权</a></li><li><a href=#使用-token-授权>使用 token 授权</a></li></ul></li><li><a href=#在-pod-内访问-api-server>在 Pod 内访问 api-server</a></li><li><a href=#使用-curl-执行基本的-crud-操作>使用 curl 执行基本的 CRUD 操作</a></li><li><a href=#如何使用-kubectl-调用-api>如何使用 kubectl 调用 API</a><ul><li><a href=#使用-kubectl-代理-kubernetes-api-server>使用 kubectl 代理 Kubernetes api-server</a></li><li><a href=#kubectl-使用原始模式调用-api>kubectl 使用原始模式调用 API</a></li></ul></li><li><a href=#如何查看-kubectl-命令如-apply发送的-api-请求>如何查看 kubectl 命令(如 apply)发送的 API 请求</a></li><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / HTTP 客户端调用 Kubernetes APIServer</p><h1 id=http-客户端调用-kubernetes-apiserver>HTTP 客户端调用 Kubernetes APIServer diff --git a/kubernetes/index.html b/kubernetes/index.html index 015c2167..c8755858 100644 --- a/kubernetes/index.html +++ b/kubernetes/index.html @@ -19,7 +19,7 @@ 通过 Ingress 进行灰度发布 安装 Kubernetes K3s -Kubernetes 0-1 K8s部署coredns"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes +Kubernetes 0-1 K8s部署coredns"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes Kubernetes # 反亲和性提高服务可用性 apiserver-builder apiserver @@ -40,9 +40,9 @@ 通过 Ingress 进行灰度发布 安装 Kubernetes K3s -Kubernetes 0-1 K8s部署coredns"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Kubernetes | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/kubernetes/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/ class=active>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +Kubernetes 0-1 K8s部署coredns"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Kubernetes | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/kubernetes/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/ class=active>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Kubernetes</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / Kubernetes</p><h1 id=kubernetes>Kubernetes <a class=anchor href=#kubernetes>#</a></h1><p><a href=/kubernetes/anti-affinity-improves-service-availability/>反亲和性提高服务可用性</a></p><p><a href=/kubernetes/apiserver-builder/>apiserver-builder</a></p><p><a href=/kubernetes/apiserver/>apiserver</a></p><p><a href=/kubernetes/binary-build-k8s-01-prepare-nodes/>二进制搭建 K8s - 1 机器准备</a></p><p><a href=/kubernetes/binary-build-k8s-02-deploy-etcd/>二进制搭建 K8s - 2 部署 etcd 集群</a></p><p><a href=/kubernetes/binary-build-k8s-03-deploy-master/>二进制搭建 K8s - 3 部署 Master</a></p><p><a href=/kubernetes/binary-build-k8s-04-deploy-worker/>二进制搭建 K8s - 4 部署 Node</a></p><p><a href=/kubernetes/cloud-native-understood/>Kubernetes 0-1 尝试理解云原生</a></p><p><a href=/kubernetes/cluster-federation/>集群联邦</a></p><p><a href=/kubernetes/configmap-understood/>了解 ConfigMap</a></p><p><a href=/kubernetes/delete-es-log-index-scheduler/>定期删除 ElasticSearch 日志索引</a></p><p><a href=/kubernetes/delete-k8s-resource-force/>强制删除 K8s 资源</a></p><p><a href=/kubernetes/gateway-api-practice/>Gateway API 实践</a></p><p><a href=/kubernetes/helm-k8s-package-management-tool/>Kubernetes 0-1 Helm Kubernetes 的包管理工具</a></p><p><a href=/kubernetes/hpa-usage/>Kubernetes 0-1 实现Pod自动扩缩HPA</a></p><p><a href=/kubernetes/http-call-k8s-apiserver/>HTTP 客户端调用 Kubernetes APIServer</a></p><p><a href=/kubernetes/informer/>Informer</a></p><p><a href=/kubernetes/ingress-gray-deploy/>通过 Ingress 进行灰度发布</a></p><p><a href=/kubernetes/installation/>安装 Kubernetes</a></p><p><a href=/kubernetes/k3s/>K3s</a></p><p><a href=/kubernetes/k8s-deploy-coredns/>Kubernetes 0-1 K8s部署coredns</a></p><p><a href=/kubernetes/k8s-deploy-dashboard/>Kubernetes 0-1 K8s部署Dashboard</a></p><p><a href=/kubernetes/k8s-deploy-efk/>Kubernetes 0-1 K8s部署EFK</a></p><p><a href=/kubernetes/k8s-deploy-prometheus-grafana/>可能需要运行多次以下命令,确保k8s资源都创建</a></p><p><a href=/kubernetes/k8s-deploy-zookeeper-kafka/>Kubernetes 0-1 K8s部署Zookeeper和Kafka</a></p><p><a href=/kubernetes/k8s-dev-01-api-concept/>Kubernetes 定制开发 01:K8s API 概念</a></p><p><a href=/kubernetes/k8s-dev-02-crd/>Kubernetes 定制开发 02:CRD</a></p><p><a href=/kubernetes/k8s-dev-50-extend-kube-scheduler/>Kubernetes 定制开发 50:扩展调度器</a></p><p><a href=/kubernetes/k8s-get-started/>简单介绍 K8s</a></p><p><a href=/kubernetes/kubeadm-install-k8s-docker/>kubeadm 安装 Kubernetes (Docker)</a></p><p><a href=/kubernetes/kubeadm-install-k8s/>kubeadm 安装 k8s (containerd)</a></p><p><a href=/kubernetes/kubeadm-upgrade/>Kubeadm 升级 K8s</a></p><p><a href=/kubernetes/kubebuilder-inaction/>kubebuilder 实战</a></p><p><a href=/kubernetes/kubectl/>kubectl</a></p><p><a href=/kubernetes/kubernetes-best-practice/>Kubernetes 0-1 Kubernetes最佳实践</a></p><p><a href=/kubernetes/kubernetes-dashboard/>Kubernetes Dashboard</a></p><p><a href=/kubernetes/kubernetes-naming-constraints/>Kubernetes 中资源名称规范</a></p><p><a href=/kubernetes/kubernetes/>Kuberentes</a></p><p><a href=/kubernetes/kubevirt-create-windows-vm/>KubeVirt 创建 Windows 虚拟机</a></p><p><a href=/kubernetes/kubevirt-practice/>Kubevirt 实践</a></p><p><a href=/kubernetes/kustomize/>Kustomize</a></p><p><a href=/kubernetes/liveness-readiness-probe/>Kubernetes 0-1 Pod中的livenessProbe和readinessProbe解读</a></p><p><a href=/kubernetes/local-storageclass/>local 存储卷实践</a></p><p><a href=/kubernetes/metallb/>Kubernetes 0-1 K8s自建LoadBalancer</a></p><p><a href=/kubernetes/nfs-as-pvc/>使用 nfs 持久化存储</a></p><p><a href=/kubernetes/pod-understood/>Kubernetes 0-1 了解 Pod</a></p><p><a href=/kubernetes/prgramming-kubernetes/>Kubernetes 编程</a></p><p><a href=/kubernetes/prometheus-collect-kong-metrics/>Prometheus-监控Kong完整操作</a></p><p><a href=/kubernetes/prometheus/>Prometheus</a></p><p><a href=/kubernetes/pvc-expansion/>PVC 扩容</a></p><p><a href=/kubernetes/secret-understood/>了解 Secret</a></p><p><a href=/kubernetes/service-understood/>了解 Service</a></p><p><a href=/kubernetes/telepresence/>Telepresence</a></p><p><a href=/kubernetes/terminate-pod-gracefully/>Kubernetes 0-1 使用preStop优雅终止Pod</a></p><p><a href=/kubernetes/terraform/>Terraform</a></p><p><a href=/kubernetes/velero-minio-backup-restore-volume/>Velero + Minio 备份与恢复</a></p><p><a href=/kubernetes/volume-understood/>了解 Volume</a></p><p><a href=/kubernetes/vpa/>VPA</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/kubernetes/index.xml b/kubernetes/index.xml index 3be86a20..b6ff04be 100644 --- a/kubernetes/index.xml +++ b/kubernetes/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/kubernetes/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/kubernetes/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/kubernetes/anti-affinity-improves-service-availability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/kubernetes/anti-affinity-improves-service-availability/</guid><description>🏠 首页 / Kubernetes / 反亲和性提高服务可用性 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/kubernetes/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/kubernetes/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/kubernetes/anti-affinity-improves-service-availability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/kubernetes/anti-affinity-improves-service-availability/</guid><description>🏠 首页 / Kubernetes / 反亲和性提高服务可用性 反亲和性提高服务可用性 # 在 Kubernetes 中部署服务时,我们通常会部署多副本来提高服务的可用性。但是当这些副本集中部署在一个节点,而且很不幸,该节点出现故障,那么服务很容易陷入不可用状态。 下面介绍一种方法,将服务副本分散部署在不同的节点(把鸡蛋放在不同的篮子里),避免单个节点故障导致服务多副本毁坏,提高服务可用性。 反亲和 # apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: selector: matchLabels: app: nginx replicas: 5 template: metadata: labels: app: nginx spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - nginx topologyKey: kubernetes.io/hostname containers: - name: nginx image: nginx ports: - name: tcp containerPort: 80 使用 kubernetes.io/hostname 作为拓扑域,查看匹配规则,即同一打有同样标签 app=nginx 的 pod 会调度到不同的节点。</description></item><item><title/><link>https://blog.poneding.com/kubernetes/apiserver-builder/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/kubernetes/apiserver-builder/</guid><description>🏠 首页 / Kubernetes / apiserver-builder diff --git a/kubernetes/informer/index.html b/kubernetes/informer/index.html index a8d411b5..33c84c10 100644 --- a/kubernetes/informer/index.html +++ b/kubernetes/informer/index.html @@ -20,7 +20,7 @@ Indexer: 一个自带索引功能的本地存储,用于存储资源对象。Informer从DeltaFIFO中Pop出资源,存储到Indexer。Indexer中资源与k8s etcd数据保持一致。本地读取时直接查询本地存储,从而减少k8s apiserver和etcd的压力。 使用示例 # 自定义控制器 -clientset, err := kubernetes.NewForConfig(config) stopCh := make(chan struct{}) defer close(stopch) sharedInformers := informers.NewSharedInformerFactory(clientset, time.Minute) informer := sharedInformer.Core().V1().Pods().Informer() informer.AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{} { // ... }, UpdateFunc: func(obj interface{} { // ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/informer/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Informer +clientset, err := kubernetes.NewForConfig(config) stopCh := make(chan struct{}) defer close(stopch) sharedInformers := informers.NewSharedInformerFactory(clientset, time.Minute) informer := sharedInformer.Core().V1().Pods().Informer() informer.AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{} { // ... }, UpdateFunc: func(obj interface{} { // ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/informer/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Informer Informer # Informer是client-go中实现的一个工具包,目前已经被kubernetes中各个组件所使用,例如controller-manager。Informer本质是一个api资源的缓存。 主要功能: 将etcd数据同步至本地缓存,客户端通过本地缓存读取和监听资源 @@ -42,9 +42,9 @@ Indexer: 一个自带索引功能的本地存储,用于存储资源对象。Informer从DeltaFIFO中Pop出资源,存储到Indexer。Indexer中资源与k8s etcd数据保持一致。本地读取时直接查询本地存储,从而减少k8s apiserver和etcd的压力。 使用示例 # 自定义控制器 -clientset, err := kubernetes.NewForConfig(config) stopCh := make(chan struct{}) defer close(stopch) sharedInformers := informers.NewSharedInformerFactory(clientset, time.Minute) informer := sharedInformer.Core().V1().Pods().Informer() informer.AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{} { // ... }, UpdateFunc: func(obj interface{} { // ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Informer | 🍁 秋河落叶</title> +clientset, err := kubernetes.NewForConfig(config) stopCh := make(chan struct{}) defer close(stopch) sharedInformers := informers.NewSharedInformerFactory(clientset, time.Minute) informer := sharedInformer.Core().V1().Pods().Informer() informer.AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{} { // ... }, UpdateFunc: func(obj interface{} { // ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Informer | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/informer/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Informer</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#组件>组件</a></li><li><a href=#流程示意图>流程示意图</a></li><li><a href=#使用示例>使用示例</a></li><li><a href=#infromer机制>Infromer机制</a><ul><li><a href=#资源informer>资源Informer</a></li><li><a href=#sharedinformer共享机制>SharedInformer共享机制</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Informer</p><h1 id=informer>Informer diff --git a/kubernetes/ingress-gray-deploy/index.html b/kubernetes/ingress-gray-deploy/index.html index c04e232c..a97ec61c 100644 --- a/kubernetes/ingress-gray-deploy/index.html +++ b/kubernetes/ingress-gray-deploy/index.html @@ -5,16 +5,16 @@ 通过本实验,你将学习: 通过 Ingress 按权重进行灰度发布 通过 Ingress 按 Header 进行灰度发布 容器服务 Kubernetes 版(简称 ACK) 本节课使用的 Kubernetes(k8s) 集群就是由 ACK 提供的,本实验涵盖的都是一些基本操作。更多高级用法,可以去 ACK 的产品页面了解哦。 Step 2 :部署 Deployment V1 应用 # 创建如下 YAML 文件(app-v1.yaml) -apiVersion: v1 kind: Service metadata: name: my-app-v1 labels: app: my-app spec: ports: - name: http port: 80 targetPort: http selector: app: my-app version: v1."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/ingress-gray-deploy/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 通过 Ingress 进行灰度发布 +apiVersion: v1 kind: Service metadata: name: my-app-v1 labels: app: my-app spec: ports: - name: http port: 80 targetPort: http selector: app: my-app version: v1."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/ingress-gray-deploy/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 通过 Ingress 进行灰度发布 通过 Ingress 进行灰度发布 # https://start.aliyun.com/handson/Tn0HcdCZ/grap_publish_by_ingress Step 1 :实验介绍 # 本实验,你将运行运行一个简单的应用,部署一个新的应用用于新的发布,并通过 Ingress 能力实现灰度发布。 灰度及蓝绿发布是为新版本创建一个与老版本完全一致的生产环境,在不影响老版本的前提下,按照一定的规则把部分流量切换到新版本,当新版本试运行一段时间没有问题后,将用户的全量流量从老版本迁移至新版本。 通过本实验,你将学习: 通过 Ingress 按权重进行灰度发布 通过 Ingress 按 Header 进行灰度发布 容器服务 Kubernetes 版(简称 ACK) 本节课使用的 Kubernetes(k8s) 集群就是由 ACK 提供的,本实验涵盖的都是一些基本操作。更多高级用法,可以去 ACK 的产品页面了解哦。 Step 2 :部署 Deployment V1 应用 # 创建如下 YAML 文件(app-v1.yaml) -apiVersion: v1 kind: Service metadata: name: my-app-v1 labels: app: my-app spec: ports: - name: http port: 80 targetPort: http selector: app: my-app version: v1."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Ingress Gray Deploy | 🍁 秋河落叶</title> +apiVersion: v1 kind: Service metadata: name: my-app-v1 labels: app: my-app spec: ports: - name: http port: 80 targetPort: http selector: app: my-app version: v1."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Ingress Gray Deploy | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/ingress-gray-deploy/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Ingress Gray Deploy</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#step-1-实验介绍>Step 1 :实验介绍</a></li><li><a href=#step-2-部署-deployment-v1-应用>Step 2 :部署 Deployment V1 应用</a></li><li><a href=#step-3-部署-deployment-v2-应用>Step 3 :部署 Deployment V2 应用</a></li><li><a href=#step-4-按照权重策略灰度到-deployment-v2-应用>Step 4 :按照权重策略灰度到 Deployment V2 应用</a></li><li><a href=#step-5-按照-header-策略灰度到-deployment-v2-应用>Step 5 :按照 Header 策略灰度到 Deployment V2 应用</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 通过 Ingress 进行灰度发布</p><h1 id=通过-ingress-进行灰度发布>通过 Ingress 进行灰度发布 diff --git a/kubernetes/installation/index.html b/kubernetes/installation/index.html index 6b04b069..31f5a598 100644 --- a/kubernetes/installation/index.html +++ b/kubernetes/installation/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Kubernetes / 安装 Kubernetes 安装 Kubernetes # « 通过 Ingress 进行灰度发布 -» K3s"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/installation/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 安装 Kubernetes +» K3s"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/installation/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 安装 Kubernetes 安装 Kubernetes # « 通过 Ingress 进行灰度发布 -» K3s"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Installation | 🍁 秋河落叶</title> +» K3s"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Installation | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/installation/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Installation</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 安装 Kubernetes</p><h1 id=安装-kubernetes>安装 Kubernetes diff --git a/kubernetes/k3s/index.html b/kubernetes/k3s/index.html index 2c8ced86..94d7c6af 100644 --- a/kubernetes/k3s/index.html +++ b/kubernetes/k3s/index.html @@ -4,15 +4,15 @@ 规格要求: CPU: 1 核 Memory:512M 端口要求: K3s Server 节点的入站规则如下: -协议 端口 源 描述 TCP 6443 K3s agent 节点 Kubernetes API Server UDP 8472 K3s server 和 agent 节点 仅对 Flannel VXLAN 需要 UDP 51820 K3s server 和 agent 节点 只有 Flannel Wireguard 后端需要 UDP 51821 K3s server 和 agent 节点 只有使用 IPv6 的 Flannel Wireguard 后端才需要 TCP 10250 K3s server 和 agent 节点 Kubelet metrics TCP 2379-2380 K3s server 节点 只有嵌入式 etcd 高可用才需要 启动 # curl -sfL https://rancher-mirror."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k3s/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / K3s +协议 端口 源 描述 TCP 6443 K3s agent 节点 Kubernetes API Server UDP 8472 K3s server 和 agent 节点 仅对 Flannel VXLAN 需要 UDP 51820 K3s server 和 agent 节点 只有 Flannel Wireguard 后端需要 UDP 51821 K3s server 和 agent 节点 只有使用 IPv6 的 Flannel Wireguard 后端才需要 TCP 10250 K3s server 和 agent 节点 Kubelet metrics TCP 2379-2380 K3s server 节点 只有嵌入式 etcd 高可用才需要 启动 # curl -sfL https://rancher-mirror."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k3s/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / K3s K3s # k3s 是一款轻量级的 Kubernetes 发行版,专为物联网及边缘计算设计。 要求 # K3s 有望在大多数现代 Linux 系统上运行。 规格要求: CPU: 1 核 Memory:512M 端口要求: K3s Server 节点的入站规则如下: -协议 端口 源 描述 TCP 6443 K3s agent 节点 Kubernetes API Server UDP 8472 K3s server 和 agent 节点 仅对 Flannel VXLAN 需要 UDP 51820 K3s server 和 agent 节点 只有 Flannel Wireguard 后端需要 UDP 51821 K3s server 和 agent 节点 只有使用 IPv6 的 Flannel Wireguard 后端才需要 TCP 10250 K3s server 和 agent 节点 Kubelet metrics TCP 2379-2380 K3s server 节点 只有嵌入式 etcd 高可用才需要 启动 # curl -sfL https://rancher-mirror."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K3s | 🍁 秋河落叶</title> +协议 端口 源 描述 TCP 6443 K3s agent 节点 Kubernetes API Server UDP 8472 K3s server 和 agent 节点 仅对 Flannel VXLAN 需要 UDP 51820 K3s server 和 agent 节点 只有 Flannel Wireguard 后端需要 UDP 51821 K3s server 和 agent 节点 只有使用 IPv6 的 Flannel Wireguard 后端才需要 TCP 10250 K3s server 和 agent 节点 Kubelet metrics TCP 2379-2380 K3s server 节点 只有嵌入式 etcd 高可用才需要 启动 # curl -sfL https://rancher-mirror."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K3s | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/k3s/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>K3s</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#要求>要求</a></li><li><a href=#启动>启动</a></li><li><a href=#梧桐-region-安装-k3s>梧桐 Region 安装 k3s</a></li><li><a href=#卸载>卸载</a></li><li><a href=#汇总>汇总</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / K3s</p><h1 id=k3s>K3s diff --git a/kubernetes/k8s-deploy-coredns/index.html b/kubernetes/k8s-deploy-coredns/index.html index a7b110c0..2596e61d 100644 --- a/kubernetes/k8s-deploy-coredns/index.html +++ b/kubernetes/k8s-deploy-coredns/index.html @@ -3,14 +3,14 @@ 比如我们运行一个busybox的Pod,然后在Pod里面是无法ping通外部网络的: [root@k8s-master01 ~]# kubectl run -it --rm busybox --image=busybox sh If you don't see a command prompt, try pressing enter. / # ping www.baidu.com ping: bad address 'www.baidu.com' 我们可以通过在K8s中部署coredns解决这一问题。 准备coredns.yaml文件,写入文件内容: -apiVersion: v1 kind: ServiceAccount metadata: name: coredns namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: kubernetes.io/bootstrapping: rbac-defaults addonmanager.kubernetes.io/mode: Reconcile name: system:coredns rules: - apiGroups: - "" resources: - endpoints - services - pods - namespaces verbs: - list - watch - apiGroups: - "" resources: - nodes verbs: - get --- apiVersion: rbac.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-deploy-coredns/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Kubernetes 0-1 K8s部署coredns +apiVersion: v1 kind: ServiceAccount metadata: name: coredns namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: kubernetes.io/bootstrapping: rbac-defaults addonmanager.kubernetes.io/mode: Reconcile name: system:coredns rules: - apiGroups: - "" resources: - endpoints - services - pods - namespaces verbs: - list - watch - apiGroups: - "" resources: - nodes verbs: - get --- apiVersion: rbac.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-deploy-coredns/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Kubernetes 0-1 K8s部署coredns Kubernetes 0-1 K8s部署coredns # 在K8s集群未部署DNS之前,K8s中运行的Pod是无法访问外部网络的,因为无法完成域名解析。 比如我们运行一个busybox的Pod,然后在Pod里面是无法ping通外部网络的: [root@k8s-master01 ~]# kubectl run -it --rm busybox --image=busybox sh If you don't see a command prompt, try pressing enter. / # ping www.baidu.com ping: bad address 'www.baidu.com' 我们可以通过在K8s中部署coredns解决这一问题。 准备coredns.yaml文件,写入文件内容: -apiVersion: v1 kind: ServiceAccount metadata: name: coredns namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: kubernetes.io/bootstrapping: rbac-defaults addonmanager.kubernetes.io/mode: Reconcile name: system:coredns rules: - apiGroups: - "" resources: - endpoints - services - pods - namespaces verbs: - list - watch - apiGroups: - "" resources: - nodes verbs: - get --- apiVersion: rbac.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Coredns | 🍁 秋河落叶</title> +apiVersion: v1 kind: ServiceAccount metadata: name: coredns namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: kubernetes.io/bootstrapping: rbac-defaults addonmanager.kubernetes.io/mode: Reconcile name: system:coredns rules: - apiGroups: - "" resources: - endpoints - services - pods - namespaces verbs: - list - watch - apiGroups: - "" resources: - nodes verbs: - get --- apiVersion: rbac.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Coredns | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/k8s-deploy-coredns/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>K8s Deploy Coredns</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 0-1 K8s部署coredns</p><h1 id=kubernetes-0-1-k8s部署coredns>Kubernetes 0-1 K8s部署coredns diff --git a/kubernetes/k8s-deploy-dashboard/index.html b/kubernetes/k8s-deploy-dashboard/index.html index e2fb65b0..96f83058 100644 --- a/kubernetes/k8s-deploy-dashboard/index.html +++ b/kubernetes/k8s-deploy-dashboard/index.html @@ -4,15 +4,15 @@ 修改文件kube-dash.yaml文件,将kubernetes-dashboard Service部分修改成如下: kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: type: LoadBalancer ports: - port: 443 targetPort: 8443 selector: k8s-app: kubernetes-dashboard 创建kube-dash-admin-user.yaml文件: vim kube-dash-admin-user.yaml 写入如下内容: -apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard 执行命令:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-deploy-dashboard/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 K8s部署Dashboard +apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard 执行命令:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-deploy-dashboard/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 K8s部署Dashboard Kubernetes 0-1 K8s部署Dashboard # 首先下载部署的必要文件: wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml -O kube-dash.yaml --no-check-certificate 默认Dashboard的Service类型是ClusterIP,我们集群外面不方便访问,我们最好是将Service类型修改为NodePoart或LoadBalancer(前提是你的集群支持LoadBalancer),以LoadBalancer为例。 修改文件kube-dash.yaml文件,将kubernetes-dashboard Service部分修改成如下: kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: type: LoadBalancer ports: - port: 443 targetPort: 8443 selector: k8s-app: kubernetes-dashboard 创建kube-dash-admin-user.yaml文件: vim kube-dash-admin-user.yaml 写入如下内容: -apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard 执行命令:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Dashboard | 🍁 秋河落叶</title> +apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard 执行命令:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Dashboard | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/k8s-deploy-dashboard/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>K8s Deploy Dashboard</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 0-1 K8s部署Dashboard</p><h1 id=kubernetes-0-1-k8s部署dashboard>Kubernetes 0-1 K8s部署Dashboard diff --git a/kubernetes/k8s-deploy-efk/index.html b/kubernetes/k8s-deploy-efk/index.html index 94337078..7130fe3e 100644 --- a/kubernetes/k8s-deploy-efk/index.html +++ b/kubernetes/k8s-deploy-efk/index.html @@ -5,16 +5,16 @@ 部署ElasticSearch # 最好选择部署一个ES集群,这样你的ES可用性更高一点。 采用StatefulSet部署ES。 编写es-statefulSet.yaml文件如下: -apiVersion: apps/v1 kind: StatefulSet metadata: name: es-cluster namespace: dev spec: serviceName: elasticsearch replicas: 3 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: containers: - name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0 resources: limits: cpu: 1000m requests: cpu: 100m ports: - containerPort: 9200 name: rest protocol: TCP - containerPort: 9300 name: inter-node protocol: TCP volumeMounts: - name: data mountPath: /usr/share/elasticsearch/data env: - name: cluster."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-deploy-efk/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 K8s部署EFK +apiVersion: apps/v1 kind: StatefulSet metadata: name: es-cluster namespace: dev spec: serviceName: elasticsearch replicas: 3 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: containers: - name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0 resources: limits: cpu: 1000m requests: cpu: 100m ports: - containerPort: 9200 name: rest protocol: TCP - containerPort: 9300 name: inter-node protocol: TCP volumeMounts: - name: data mountPath: /usr/share/elasticsearch/data env: - name: cluster."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-deploy-efk/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 K8s部署EFK Kubernetes 0-1 K8s部署EFK # 写在前面 # 本篇目标是在K8s集群中搭建EFK。 EFK是由ElasticSearch,Fluentd,Kibane组成的一套目前比较主流的日志监控系统,使用EFK监控应用日志,可以让开发人员在一个统一的入口查看日志然后分析应用运行情况。 EFK简单的工作原理可以参考下图。通过fluentd的agent收集日志数据,写入es,kibana从es中读取日志数据展示到ui。 部署ElasticSearch # 最好选择部署一个ES集群,这样你的ES可用性更高一点。 采用StatefulSet部署ES。 编写es-statefulSet.yaml文件如下: -apiVersion: apps/v1 kind: StatefulSet metadata: name: es-cluster namespace: dev spec: serviceName: elasticsearch replicas: 3 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: containers: - name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0 resources: limits: cpu: 1000m requests: cpu: 100m ports: - containerPort: 9200 name: rest protocol: TCP - containerPort: 9300 name: inter-node protocol: TCP volumeMounts: - name: data mountPath: /usr/share/elasticsearch/data env: - name: cluster."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Efk | 🍁 秋河落叶</title> +apiVersion: apps/v1 kind: StatefulSet metadata: name: es-cluster namespace: dev spec: serviceName: elasticsearch replicas: 3 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: containers: - name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0 resources: limits: cpu: 1000m requests: cpu: 100m ports: - containerPort: 9200 name: rest protocol: TCP - containerPort: 9300 name: inter-node protocol: TCP volumeMounts: - name: data mountPath: /usr/share/elasticsearch/data env: - name: cluster."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Efk | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/k8s-deploy-efk/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>K8s Deploy Efk</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#写在前面>写在前面</a></li><li><a href=#部署elasticsearch>部署ElasticSearch</a></li><li><a href=#部署kibana>部署Kibana</a></li><li><a href=#部署fluentd>部署Fluentd</a></li><li><a href=#参考资料>参考资料</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 0-1 K8s部署EFK</p><h1 id=kubernetes-0-1-k8s部署efk>Kubernetes 0-1 K8s部署EFK diff --git a/kubernetes/k8s-deploy-prometheus-grafana/index.html b/kubernetes/k8s-deploy-prometheus-grafana/index.html index 0a8f0aa6..363e1814 100644 --- a/kubernetes/k8s-deploy-prometheus-grafana/index.html +++ b/kubernetes/k8s-deploy-prometheus-grafana/index.html @@ -3,14 +3,14 @@ 在prometheus.spec下添加 externalUrl: prometheus routePrefix: prometheus 修改文件kube-prometheus/manifests/grafana-deployment.yaml,做这一步的目的是为grafana的访问分配子路径,访问方式为:http(s)://xxx/grafana 在deployment.spec.template.spec.container[0]下添加 -env: - name: GF_SERVER_ROOT_URL value: "http://localhost:3000/grafana" - name: GF_SERVER_SERVE_FROM_SUB_PATH value: "true" Apply k8s资源 # 可能需要运行多次以下命令,确保k8s资源都创建 kubectl create -f manifests/setup -f manifests # !如果要删除以上创建的k8s资源,运行以下命令 kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup Ingress转发 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: prometheus namespace: monitoring spec: rules: - host: dp.example.tech http: paths: - path: /prometheus backend: serviceName: prometheus-k8s servicePort: 9090 - path: /grafana backend: serviceName: grafana servicePort: 3000 - path: /alertmanager backend: serviceName: alertmanager-main servicePort: 9093 « Kubernetes 0-1 K8s部署EFK'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-deploy-prometheus-grafana/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / 可能需要运行多次以下命令,确保k8s资源都创建 +env: - name: GF_SERVER_ROOT_URL value: "http://localhost:3000/grafana" - name: GF_SERVER_SERVE_FROM_SUB_PATH value: "true" Apply k8s资源 # 可能需要运行多次以下命令,确保k8s资源都创建 kubectl create -f manifests/setup -f manifests # !如果要删除以上创建的k8s资源,运行以下命令 kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup Ingress转发 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: prometheus namespace: monitoring spec: rules: - host: dp.example.tech http: paths: - path: /prometheus backend: serviceName: prometheus-k8s servicePort: 9090 - path: /grafana backend: serviceName: grafana servicePort: 3000 - path: /alertmanager backend: serviceName: alertmanager-main servicePort: 9093 « Kubernetes 0-1 K8s部署EFK'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-deploy-prometheus-grafana/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / 可能需要运行多次以下命令,确保k8s资源都创建 Step # 下载相关k8s资源文件 git clone https://github.com/coreos/kube-prometheus.git 修改文件kube-prometheus/manifests/prometheus-prometheus.yaml,做这一步的目的是为prometheus的访问分配子路径,访问方式为http(s)://xxx/prometheus 在prometheus.spec下添加 externalUrl: prometheus routePrefix: prometheus 修改文件kube-prometheus/manifests/grafana-deployment.yaml,做这一步的目的是为grafana的访问分配子路径,访问方式为:http(s)://xxx/grafana 在deployment.spec.template.spec.container[0]下添加 -env: - name: GF_SERVER_ROOT_URL value: "http://localhost:3000/grafana" - name: GF_SERVER_SERVE_FROM_SUB_PATH value: "true" Apply k8s资源 # 可能需要运行多次以下命令,确保k8s资源都创建 kubectl create -f manifests/setup -f manifests # !如果要删除以上创建的k8s资源,运行以下命令 kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup Ingress转发 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: prometheus namespace: monitoring spec: rules: - host: dp.example.tech http: paths: - path: /prometheus backend: serviceName: prometheus-k8s servicePort: 9090 - path: /grafana backend: serviceName: grafana servicePort: 3000 - path: /alertmanager backend: serviceName: alertmanager-main servicePort: 9093 « Kubernetes 0-1 K8s部署EFK'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Prometheus Grafana | 🍁 秋河落叶</title> +env: - name: GF_SERVER_ROOT_URL value: "http://localhost:3000/grafana" - name: GF_SERVER_SERVE_FROM_SUB_PATH value: "true" Apply k8s资源 # 可能需要运行多次以下命令,确保k8s资源都创建 kubectl create -f manifests/setup -f manifests # !如果要删除以上创建的k8s资源,运行以下命令 kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup Ingress转发 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: prometheus namespace: monitoring spec: rules: - host: dp.example.tech http: paths: - path: /prometheus backend: serviceName: prometheus-k8s servicePort: 9090 - path: /grafana backend: serviceName: grafana servicePort: 3000 - path: /alertmanager backend: serviceName: alertmanager-main servicePort: 9093 « Kubernetes 0-1 K8s部署EFK'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Prometheus Grafana | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/k8s-deploy-prometheus-grafana/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>K8s Deploy Prometheus Grafana</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#step>Step</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 可能需要运行多次以下命令,确保k8s资源都创建</p><h2 id=step>Step diff --git a/kubernetes/k8s-deploy-zookeeper-kafka/index.html b/kubernetes/k8s-deploy-zookeeper-kafka/index.html index ed974b9c..bf878c99 100644 --- a/kubernetes/k8s-deploy-zookeeper-kafka/index.html +++ b/kubernetes/k8s-deploy-zookeeper-kafka/index.html @@ -5,16 +5,16 @@ 首先说明,我的K8s集群是使用的AWS的EKS服务,与自建的K8s集群的配置方面可能会有所差别。 部署Zookeeper # 编写zookeeper-statefulSet.yaml文件: vim zookeeper-statefulSet.yaml 写入内容: -kind: StatefulSet apiVersion: apps/v1beta1 metadata: name: zookeeper-1 namespace: dev spec: serviceName: zookeeper-1 replicas: 1 selector: matchLabels: app: zookeeper-1 template: metadata: labels: app: zookeeper-1 spec: containers: - name: zookeeper image: digitalwonderland/zookeeper ports: - containerPort: 2181 env: - name: ZOOKEEPER_ID value: "1" - name: ZOOKEEPER_SERVER_1 value: zookeeper-1 - name: ZOOKEEPER_SERVER_2 value: zookeeper-2 - name: ZOOKEEPER_SERVER_3 value: zookeeper-3 volumeMounts: - name: zookeeper-data mountPath: "/var/lib/zookeeper/data" subPath: zookeeper volumeClaimTemplates: - metadata: name: zookeeper-data labels: app: zookeeper-1 spec: accessModes: ["ReadWriteOnce"] storageClassName: gp2 resources: requests: storage: 30Gi --- kind: StatefulSet apiVersion: apps/v1beta1 metadata: name: zookeeper-2 namespace: dev spec: serviceName: zookeeper-2 replicas: 1 selector: matchLabels: app: zookeeper-2 template: metadata: labels: app: zookeeper-2 spec: containers: - name: zookeeper image: digitalwonderland/zookeeper ports: - containerPort: 2181 env: - name: ZOOKEEPER_ID value: "2" - name: ZOOKEEPER_SERVER_1 value: zookeeper-1 - name: ZOOKEEPER_SERVER_2 value: zookeeper-2 - name: ZOOKEEPER_SERVER_3 value: zookeeper-3 volumeMounts: - name: zookeeper-data mountPath: "/var/lib/zookeeper/data" subPath: zookeeper-data volumeClaimTemplates: - metadata: name: zookeeper-data labels: app: zookeeper-2 spec: accessModes: ["ReadWriteOnce"] storageClassName: gp2 resources: requests: storage: 30Gi --- kind: StatefulSet apiVersion: apps/v1beta1 metadata: name: zookeeper-3 namespace: dev spec: serviceName: zookeeper-3 replicas: 1 selector: matchLabels: app: zookeeper-3 template: metadata: labels: app: zookeeper-3 spec: containers: - name: zookeeper image: digitalwonderland/zookeeper ports: - containerPort: 2181 env: - name: ZOOKEEPER_ID value: "3" - name: ZOOKEEPER_SERVER_1 value: zookeeper-1 - name: ZOOKEEPER_SERVER_2 value: zookeeper-2 - name: ZOOKEEPER_SERVER_3 value: zookeeper-3 volumeMounts: - name: zookeeper-data mountPath: "/var/lib/zookeeper/data" subPath: zookeeper volumeClaimTemplates: - metadata: name: zookeeper-data labels: app: zookeeper-3 spec: accessModes: ["ReadWriteOnce"] storageClassName: gp2 resources: requests: storage: 30Gi 编写zookeeper-service.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-deploy-zookeeper-kafka/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Kubernetes 0-1 K8s部署Zookeeper和Kafka +kind: StatefulSet apiVersion: apps/v1beta1 metadata: name: zookeeper-1 namespace: dev spec: serviceName: zookeeper-1 replicas: 1 selector: matchLabels: app: zookeeper-1 template: metadata: labels: app: zookeeper-1 spec: containers: - name: zookeeper image: digitalwonderland/zookeeper ports: - containerPort: 2181 env: - name: ZOOKEEPER_ID value: "1" - name: ZOOKEEPER_SERVER_1 value: zookeeper-1 - name: ZOOKEEPER_SERVER_2 value: zookeeper-2 - name: ZOOKEEPER_SERVER_3 value: zookeeper-3 volumeMounts: - name: zookeeper-data mountPath: "/var/lib/zookeeper/data" subPath: zookeeper volumeClaimTemplates: - metadata: name: zookeeper-data labels: app: zookeeper-1 spec: accessModes: ["ReadWriteOnce"] storageClassName: gp2 resources: requests: storage: 30Gi --- kind: StatefulSet apiVersion: apps/v1beta1 metadata: name: zookeeper-2 namespace: dev spec: serviceName: zookeeper-2 replicas: 1 selector: matchLabels: app: zookeeper-2 template: metadata: labels: app: zookeeper-2 spec: containers: - name: zookeeper image: digitalwonderland/zookeeper ports: - containerPort: 2181 env: - name: ZOOKEEPER_ID value: "2" - name: ZOOKEEPER_SERVER_1 value: zookeeper-1 - name: ZOOKEEPER_SERVER_2 value: zookeeper-2 - name: ZOOKEEPER_SERVER_3 value: zookeeper-3 volumeMounts: - name: zookeeper-data mountPath: "/var/lib/zookeeper/data" subPath: zookeeper-data volumeClaimTemplates: - metadata: name: zookeeper-data labels: app: zookeeper-2 spec: accessModes: ["ReadWriteOnce"] storageClassName: gp2 resources: requests: storage: 30Gi --- kind: StatefulSet apiVersion: apps/v1beta1 metadata: name: zookeeper-3 namespace: dev spec: serviceName: zookeeper-3 replicas: 1 selector: matchLabels: app: zookeeper-3 template: metadata: labels: app: zookeeper-3 spec: containers: - name: zookeeper image: digitalwonderland/zookeeper ports: - containerPort: 2181 env: - name: ZOOKEEPER_ID value: "3" - name: ZOOKEEPER_SERVER_1 value: zookeeper-1 - name: ZOOKEEPER_SERVER_2 value: zookeeper-2 - name: ZOOKEEPER_SERVER_3 value: zookeeper-3 volumeMounts: - name: zookeeper-data mountPath: "/var/lib/zookeeper/data" subPath: zookeeper volumeClaimTemplates: - metadata: name: zookeeper-data labels: app: zookeeper-3 spec: accessModes: ["ReadWriteOnce"] storageClassName: gp2 resources: requests: storage: 30Gi 编写zookeeper-service.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-deploy-zookeeper-kafka/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Kubernetes 0-1 K8s部署Zookeeper和Kafka Kubernetes 0-1 K8s部署Zookeeper和Kafka # 按照官方定义,Kafka是一个分布式的流处理平台。更多了解官方文档: http://kafka.apachecn.org/intro.html 那么直接开始在K8s中部署kafka吧。 部署kafka,首先要有一个可用的Zookeeper集群,所以我们还需要先部署一个Zookeeper集群。 首先说明,我的K8s集群是使用的AWS的EKS服务,与自建的K8s集群的配置方面可能会有所差别。 部署Zookeeper # 编写zookeeper-statefulSet.yaml文件: vim zookeeper-statefulSet.yaml 写入内容: -kind: StatefulSet apiVersion: apps/v1beta1 metadata: name: zookeeper-1 namespace: dev spec: serviceName: zookeeper-1 replicas: 1 selector: matchLabels: app: zookeeper-1 template: metadata: labels: app: zookeeper-1 spec: containers: - name: zookeeper image: digitalwonderland/zookeeper ports: - containerPort: 2181 env: - name: ZOOKEEPER_ID value: "1" - name: ZOOKEEPER_SERVER_1 value: zookeeper-1 - name: ZOOKEEPER_SERVER_2 value: zookeeper-2 - name: ZOOKEEPER_SERVER_3 value: zookeeper-3 volumeMounts: - name: zookeeper-data mountPath: "/var/lib/zookeeper/data" subPath: zookeeper volumeClaimTemplates: - metadata: name: zookeeper-data labels: app: zookeeper-1 spec: accessModes: ["ReadWriteOnce"] storageClassName: gp2 resources: requests: storage: 30Gi --- kind: StatefulSet apiVersion: apps/v1beta1 metadata: name: zookeeper-2 namespace: dev spec: serviceName: zookeeper-2 replicas: 1 selector: matchLabels: app: zookeeper-2 template: metadata: labels: app: zookeeper-2 spec: containers: - name: zookeeper image: digitalwonderland/zookeeper ports: - containerPort: 2181 env: - name: ZOOKEEPER_ID value: "2" - name: ZOOKEEPER_SERVER_1 value: zookeeper-1 - name: ZOOKEEPER_SERVER_2 value: zookeeper-2 - name: ZOOKEEPER_SERVER_3 value: zookeeper-3 volumeMounts: - name: zookeeper-data mountPath: "/var/lib/zookeeper/data" subPath: zookeeper-data volumeClaimTemplates: - metadata: name: zookeeper-data labels: app: zookeeper-2 spec: accessModes: ["ReadWriteOnce"] storageClassName: gp2 resources: requests: storage: 30Gi --- kind: StatefulSet apiVersion: apps/v1beta1 metadata: name: zookeeper-3 namespace: dev spec: serviceName: zookeeper-3 replicas: 1 selector: matchLabels: app: zookeeper-3 template: metadata: labels: app: zookeeper-3 spec: containers: - name: zookeeper image: digitalwonderland/zookeeper ports: - containerPort: 2181 env: - name: ZOOKEEPER_ID value: "3" - name: ZOOKEEPER_SERVER_1 value: zookeeper-1 - name: ZOOKEEPER_SERVER_2 value: zookeeper-2 - name: ZOOKEEPER_SERVER_3 value: zookeeper-3 volumeMounts: - name: zookeeper-data mountPath: "/var/lib/zookeeper/data" subPath: zookeeper volumeClaimTemplates: - metadata: name: zookeeper-data labels: app: zookeeper-3 spec: accessModes: ["ReadWriteOnce"] storageClassName: gp2 resources: requests: storage: 30Gi 编写zookeeper-service.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Zookeeper Kafka | 🍁 秋河落叶</title> +kind: StatefulSet apiVersion: apps/v1beta1 metadata: name: zookeeper-1 namespace: dev spec: serviceName: zookeeper-1 replicas: 1 selector: matchLabels: app: zookeeper-1 template: metadata: labels: app: zookeeper-1 spec: containers: - name: zookeeper image: digitalwonderland/zookeeper ports: - containerPort: 2181 env: - name: ZOOKEEPER_ID value: "1" - name: ZOOKEEPER_SERVER_1 value: zookeeper-1 - name: ZOOKEEPER_SERVER_2 value: zookeeper-2 - name: ZOOKEEPER_SERVER_3 value: zookeeper-3 volumeMounts: - name: zookeeper-data mountPath: "/var/lib/zookeeper/data" subPath: zookeeper volumeClaimTemplates: - metadata: name: zookeeper-data labels: app: zookeeper-1 spec: accessModes: ["ReadWriteOnce"] storageClassName: gp2 resources: requests: storage: 30Gi --- kind: StatefulSet apiVersion: apps/v1beta1 metadata: name: zookeeper-2 namespace: dev spec: serviceName: zookeeper-2 replicas: 1 selector: matchLabels: app: zookeeper-2 template: metadata: labels: app: zookeeper-2 spec: containers: - name: zookeeper image: digitalwonderland/zookeeper ports: - containerPort: 2181 env: - name: ZOOKEEPER_ID value: "2" - name: ZOOKEEPER_SERVER_1 value: zookeeper-1 - name: ZOOKEEPER_SERVER_2 value: zookeeper-2 - name: ZOOKEEPER_SERVER_3 value: zookeeper-3 volumeMounts: - name: zookeeper-data mountPath: "/var/lib/zookeeper/data" subPath: zookeeper-data volumeClaimTemplates: - metadata: name: zookeeper-data labels: app: zookeeper-2 spec: accessModes: ["ReadWriteOnce"] storageClassName: gp2 resources: requests: storage: 30Gi --- kind: StatefulSet apiVersion: apps/v1beta1 metadata: name: zookeeper-3 namespace: dev spec: serviceName: zookeeper-3 replicas: 1 selector: matchLabels: app: zookeeper-3 template: metadata: labels: app: zookeeper-3 spec: containers: - name: zookeeper image: digitalwonderland/zookeeper ports: - containerPort: 2181 env: - name: ZOOKEEPER_ID value: "3" - name: ZOOKEEPER_SERVER_1 value: zookeeper-1 - name: ZOOKEEPER_SERVER_2 value: zookeeper-2 - name: ZOOKEEPER_SERVER_3 value: zookeeper-3 volumeMounts: - name: zookeeper-data mountPath: "/var/lib/zookeeper/data" subPath: zookeeper volumeClaimTemplates: - metadata: name: zookeeper-data labels: app: zookeeper-3 spec: accessModes: ["ReadWriteOnce"] storageClassName: gp2 resources: requests: storage: 30Gi 编写zookeeper-service.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Deploy Zookeeper Kafka | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/k8s-deploy-zookeeper-kafka/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>K8s Deploy Zookeeper Kafka</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#部署zookeeper>部署Zookeeper</a></li><li><a href=#部署kafka>部署Kafka</a></li><li><a href=#部署kafka-connect>部署Kafka Connect</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 0-1 K8s部署Zookeeper和Kafka</p><h1 id=kubernetes-0-1-k8s部署zookeeper和kafka>Kubernetes 0-1 K8s部署Zookeeper和Kafka diff --git a/kubernetes/k8s-dev-01-api-concept/index.html b/kubernetes/k8s-dev-01-api-concept/index.html index 1572df77..f678fab6 100644 --- a/kubernetes/k8s-dev-01-api-concept/index.html +++ b/kubernetes/k8s-dev-01-api-concept/index.html @@ -9,7 +9,7 @@ Kind(K): API 类型,例如:Deployment,Service 等 通过 kubectl api-versions 获取集群中所有 API 的版本列表: $ kubectl api-versions acme.cert-manager.io/v1 admissionregistration.k8s.io/v1 apiextensions.k8s.io/v1 apiregistration.k8s.io/v1 apps/v1 authentication.k8s.io/v1 通过 kubectl api-resources 命令获取集群所有 API 的资源列表,并且可以看到资源的简写名称,版本以及类型: -$ kubectl api-resources NAME SHORTNAMES APIVERSION NAMESPACED KIND bindings v1 true Binding componentstatuses cs v1 false ComponentStatus configmaps cm v1 true ConfigMap endpoints ep v1 true Endpoints events ev v1 true Event limitranges limits v1 true LimitRange namespaces ns v1 false Namespace nodes no v1 false Node API 资源端点 # GVR 端点:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-dev-01-api-concept/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 定制开发 01:K8s API 概念 +$ kubectl api-resources NAME SHORTNAMES APIVERSION NAMESPACED KIND bindings v1 true Binding componentstatuses cs v1 false ComponentStatus configmaps cm v1 true ConfigMap endpoints ep v1 true Endpoints events ev v1 true Event limitranges limits v1 true LimitRange namespaces ns v1 false Namespace nodes no v1 false Node API 资源端点 # GVR 端点:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-dev-01-api-concept/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 定制开发 01:K8s API 概念 Kubernetes 定制开发 01:K8s API 概念 # 在 K8s 集群中,API 是一切的基础,K8s 的所有资源对象都是通过 API 来管理的,所以我们在定制开发的时候,首先要了解 K8s 的 API 概念。 基本概念 # Group(G): API 组,例如:apps、networking.k8s.io 等 @@ -20,9 +20,9 @@ Kind(K): API 类型,例如:Deployment,Service 等 通过 kubectl api-versions 获取集群中所有 API 的版本列表: $ kubectl api-versions acme.cert-manager.io/v1 admissionregistration.k8s.io/v1 apiextensions.k8s.io/v1 apiregistration.k8s.io/v1 apps/v1 authentication.k8s.io/v1 通过 kubectl api-resources 命令获取集群所有 API 的资源列表,并且可以看到资源的简写名称,版本以及类型: -$ kubectl api-resources NAME SHORTNAMES APIVERSION NAMESPACED KIND bindings v1 true Binding componentstatuses cs v1 false ComponentStatus configmaps cm v1 true ConfigMap endpoints ep v1 true Endpoints events ev v1 true Event limitranges limits v1 true LimitRange namespaces ns v1 false Namespace nodes no v1 false Node API 资源端点 # GVR 端点:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Dev 01 API Concept | 🍁 秋河落叶</title> +$ kubectl api-resources NAME SHORTNAMES APIVERSION NAMESPACED KIND bindings v1 true Binding componentstatuses cs v1 false ComponentStatus configmaps cm v1 true ConfigMap endpoints ep v1 true Endpoints events ev v1 true Event limitranges limits v1 true LimitRange namespaces ns v1 false Namespace nodes no v1 false Node API 资源端点 # GVR 端点:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Dev 01 API Concept | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/k8s-dev-01-api-concept/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>K8s Dev 01 API Concept</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#基本概念>基本概念</a></li><li><a href=#api-资源端点>API 资源端点</a></li><li><a href=#apiservice>APIService</a></li><li><a href=#创建一个-crd>创建一个 CRD</a><ul><li><a href=#openapi>OpenAPI</a></li></ul></li><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 定制开发 01:K8s API 概念</p><h1 id=kubernetes-定制开发-01k8s-api-概念>Kubernetes 定制开发 01:K8s API 概念 diff --git a/kubernetes/k8s-dev-02-crd/index.html b/kubernetes/k8s-dev-02-crd/index.html index 6a103021..4fbf7956 100644 --- a/kubernetes/k8s-dev-02-crd/index.html +++ b/kubernetes/k8s-dev-02-crd/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Kubernetes / Kubernetes 定制开发 02:CRD Kubernetes 定制开发 02:CRD # « Kubernetes 定制开发 01:K8s API 概念 -» Kubernetes 定制开发 50:扩展调度器"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-dev-02-crd/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 定制开发 02:CRD +» Kubernetes 定制开发 50:扩展调度器"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-dev-02-crd/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 定制开发 02:CRD Kubernetes 定制开发 02:CRD # « Kubernetes 定制开发 01:K8s API 概念 -» Kubernetes 定制开发 50:扩展调度器"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Dev 02 Crd | 🍁 秋河落叶</title> +» Kubernetes 定制开发 50:扩展调度器"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Dev 02 Crd | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/k8s-dev-02-crd/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>K8s Dev 02 Crd</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 定制开发 02:CRD</p><h1 id=kubernetes-定制开发-02crd>Kubernetes 定制开发 02:CRD diff --git a/kubernetes/k8s-dev-50-extend-kube-scheduler/index.html b/kubernetes/k8s-dev-50-extend-kube-scheduler/index.html index d032a1d5..53274e80 100644 --- a/kubernetes/k8s-dev-50-extend-kube-scheduler/index.html +++ b/kubernetes/k8s-dev-50-extend-kube-scheduler/index.html @@ -4,15 +4,15 @@ 如果默认调度器不符合你的需求,你可以实现自己的调度器,并且你的调度器可以和默认调度器或其他调度器一起运行在集群中。你可以通过声明 Pod 的 spec.schedulerName 字段来指定要使用的调度器。 扩展调度器 # 有三种方式可以实现自定义调度器: 修改 kube-scheduler 源码调度逻辑,然后编译成定制的调度器镜像,然后使用这个镜像部署调度进程 自定义 Pod 控制器,监听 Pod 的 spec.schedulerName 字段,在 Pod 被创建时,为其绑定节点 使用 Scheduler Extender 的方式,这种方式不需要修改默认调度器的配置文件 编译定制调度器镜像 # 克隆 kubernetes 源码,然后修改 kube-scheduler 源码,然后编译成定制的调度器镜像。 -git clone https://github.com/kubernetes/kubernetes.git cd kubernetes # 修改源码 make 编写 Dockerfile:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-dev-50-extend-kube-scheduler/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 定制开发 50:扩展调度器 +git clone https://github.com/kubernetes/kubernetes.git cd kubernetes # 修改源码 make 编写 Dockerfile:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-dev-50-extend-kube-scheduler/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 定制开发 50:扩展调度器 Kubernetes 定制开发 50:扩展调度器 # 简介 # Kubernetes Scheduler(调度器)是一个控制面进程,负责将 Pods 指派到节点上。调度器基于约束和可用资源为调度队列中每个 Pod 确定其可合法放置的节点。调度器之后对所有合法的节点进行排序,将 Pod 绑定到一个合适的节点。 kube-scheduler 是 Kubernetes 自带的一个默认调度器,它会根据 Pod 的资源需求和节点的资源容量,将 Pod 调度到合适的节点上。 如果默认调度器不符合你的需求,你可以实现自己的调度器,并且你的调度器可以和默认调度器或其他调度器一起运行在集群中。你可以通过声明 Pod 的 spec.schedulerName 字段来指定要使用的调度器。 扩展调度器 # 有三种方式可以实现自定义调度器: 修改 kube-scheduler 源码调度逻辑,然后编译成定制的调度器镜像,然后使用这个镜像部署调度进程 自定义 Pod 控制器,监听 Pod 的 spec.schedulerName 字段,在 Pod 被创建时,为其绑定节点 使用 Scheduler Extender 的方式,这种方式不需要修改默认调度器的配置文件 编译定制调度器镜像 # 克隆 kubernetes 源码,然后修改 kube-scheduler 源码,然后编译成定制的调度器镜像。 -git clone https://github.com/kubernetes/kubernetes.git cd kubernetes # 修改源码 make 编写 Dockerfile:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Dev 50 Extend Kube Scheduler | 🍁 秋河落叶</title> +git clone https://github.com/kubernetes/kubernetes.git cd kubernetes # 修改源码 make 编写 Dockerfile:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Dev 50 Extend Kube Scheduler | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/k8s-dev-50-extend-kube-scheduler/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>K8s Dev 50 Extend Kube Scheduler</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#简介>简介</a></li><li><a href=#扩展调度器>扩展调度器</a><ul><li><a href=#编译定制调度器镜像>编译定制调度器镜像</a></li><li><a href=#自定义调度控制器>自定义调度控制器</a></li><li><a href=#scheduler-extender>Scheduler Extender</a></li></ul></li><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 定制开发 50:扩展调度器</p><h1 id=kubernetes-定制开发-50扩展调度器>Kubernetes 定制开发 50:扩展调度器 diff --git a/kubernetes/k8s-get-started/index.html b/kubernetes/k8s-get-started/index.html index c4ae99b6..56df5879 100644 --- a/kubernetes/k8s-get-started/index.html +++ b/kubernetes/k8s-get-started/index.html @@ -10,7 +10,7 @@ K8s 的组成结构大致如下图: Master 节点 # 负责 K8s 资源的调度管理,由 Master 向 Node 下达控制命令,并且一般运维人员使用 Master 操作和执行命令。 Master 节点扮演的角色相当于 K8s 的大脑,其重要性可想而知,因此建议部署 3 台 Master 节点保证 K8s 的高可用性。 -kube-api-server:http rest 接口服务,与 K8s 其他组件通信,负责 K8s 资源的 CURD 的操作入口;"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-get-started/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 简单介绍 K8s +kube-api-server:http rest 接口服务,与 K8s 其他组件通信,负责 K8s 资源的 CURD 的操作入口;"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/k8s-get-started/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 简单介绍 K8s 简单介绍 K8s # 简介 # 我们的应用部署趋势由大型单体应用向微服务演变,微服务应用之间解耦,形成可被独立开发、部署、升级、伸缩的软件单元。 另一方面容器技术由于它的轻量级,资源隔离,可移植、部署高效等特性得到了迅速的发展和普及。越来越多的应用选择使用容器来部署,微服务更不例外。 这时,便有了管理微服务+容器的需求,Kubernetes 开始大放异彩。 @@ -22,9 +22,9 @@ K8s 的组成结构大致如下图: Master 节点 # 负责 K8s 资源的调度管理,由 Master 向 Node 下达控制命令,并且一般运维人员使用 Master 操作和执行命令。 Master 节点扮演的角色相当于 K8s 的大脑,其重要性可想而知,因此建议部署 3 台 Master 节点保证 K8s 的高可用性。 -kube-api-server:http rest 接口服务,与 K8s 其他组件通信,负责 K8s 资源的 CURD 的操作入口;"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Get Started | 🍁 秋河落叶</title> +kube-api-server:http rest 接口服务,与 K8s 其他组件通信,负责 K8s 资源的 CURD 的操作入口;"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>K8s Get Started | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/k8s-get-started/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>K8s Get Started</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#简介>简介</a></li><li><a href=#基本概念>基本概念</a><ul><li><a href=#master-节点>Master 节点</a></li><li><a href=#node-节点>Node 节点</a></li></ul></li><li><a href=#工具>工具</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 简单介绍 K8s</p><h1 id=简单介绍-k8s>简单介绍 K8s diff --git a/kubernetes/kubeadm-install-k8s-docker/index.html b/kubernetes/kubeadm-install-k8s-docker/index.html index 2ea45976..10e8878c 100644 --- a/kubernetes/kubeadm-install-k8s-docker/index.html +++ b/kubernetes/kubeadm-install-k8s-docker/index.html @@ -3,14 +3,14 @@ Notes: 随着 kubeadm & k8s 版本的更新,安装过程可能会有所不同,截至目前,本文档使用的是 kubeadm v1.28.3 & k8s v1.28.3 版本; 本文档使用的操作系统是 Ubuntu 22.04,其他操作系统可能会有所不同。 要求 # 至少一台物理机或虚拟机(例如:Ubuntu 22.04)作为集群节点,最少 2 核 2G 内存; 多节点之前网络互通,且节点主机名不冲突; Master 节点需要开放以下端口:6443、2379-2380、10250、10251、10252; 准备工作 # 禁用交换分区: # 临时禁用交换分区 sudo swapoff -a vim /etc/fstab # 注释掉 swap 分区的配置 配置系统: -cat <<EOF | sudo tee /etc/modules-load."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubeadm-install-k8s-docker/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / kubeadm 安装 Kubernetes (Docker) +cat <<EOF | sudo tee /etc/modules-load."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubeadm-install-k8s-docker/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / kubeadm 安装 Kubernetes (Docker) kubeadm 安装 Kubernetes (Docker) # 使用 kubeadm 安装 k8s 集群,是社区推荐的安装方式,本文档将介绍使用 kubeadm 安装 k8s 集群(使用 Docker 作为容器运行时)的详细过程。 Notes: 随着 kubeadm & k8s 版本的更新,安装过程可能会有所不同,截至目前,本文档使用的是 kubeadm v1.28.3 & k8s v1.28.3 版本; 本文档使用的操作系统是 Ubuntu 22.04,其他操作系统可能会有所不同。 要求 # 至少一台物理机或虚拟机(例如:Ubuntu 22.04)作为集群节点,最少 2 核 2G 内存; 多节点之前网络互通,且节点主机名不冲突; Master 节点需要开放以下端口:6443、2379-2380、10250、10251、10252; 准备工作 # 禁用交换分区: # 临时禁用交换分区 sudo swapoff -a vim /etc/fstab # 注释掉 swap 分区的配置 配置系统: -cat <<EOF | sudo tee /etc/modules-load."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubeadm Install K8s Docker | 🍁 秋河落叶</title> +cat <<EOF | sudo tee /etc/modules-load."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubeadm Install K8s Docker | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/kubeadm-install-k8s-docker/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/ class=active>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Kubeadm Install K8s Docker</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#要求>要求</a></li><li><a href=#准备工作>准备工作</a></li><li><a href=#安装-docker>安装 Docker</a></li><li><a href=#安装-cri-dockerd>安装 cri-dockerd</a></li><li><a href=#安装-kubeadmkubelet-和-kubectl>安装 kubeadm、kubelet 和 kubectl</a></li><li><a href=#配置-cgroup-driver>配置 cgroup-driver</a></li><li><a href=#安装集群>安装集群</a></li><li><a href=#安装网络插件>安装网络插件</a></li><li><a href=#安装-metrics-server>安装 metrics-server</a></li><li><a href=#部署应用>部署应用</a></li><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / kubeadm 安装 Kubernetes (Docker)</p><h1 id=kubeadm-安装-kubernetes-docker>kubeadm 安装 Kubernetes (Docker) diff --git a/kubernetes/kubeadm-install-k8s/index.html b/kubernetes/kubeadm-install-k8s/index.html index 9a784118..f87e8232 100644 --- a/kubernetes/kubeadm-install-k8s/index.html +++ b/kubernetes/kubeadm-install-k8s/index.html @@ -3,14 +3,14 @@ Notes: 随着 kubeadm & k8s 版本的更新,安装过程可能会有所不同,截至目前,本文档使用的是 kubeadm v1.28.3 & k8s v1.28.3 版本; 本文档使用的操作系统是 Ubuntu 22.04,其他操作系统可能会有所不同。 要求 # 至少一台物理机或虚拟机(例如:Ubuntu 22.04)作为集群节点,最少 2 核 2G 内存; 多节点之前网络互通,且节点主机名不冲突; Master 节点需要开放以下端口:6443、2379-2380、10250、10251、10252; 准备工作 # 禁用交换分区: # 临时禁用交换分区 sudo swapoff -a vim /etc/fstab # 注释掉 swap 分区的配置 配置系统: -cat <<EOF | sudo tee /etc/modules-load."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubeadm-install-k8s/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / kubeadm 安装 k8s (containerd) +cat <<EOF | sudo tee /etc/modules-load."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubeadm-install-k8s/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / kubeadm 安装 k8s (containerd) kubeadm 安装 k8s (containerd) # 使用 kubeadm 安装 k8s 集群,是社区推荐的安装方式,本文档将介绍使用 kubeadm 安装 k8s 集群的详细过程。 Notes: 随着 kubeadm & k8s 版本的更新,安装过程可能会有所不同,截至目前,本文档使用的是 kubeadm v1.28.3 & k8s v1.28.3 版本; 本文档使用的操作系统是 Ubuntu 22.04,其他操作系统可能会有所不同。 要求 # 至少一台物理机或虚拟机(例如:Ubuntu 22.04)作为集群节点,最少 2 核 2G 内存; 多节点之前网络互通,且节点主机名不冲突; Master 节点需要开放以下端口:6443、2379-2380、10250、10251、10252; 准备工作 # 禁用交换分区: # 临时禁用交换分区 sudo swapoff -a vim /etc/fstab # 注释掉 swap 分区的配置 配置系统: -cat <<EOF | sudo tee /etc/modules-load."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubeadm Install K8s | 🍁 秋河落叶</title> +cat <<EOF | sudo tee /etc/modules-load."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubeadm Install K8s | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/kubeadm-install-k8s/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Kubeadm Install K8s</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#要求>要求</a></li><li><a href=#准备工作>准备工作</a></li><li><a href=#安装-containerd>安装 containerd</a></li><li><a href=#安装-kubeadmkubelet-和-kubectl>安装 kubeadm、kubelet 和 kubectl</a></li><li><a href=#安装集群>安装集群</a></li><li><a href=#安装网络插件>安装网络插件</a></li><li><a href=#安装-metrics-server>安装 metrics-server</a></li><li><a href=#部署应用>部署应用</a></li><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / kubeadm 安装 k8s (containerd)</p><h1 id=kubeadm-安装-k8s-containerd>kubeadm 安装 k8s (containerd) diff --git a/kubernetes/kubeadm-upgrade/index.html b/kubernetes/kubeadm-upgrade/index.html index 21eeee86..0b939744 100644 --- a/kubernetes/kubeadm-upgrade/index.html +++ b/kubernetes/kubeadm-upgrade/index.html @@ -2,13 +2,13 @@ Kubeadm 升级 K8s # 本篇以升级 1.29.0(旧版本:1.28.x ) 版本为例,介绍如何通过 kubeadm 工具来升级 K8s 集群。 注意: 不支持跨主版本升级,如 1.27.x 升级到 1.29.x,中间必须先升级到 1.28.x 主版本更新必须先升级到最新的次版本,如 1.28.3 升级到 1.28.4,然后再升级到 1.29.x 升级步骤 # 控制节点(control plane node)升级 工作节点(worker node)升级 升级过程 # 1、升级至当前主版本的最新次版本 # sudo apt update sudo apt-cache madison kubeadm 以上命令后,将可以得到类似如下输出: -$ sudo apt-cache madison kubeadm kubeadm | 1.28.4-1.1 | https://pkgs.k8s.io/core:/stable:/v1.28/deb Packages kubeadm | 1.28.3-1.1 | https://pkgs.k8s.io/core:/stable:/v1.28/deb Packages kubeadm | 1."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubeadm-upgrade/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubeadm 升级 K8s +$ sudo apt-cache madison kubeadm kubeadm | 1.28.4-1.1 | https://pkgs.k8s.io/core:/stable:/v1.28/deb Packages kubeadm | 1.28.3-1.1 | https://pkgs.k8s.io/core:/stable:/v1.28/deb Packages kubeadm | 1."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubeadm-upgrade/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubeadm 升级 K8s Kubeadm 升级 K8s # 本篇以升级 1.29.0(旧版本:1.28.x ) 版本为例,介绍如何通过 kubeadm 工具来升级 K8s 集群。 注意: 不支持跨主版本升级,如 1.27.x 升级到 1.29.x,中间必须先升级到 1.28.x 主版本更新必须先升级到最新的次版本,如 1.28.3 升级到 1.28.4,然后再升级到 1.29.x 升级步骤 # 控制节点(control plane node)升级 工作节点(worker node)升级 升级过程 # 1、升级至当前主版本的最新次版本 # sudo apt update sudo apt-cache madison kubeadm 以上命令后,将可以得到类似如下输出: -$ sudo apt-cache madison kubeadm kubeadm | 1.28.4-1.1 | https://pkgs.k8s.io/core:/stable:/v1.28/deb Packages kubeadm | 1.28.3-1.1 | https://pkgs.k8s.io/core:/stable:/v1.28/deb Packages kubeadm | 1."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubeadm Upgrade | 🍁 秋河落叶</title> +$ sudo apt-cache madison kubeadm kubeadm | 1.28.4-1.1 | https://pkgs.k8s.io/core:/stable:/v1.28/deb Packages kubeadm | 1.28.3-1.1 | https://pkgs.k8s.io/core:/stable:/v1.28/deb Packages kubeadm | 1."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubeadm Upgrade | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/kubeadm-upgrade/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Kubeadm Upgrade</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#升级步骤>升级步骤</a></li><li><a href=#升级过程>升级过程</a><ul><li><a href=#1升级至当前主版本的最新次版本>1、升级至当前主版本的最新次版本</a></li><li><a href=#2升级至下一个主版本>2、升级至下一个主版本</a></li></ul></li><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubeadm 升级 K8s</p><h1 id=kubeadm-升级-k8s>Kubeadm 升级 K8s diff --git a/kubernetes/kubebuilder-inaction/index.html b/kubernetes/kubebuilder-inaction/index.html index bd84d43e..5c409fa3 100644 --- a/kubernetes/kubebuilder-inaction/index.html +++ b/kubernetes/kubebuilder-inaction/index.html @@ -2,13 +2,13 @@ kubebuilder 实战 # 简介 # kubebuilder 是一个构建 Operator(CRD + Controller)的框架的工具,它可以帮助我们快速的构建一个 Operator 项目,并提供了一些常用的命令,例如:创建 API、创建 Controller、Webhook 等。 安装 # 条件 # kustomize curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash controller-gen go install sigs.k8s.io/controller-tools/cmd/controller-gen@latest ⚠️ 注意:以上命令都是直接下载了对应命令工具最新的版本,在使用 kubebuilder 创建项目之后,在 Makefile 文件中会指定 kustomize 和 controller-gen 的版本,为了避免不兼容,推荐下载对应指定的版本。 使用以下命令安装 kubebuilder: -# download kubebuilder and install locally. GOOS=$(go env GOOS) GOARCH=$(go env GOARCH) curl -L -o kubebuilder https://go.kubebuilder.io/dl/latest/$GOOS/$GOARCH chmod +x kubebuilder && mv kubebuilder /usr/local/bin/ 代码自动补全:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubebuilder-inaction/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / kubebuilder 实战 +# download kubebuilder and install locally. GOOS=$(go env GOOS) GOARCH=$(go env GOARCH) curl -L -o kubebuilder https://go.kubebuilder.io/dl/latest/$GOOS/$GOARCH chmod +x kubebuilder && mv kubebuilder /usr/local/bin/ 代码自动补全:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubebuilder-inaction/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / kubebuilder 实战 kubebuilder 实战 # 简介 # kubebuilder 是一个构建 Operator(CRD + Controller)的框架的工具,它可以帮助我们快速的构建一个 Operator 项目,并提供了一些常用的命令,例如:创建 API、创建 Controller、Webhook 等。 安装 # 条件 # kustomize curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash controller-gen go install sigs.k8s.io/controller-tools/cmd/controller-gen@latest ⚠️ 注意:以上命令都是直接下载了对应命令工具最新的版本,在使用 kubebuilder 创建项目之后,在 Makefile 文件中会指定 kustomize 和 controller-gen 的版本,为了避免不兼容,推荐下载对应指定的版本。 使用以下命令安装 kubebuilder: -# download kubebuilder and install locally. GOOS=$(go env GOOS) GOARCH=$(go env GOARCH) curl -L -o kubebuilder https://go.kubebuilder.io/dl/latest/$GOOS/$GOARCH chmod +x kubebuilder && mv kubebuilder /usr/local/bin/ 代码自动补全:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubebuilder Inaction | 🍁 秋河落叶</title> +# download kubebuilder and install locally. GOOS=$(go env GOOS) GOARCH=$(go env GOARCH) curl -L -o kubebuilder https://go.kubebuilder.io/dl/latest/$GOOS/$GOARCH chmod +x kubebuilder && mv kubebuilder /usr/local/bin/ 代码自动补全:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubebuilder Inaction | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/kubebuilder-inaction/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Kubebuilder Inaction</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#简介>简介</a></li><li><a href=#安装>安装</a><ul><li><a href=#条件>条件</a></li></ul></li><li><a href=#创建项目>创建项目</a></li><li><a href=#创建-api>创建 API</a></li><li><a href=#在集群中部署>在集群中部署</a></li><li><a href=#卸载-crd>卸载 CRD</a></li><li><a href=#卸载控制器>卸载控制器</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / kubebuilder 实战</p><h1 id=kubebuilder-实战>kubebuilder 实战 diff --git a/kubernetes/kubectl/index.html b/kubernetes/kubectl/index.html index c88df7a1..957de485 100644 --- a/kubernetes/kubectl/index.html +++ b/kubernetes/kubectl/index.html @@ -3,14 +3,14 @@ 常用命令 # 自动补全 # source <(kubectl completion bash) 可以将上面的命令写入 ~/.bashrc 或 /etc/bash.bashrc 中,这样每次登录都会自动补全。 $ vim ~/.bashrc ... source <(kubectl completion bash) 命令别名 # alias k=kubectl complete -F __start_kubectl k Troubleshooting # Q1. _get_comp_words_by_ref: command not found # 解决方法: apt install bash-completion -y source /usr/share/bash-completion/bash_completion source <(kubectl completion bash) « kubebuilder 实战 -» Kubernetes 0-1 Kubernetes最佳实践"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubectl/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / kubectl +» Kubernetes 0-1 Kubernetes最佳实践"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubectl/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / kubectl kubectl # 安装 # 参考文档: kubectl 安装文档 常用命令 # 自动补全 # source <(kubectl completion bash) 可以将上面的命令写入 ~/.bashrc 或 /etc/bash.bashrc 中,这样每次登录都会自动补全。 $ vim ~/.bashrc ... source <(kubectl completion bash) 命令别名 # alias k=kubectl complete -F __start_kubectl k Troubleshooting # Q1. _get_comp_words_by_ref: command not found # 解决方法: apt install bash-completion -y source /usr/share/bash-completion/bash_completion source <(kubectl completion bash) « kubebuilder 实战 -» Kubernetes 0-1 Kubernetes最佳实践"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubectl | 🍁 秋河落叶</title> +» Kubernetes 0-1 Kubernetes最佳实践"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubectl | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/kubectl/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Kubectl</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装>安装</a></li><li><a href=#常用命令>常用命令</a><ul><li><a href=#自动补全>自动补全</a></li><li><a href=#命令别名>命令别名</a></li></ul></li><li><a href=#troubleshooting>Troubleshooting</a><ul><li><a href=#q1-_get_comp_words_by_ref-command-not-found>Q1. _get_comp_words_by_ref: command not found</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / kubectl</p><h1 id=kubectl>kubectl diff --git a/kubernetes/kubernetes-best-practice/index.html b/kubernetes/kubernetes-best-practice/index.html index e71984da..58e04df8 100644 --- a/kubernetes/kubernetes-best-practice/index.html +++ b/kubernetes/kubernetes-best-practice/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Kubernetes / Kubernetes 0-1 Kubernetes最佳实践 Kubernetes 0-1 Kubernetes最佳实践 # https://github.com/learnk8s/kubernetes-production-best-practices « kubectl -» Kubernetes Dashboard"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubernetes-best-practice/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 Kubernetes最佳实践 +» Kubernetes Dashboard"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubernetes-best-practice/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 Kubernetes最佳实践 Kubernetes 0-1 Kubernetes最佳实践 # https://github.com/learnk8s/kubernetes-production-best-practices « kubectl -» Kubernetes Dashboard"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubernetes Best Practice | 🍁 秋河落叶</title> +» Kubernetes Dashboard"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubernetes Best Practice | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/kubernetes-best-practice/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Kubernetes Best Practice</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 0-1 Kubernetes最佳实践</p><h1 id=kubernetes-0-1-kubernetes最佳实践>Kubernetes 0-1 Kubernetes最佳实践 diff --git a/kubernetes/kubernetes-dashboard/index.html b/kubernetes/kubernetes-dashboard/index.html index 0e001b7e..2ccbeb1b 100644 --- a/kubernetes/kubernetes-dashboard/index.html +++ b/kubernetes/kubernetes-dashboard/index.html @@ -3,14 +3,14 @@ Copy最新的recommended.yaml文件内容,写入本地kubernetes-dashboard.yaml文件。recommended.yaml文件地址: kubernetes dashboard github  -# Copyright 2017 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubernetes-dashboard/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Kubernetes Dashboard +# Copyright 2017 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubernetes-dashboard/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Kubernetes Dashboard Kubernetes Dashboard # Installation # Steps # 登入Kubernetes Master机器。 Copy最新的recommended.yaml文件内容,写入本地kubernetes-dashboard.yaml文件。recommended.yaml文件地址: kubernetes dashboard github  -# Copyright 2017 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubernetes Dashboard | 🍁 秋河落叶</title> +# Copyright 2017 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubernetes Dashboard | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/kubernetes-dashboard/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Kubernetes Dashboard</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#installation>Installation</a><ul><li><a href=#steps>Steps</a></li></ul></li><li><a href=#references>References</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes Dashboard</p><h1 id=kubernetes-dashboard>Kubernetes Dashboard diff --git a/kubernetes/kubernetes-naming-constraints/index.html b/kubernetes/kubernetes-naming-constraints/index.html index e9e460ac..8c4528ee 100644 --- a/kubernetes/kubernetes-naming-constraints/index.html +++ b/kubernetes/kubernetes-naming-constraints/index.html @@ -7,7 +7,7 @@ 可以使用下面的代码(Go)来检查资源名称是否符合规范: 引入包: go get k8s.io/apimachinery/pkg/util/validation 示例代码: -package main import ( "k8s.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubernetes-naming-constraints/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Kubernetes 中资源名称规范 +package main import ( "k8s.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubernetes-naming-constraints/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Kubernetes 中资源名称规范 Kubernetes 中资源名称规范 # 在Kubernetes中,同一种资源(GVR)在同一个命名空间下名称是唯一。但是名称也需要遵循命名规则。本篇主要介绍 Kubernetes 中三种资源名称的命名规范。 DNS1123Subdomain # 不能超过 253 个字符 只能包含小写字母、数字,以及 ‘-’ 和 ‘.’ 必须以字母数字开头 必须以字母数字结尾 以此规范约束的资源有: Ingress Pod ConfigMap NetworkPolicy DNS1123Label # 最多 63 个字符 只能包含小写字母、数字,以及 ‘-’ 必须以字母数字开头 必须以字母数字结尾 以此规范约束的资源有: @@ -16,9 +16,9 @@ 可以使用下面的代码(Go)来检查资源名称是否符合规范: 引入包: go get k8s.io/apimachinery/pkg/util/validation 示例代码: -package main import ( "k8s.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubernetes Naming Constraints | 🍁 秋河落叶</title> +package main import ( "k8s.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubernetes Naming Constraints | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/kubernetes-naming-constraints/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Kubernetes Naming Constraints</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#dns1123subdomain>DNS1123Subdomain</a></li><li><a href=#dns1123label>DNS1123Label</a></li><li><a href=#dns1035label>DNS1035Label</a></li><li><a href=#建议>建议</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 中资源名称规范</p><h1 id=kubernetes-中资源名称规范>Kubernetes 中资源名称规范 diff --git a/kubernetes/kubernetes/index.html b/kubernetes/kubernetes/index.html index 56f7394d..8b2957bf 100644 --- a/kubernetes/kubernetes/index.html +++ b/kubernetes/kubernetes/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Kubernetes / Kuberentes Kuberentes # « Kubernetes 中资源名称规范 -» KubeVirt 创建 Windows 虚拟机"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubernetes/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kuberentes +» KubeVirt 创建 Windows 虚拟机"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubernetes/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kuberentes Kuberentes # « Kubernetes 中资源名称规范 -» KubeVirt 创建 Windows 虚拟机"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubernetes | 🍁 秋河落叶</title> +» KubeVirt 创建 Windows 虚拟机"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubernetes | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/kubernetes/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Kubernetes</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kuberentes</p><h1 id=kuberentes>Kuberentes diff --git a/kubernetes/kubevirt-create-windows-vm/index.html b/kubernetes/kubevirt-create-windows-vm/index.html index e6044e81..2fda2484 100644 --- a/kubernetes/kubevirt-create-windows-vm/index.html +++ b/kubernetes/kubevirt-create-windows-vm/index.html @@ -1,8 +1,8 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Kubernetes / KubeVirt 创建 Windows 虚拟机 -KubeVirt 创建 Windows 虚拟机 # virtctl image-upload --image-path windows-10.iso --pvc-name=windows-10-iso --size 10G --uploadproxy-url https://<cdi-uploadproxy.cdi.svc> --insecure --wait-secs 240 apiVersion: v1 kind: PersistentVolumeClaim metadata: name: windows-10-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 40G storageClassName: longhorn volumeMode: Filesystem --- apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: windows-10 spec: running: true template: metadata: labels: kubevirt.io/domain: windows-10 spec: domain: cpu: cores: 4 devices: networkInterfaceMultiqueue: true #开启网卡多队列模式 blockMultiQueue: true #开启磁盘多队列模式 disks: - cdrom: bus: sata name: virtiocontainerdisk - cdrom: bus: sata name: cdromiso bootOrder: 1 - disk: bus: virtio name: harddrive bootOrder: 2 interfaces: - masquerade: {} model: virtio name: default resources: requests: memory: 8G networks: - name: default pod: {} volumes: - name: cdromiso persistentVolumeClaim: claimName: windows-10-iso - name: harddrive persistentVolumeClaim: claimName: windows-10-data - containerDisk: image: kubevirt/virtio-container-disk name: virtiocontainerdisk « Kuberentes"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubevirt-create-windows-vm/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / KubeVirt 创建 Windows 虚拟机 -KubeVirt 创建 Windows 虚拟机 # virtctl image-upload --image-path windows-10.iso --pvc-name=windows-10-iso --size 10G --uploadproxy-url https://<cdi-uploadproxy.cdi.svc> --insecure --wait-secs 240 apiVersion: v1 kind: PersistentVolumeClaim metadata: name: windows-10-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 40G storageClassName: longhorn volumeMode: Filesystem --- apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: windows-10 spec: running: true template: metadata: labels: kubevirt.io/domain: windows-10 spec: domain: cpu: cores: 4 devices: networkInterfaceMultiqueue: true #开启网卡多队列模式 blockMultiQueue: true #开启磁盘多队列模式 disks: - cdrom: bus: sata name: virtiocontainerdisk - cdrom: bus: sata name: cdromiso bootOrder: 1 - disk: bus: virtio name: harddrive bootOrder: 2 interfaces: - masquerade: {} model: virtio name: default resources: requests: memory: 8G networks: - name: default pod: {} volumes: - name: cdromiso persistentVolumeClaim: claimName: windows-10-iso - name: harddrive persistentVolumeClaim: claimName: windows-10-data - containerDisk: image: kubevirt/virtio-container-disk name: virtiocontainerdisk « Kuberentes"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubevirt Create Windows Vm | 🍁 秋河落叶</title> +KubeVirt 创建 Windows 虚拟机 # virtctl image-upload --image-path windows-10.iso --pvc-name=windows-10-iso --size 10G --uploadproxy-url https://<cdi-uploadproxy.cdi.svc> --insecure --wait-secs 240 apiVersion: v1 kind: PersistentVolumeClaim metadata: name: windows-10-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 40G storageClassName: longhorn volumeMode: Filesystem --- apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: windows-10 spec: running: true template: metadata: labels: kubevirt.io/domain: windows-10 spec: domain: cpu: cores: 4 devices: networkInterfaceMultiqueue: true #开启网卡多队列模式 blockMultiQueue: true #开启磁盘多队列模式 disks: - cdrom: bus: sata name: virtiocontainerdisk - cdrom: bus: sata name: cdromiso bootOrder: 1 - disk: bus: virtio name: harddrive bootOrder: 2 interfaces: - masquerade: {} model: virtio name: default resources: requests: memory: 8G networks: - name: default pod: {} volumes: - name: cdromiso persistentVolumeClaim: claimName: windows-10-iso - name: harddrive persistentVolumeClaim: claimName: windows-10-data - containerDisk: image: kubevirt/virtio-container-disk name: virtiocontainerdisk « Kuberentes"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubevirt-create-windows-vm/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / KubeVirt 创建 Windows 虚拟机 +KubeVirt 创建 Windows 虚拟机 # virtctl image-upload --image-path windows-10.iso --pvc-name=windows-10-iso --size 10G --uploadproxy-url https://<cdi-uploadproxy.cdi.svc> --insecure --wait-secs 240 apiVersion: v1 kind: PersistentVolumeClaim metadata: name: windows-10-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 40G storageClassName: longhorn volumeMode: Filesystem --- apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: windows-10 spec: running: true template: metadata: labels: kubevirt.io/domain: windows-10 spec: domain: cpu: cores: 4 devices: networkInterfaceMultiqueue: true #开启网卡多队列模式 blockMultiQueue: true #开启磁盘多队列模式 disks: - cdrom: bus: sata name: virtiocontainerdisk - cdrom: bus: sata name: cdromiso bootOrder: 1 - disk: bus: virtio name: harddrive bootOrder: 2 interfaces: - masquerade: {} model: virtio name: default resources: requests: memory: 8G networks: - name: default pod: {} volumes: - name: cdromiso persistentVolumeClaim: claimName: windows-10-iso - name: harddrive persistentVolumeClaim: claimName: windows-10-data - containerDisk: image: kubevirt/virtio-container-disk name: virtiocontainerdisk « Kuberentes"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubevirt Create Windows Vm | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/kubevirt-create-windows-vm/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Kubevirt Create Windows Vm</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / KubeVirt 创建 Windows 虚拟机</p><h1 id=kubevirt-创建-windows-虚拟机>KubeVirt 创建 Windows 虚拟机 diff --git a/kubernetes/kubevirt-practice/index.html b/kubernetes/kubevirt-practice/index.html index cc2d5653..f63c7e11 100644 --- a/kubernetes/kubevirt-practice/index.html +++ b/kubernetes/kubevirt-practice/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Kubernetes / Kubevirt 实践 Kubevirt 实践 # 简介 # Kubevirt 是 Redhat 开源的以容器方式运行虚拟机的项目,以 k8s add-on 方式,利用 k8s CRD 为增加资源类型 VirtualMachineInstance(VMI), 使用容器的 image registry 去创建虚拟机并提供 VM 生命周期管理。 CRD 的方式使得 kubevirt 对虚拟机的管理不局限于 pod 管理接口,但是也无法使用 pod 的 RS DS Deployment 等管理能力,也意味着 kubevirt 如果想要利用 pod 管理能力,要自主去实现,目前 kubevirt 实现了类似 RS 的功能。 kubevirt 目前支持的 runtime 是 docker 和 runc。 -安装 # 部署 K8s 资源 # 最新版本 export KUBEVIRT_VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases/latest | jq -r ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubevirt-practice/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubevirt 实践 +安装 # 部署 K8s 资源 # 最新版本 export KUBEVIRT_VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases/latest | jq -r ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kubevirt-practice/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubevirt 实践 Kubevirt 实践 # 简介 # Kubevirt 是 Redhat 开源的以容器方式运行虚拟机的项目,以 k8s add-on 方式,利用 k8s CRD 为增加资源类型 VirtualMachineInstance(VMI), 使用容器的 image registry 去创建虚拟机并提供 VM 生命周期管理。 CRD 的方式使得 kubevirt 对虚拟机的管理不局限于 pod 管理接口,但是也无法使用 pod 的 RS DS Deployment 等管理能力,也意味着 kubevirt 如果想要利用 pod 管理能力,要自主去实现,目前 kubevirt 实现了类似 RS 的功能。 kubevirt 目前支持的 runtime 是 docker 和 runc。 -安装 # 部署 K8s 资源 # 最新版本 export KUBEVIRT_VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases/latest | jq -r ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubevirt Practice | 🍁 秋河落叶</title> +安装 # 部署 K8s 资源 # 最新版本 export KUBEVIRT_VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases/latest | jq -r ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kubevirt Practice | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/kubevirt-practice/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Kubevirt Practice</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#简介>简介</a></li><li><a href=#安装>安装</a></li><li><a href=#概念>概念</a></li><li><a href=#创建虚拟机>创建虚拟机</a></li><li><a href=#运行虚拟机>运行虚拟机</a></li><li><a href=#访问虚拟机>访问虚拟机</a></li><li><a href=#关闭虚拟机>关闭虚拟机</a></li><li><a href=#磁盘访问>磁盘访问</a><ul><li><a href=#lun>lun</a></li><li><a href=#disk>disk</a></li><li><a href=#cdrom>cdrom</a></li></ul></li><li><a href=#排错>排错</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubevirt 实践</p><h1 id=kubevirt-实践>Kubevirt 实践 diff --git a/kubernetes/kustomize/index.html b/kubernetes/kustomize/index.html index dbabb833..6107ba3a 100644 --- a/kubernetes/kustomize/index.html +++ b/kubernetes/kustomize/index.html @@ -3,14 +3,14 @@ 从其他来源生成资源 为资源设置贯穿性(Cross-Cutting)字段 组织和定制资源集合 从 1.14 版本开始,kubectl 也开始支持使用 kustomization 文件来管理 Kubernetes 对象。 要查看包含 kustomization 文件的目录中的资源,执行下面的命令: kubectl kustomize <kustomization_directory> 要应用这些资源,使用 --kustomize 或 -k 参数来执行 kubectl apply: kubectl apply -k <kustomization_directory> 生成资源 # ConfigMap 和 Secret 包含其他 Kubernetes 对象(如 Pod)所需要的配置或敏感数据。 ConfigMap 或 Secret 中数据的来源往往是集群外部,例如某个 .properties 文件或者 SSH 密钥文件。 Kustomize 提供 secretGenerator 和 configMapGenerator,可以基于文件或字面值来生成 Secret 和 ConfigMap。 -configMapGenerator # 要基于文件来生成 ConfigMap,可以在 configMapGenerator 的 files 列表中添加表项。 下面是一个根据 ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kustomize/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kustomize +configMapGenerator # 要基于文件来生成 ConfigMap,可以在 configMapGenerator 的 files 列表中添加表项。 下面是一个根据 ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/kustomize/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kustomize Kustomize # Kustomize 是一个通过 kustomization 文件 定制 Kubernetes 对象的工具。它提供以下功能特性来管理应用配置文件: 从其他来源生成资源 为资源设置贯穿性(Cross-Cutting)字段 组织和定制资源集合 从 1.14 版本开始,kubectl 也开始支持使用 kustomization 文件来管理 Kubernetes 对象。 要查看包含 kustomization 文件的目录中的资源,执行下面的命令: kubectl kustomize <kustomization_directory> 要应用这些资源,使用 --kustomize 或 -k 参数来执行 kubectl apply: kubectl apply -k <kustomization_directory> 生成资源 # ConfigMap 和 Secret 包含其他 Kubernetes 对象(如 Pod)所需要的配置或敏感数据。 ConfigMap 或 Secret 中数据的来源往往是集群外部,例如某个 .properties 文件或者 SSH 密钥文件。 Kustomize 提供 secretGenerator 和 configMapGenerator,可以基于文件或字面值来生成 Secret 和 ConfigMap。 -configMapGenerator # 要基于文件来生成 ConfigMap,可以在 configMapGenerator 的 files 列表中添加表项。 下面是一个根据 ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kustomize | 🍁 秋河落叶</title> +configMapGenerator # 要基于文件来生成 ConfigMap,可以在 configMapGenerator 的 files 列表中添加表项。 下面是一个根据 ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Kustomize | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/kustomize/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Kustomize</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#生成资源>生成资源</a><ul><li><a href=#configmapgenerator>configMapGenerator</a></li><li><a href=#设置贯穿性字段>设置贯穿性字段</a></li><li><a href=#组织和定制资源>组织和定制资源</a></li></ul></li><li><a href=#基准bases与覆盖overlays>基准(Bases)与覆盖(Overlays)</a></li><li><a href=#如何使用-kustomize-来应用查看和删除对象>如何使用 Kustomize 来应用、查看和删除对象</a></li><li><a href=#kustomize-功能特性列表>Kustomize 功能特性列表</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kustomize</p><h1 id=kustomize>Kustomize diff --git a/kubernetes/liveness-readiness-probe/index.html b/kubernetes/liveness-readiness-probe/index.html index 74fd3d5d..32f8bc57 100644 --- a/kubernetes/liveness-readiness-probe/index.html +++ b/kubernetes/liveness-readiness-probe/index.html @@ -18,7 +18,7 @@ 打开一个TCP连接到容器的指定端口,连接成功建立则确定Pod就绪。 使用方式: livenessProbe: tcpSocket: port: 80 一般就绪探针会在启动容器一段时间后才开始第一次的就绪探测,之后做周期性探测。所以在定义就绪指针时,会给以下几个参数: -initialDelaySeconds:在初始化容器多少秒后开始第一次就绪探测; timeoutSeconds:如果该次就绪探测超过多少秒后还未成功,判定为超时,该次探测失败,Pod不就绪。默认值1,最小值1; periodSeconds:如果Pod未就绪,则每隔多少秒周期性的做就绪探测。默认值10,最小值1; failureThreshold:如果容器之前探测成功,后续连续几次探测失败,则确定容器未就绪。默认值3,最小值1; successThreshold:如果容器之前探测失败,后续连续几次探测成功,则确定容器就绪。默认值1,最小值1。 使用示例 # 目前我在docker hub有一个测试镜像:poneding/helloweb:v1,容器启动后,有一个健康检查路由/healthz/return200,访问该路由状态码返回200;有一个检查路由/health/return404,访问该路由状态码返回404。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/liveness-readiness-probe/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 Pod中的livenessProbe和readinessProbe解读 +initialDelaySeconds:在初始化容器多少秒后开始第一次就绪探测; timeoutSeconds:如果该次就绪探测超过多少秒后还未成功,判定为超时,该次探测失败,Pod不就绪。默认值1,最小值1; periodSeconds:如果Pod未就绪,则每隔多少秒周期性的做就绪探测。默认值10,最小值1; failureThreshold:如果容器之前探测成功,后续连续几次探测失败,则确定容器未就绪。默认值3,最小值1; successThreshold:如果容器之前探测失败,后续连续几次探测成功,则确定容器就绪。默认值1,最小值1。 使用示例 # 目前我在docker hub有一个测试镜像:poneding/helloweb:v1,容器启动后,有一个健康检查路由/healthz/return200,访问该路由状态码返回200;有一个检查路由/health/return404,访问该路由状态码返回404。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/liveness-readiness-probe/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 Pod中的livenessProbe和readinessProbe解读 Kubernetes 0-1 Pod中的livenessProbe和readinessProbe解读 # 写在前面 # K8s对Pod的健康状态可以通过两类探针来检查:livenessProbe和readinessProbe,kubelet通过定期执行这两类探针来诊断容器的健康状况。 livenessProbe简介 # 存活指针,判断Pod(中的应用容器)是否健康,可以理解为健康检查。我们使用livenessProbe来定期的去探测,如果探测成功,则Pod状态可以判定为Running;如果探测失败,可kubectl会根据Pod的重启策略来重启容器。 如果未给Pod设置livenessProbe,则默认探针永远返回Success。 @@ -38,9 +38,9 @@ 打开一个TCP连接到容器的指定端口,连接成功建立则确定Pod就绪。 使用方式: livenessProbe: tcpSocket: port: 80 一般就绪探针会在启动容器一段时间后才开始第一次的就绪探测,之后做周期性探测。所以在定义就绪指针时,会给以下几个参数: -initialDelaySeconds:在初始化容器多少秒后开始第一次就绪探测; timeoutSeconds:如果该次就绪探测超过多少秒后还未成功,判定为超时,该次探测失败,Pod不就绪。默认值1,最小值1; periodSeconds:如果Pod未就绪,则每隔多少秒周期性的做就绪探测。默认值10,最小值1; failureThreshold:如果容器之前探测成功,后续连续几次探测失败,则确定容器未就绪。默认值3,最小值1; successThreshold:如果容器之前探测失败,后续连续几次探测成功,则确定容器就绪。默认值1,最小值1。 使用示例 # 目前我在docker hub有一个测试镜像:poneding/helloweb:v1,容器启动后,有一个健康检查路由/healthz/return200,访问该路由状态码返回200;有一个检查路由/health/return404,访问该路由状态码返回404。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Liveness Readiness Probe | 🍁 秋河落叶</title> +initialDelaySeconds:在初始化容器多少秒后开始第一次就绪探测; timeoutSeconds:如果该次就绪探测超过多少秒后还未成功,判定为超时,该次探测失败,Pod不就绪。默认值1,最小值1; periodSeconds:如果Pod未就绪,则每隔多少秒周期性的做就绪探测。默认值10,最小值1; failureThreshold:如果容器之前探测成功,后续连续几次探测失败,则确定容器未就绪。默认值3,最小值1; successThreshold:如果容器之前探测失败,后续连续几次探测成功,则确定容器就绪。默认值1,最小值1。 使用示例 # 目前我在docker hub有一个测试镜像:poneding/helloweb:v1,容器启动后,有一个健康检查路由/healthz/return200,访问该路由状态码返回200;有一个检查路由/health/return404,访问该路由状态码返回404。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Liveness Readiness Probe | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/liveness-readiness-probe/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Liveness Readiness Probe</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#写在前面>写在前面</a></li><li><a href=#livenessprobe简介>livenessProbe简介</a></li><li><a href=#readinessprobe简介>readinessProbe简介</a></li><li><a href=#定义参数>定义参数</a></li><li><a href=#使用示例>使用示例</a><ul><li><a href=#readinessprobe示例>readinessProbe示例</a></li><li><a href=#livenessprobe示例>livenessProbe示例</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 0-1 Pod中的livenessProbe和readinessProbe解读</p><h1 id=kubernetes-0-1-pod中的livenessprobe和readinessprobe解读>Kubernetes 0-1 Pod中的livenessProbe和readinessProbe解读 diff --git a/kubernetes/local-storageclass/index.html b/kubernetes/local-storageclass/index.html index f6c02efb..f22a8937 100644 --- a/kubernetes/local-storageclass/index.html +++ b/kubernetes/local-storageclass/index.html @@ -4,15 +4,15 @@ local 卷只能用作静态创建的持久卷。不支持动态配置。 与 hostPath 卷相比,local 卷能够以持久和可移植的方式使用,而无需手动将 Pod 调度到节点。系统通过查看 PersistentVolume 的节点亲和性配置,就能了解卷的节点约束。 然而,local 卷仍然取决于底层节点的可用性,并不适合所有应用程序。 如果节点变得不健康,那么 local 卷也将变得不可被 Pod 访问。使用它的 Pod 将不能运行。 使用 local 卷的应用程序必须能够容忍这种可用性的降低,以及因底层磁盘的耐用性特征而带来的潜在的数据丢失风险。 -创建 local-storage 存储类 # apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer 手动创建 PV/PVC # 1、使用 local 卷时,你需要设置 PersistentVolume 对象的 nodeAffinity 字段。 Kubernetes 调度器使用 PersistentVolume 的 nodeAffinity 信息来将使用 local 卷的 Pod 调度到正确的节点;"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/local-storageclass/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / local 存储卷实践 +创建 local-storage 存储类 # apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer 手动创建 PV/PVC # 1、使用 local 卷时,你需要设置 PersistentVolume 对象的 nodeAffinity 字段。 Kubernetes 调度器使用 PersistentVolume 的 nodeAffinity 信息来将使用 local 卷的 Pod 调度到正确的节点;"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/local-storageclass/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / local 存储卷实践 local 存储卷实践 # 在 Kubernetes 中有一种存储卷类型为 local。 local 卷所代表的是某个被挂载的本地存储设备,例如磁盘、分区或者目录。 local 卷只能用作静态创建的持久卷。不支持动态配置。 与 hostPath 卷相比,local 卷能够以持久和可移植的方式使用,而无需手动将 Pod 调度到节点。系统通过查看 PersistentVolume 的节点亲和性配置,就能了解卷的节点约束。 然而,local 卷仍然取决于底层节点的可用性,并不适合所有应用程序。 如果节点变得不健康,那么 local 卷也将变得不可被 Pod 访问。使用它的 Pod 将不能运行。 使用 local 卷的应用程序必须能够容忍这种可用性的降低,以及因底层磁盘的耐用性特征而带来的潜在的数据丢失风险。 -创建 local-storage 存储类 # apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer 手动创建 PV/PVC # 1、使用 local 卷时,你需要设置 PersistentVolume 对象的 nodeAffinity 字段。 Kubernetes 调度器使用 PersistentVolume 的 nodeAffinity 信息来将使用 local 卷的 Pod 调度到正确的节点;"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Local Storageclass | 🍁 秋河落叶</title> +创建 local-storage 存储类 # apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer 手动创建 PV/PVC # 1、使用 local 卷时,你需要设置 PersistentVolume 对象的 nodeAffinity 字段。 Kubernetes 调度器使用 PersistentVolume 的 nodeAffinity 信息来将使用 local 卷的 Pod 调度到正确的节点;"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Local Storageclass | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/local-storageclass/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Local Storageclass</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#创建-local-storage-存储类>创建 local-storage 存储类</a></li><li><a href=#手动创建-pvpvc>手动创建 PV/PVC</a></li><li><a href=#创建-pod>创建 Pod</a></li><li><a href=#参考>参考</a></li><li><a href=#lovo-项目>lovo 项目</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / local 存储卷实践</p><h1 id=local-存储卷实践>local 存储卷实践 diff --git a/kubernetes/metallb/index.html b/kubernetes/metallb/index.html index b4073642..adc59c44 100644 --- a/kubernetes/metallb/index.html +++ b/kubernetes/metallb/index.html @@ -8,7 +8,7 @@ vim metallb-configMap.yaml 写入文件内容: apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: config data: config: | address-pools: - name: default protocol: layer2 addresses: - 192.168.115.140-192.168.115.199 注意:IP池的网络需要和K8s集群的IP处于同一网段,我的K8s集群网络是192.168.115.13x,这里IP池则是给到192.168.115.140-192.168.115.199的范围。 执行命令: -kubectl apply -f metallb-namespace.yaml kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)" kubectl apply -f metallb.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/metallb/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Kubernetes 0-1 K8s自建LoadBalancer +kubectl apply -f metallb-namespace.yaml kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)" kubectl apply -f metallb.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/metallb/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Kubernetes 0-1 K8s自建LoadBalancer Kubernetes 0-1 K8s自建LoadBalancer # Metallb介绍 # 一般只有云平台支持LoadBalancer,如果脱离云平台,自己搭建的K8s集群,Service的类型使用LoadBalancer是没有任何效果的。为了让私有网络中的K8s集群也能体验到LoadBalabcer,Metallb成为了解决方案。 Metallb运行在K8s集群中,监视集群内LoadBalancer类型的服务,然后从配置的IP池中为其分配一个可用IP,以ARP/NDP或BGP的方式将其广播出去,这个可用IP成为了LoadBalancer的Url,可供集群外访问。 Metallb搭建过程 # 创建命名空间 metallb-system: @@ -18,9 +18,9 @@ vim metallb-configMap.yaml 写入文件内容: apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: config data: config: | address-pools: - name: default protocol: layer2 addresses: - 192.168.115.140-192.168.115.199 注意:IP池的网络需要和K8s集群的IP处于同一网段,我的K8s集群网络是192.168.115.13x,这里IP池则是给到192.168.115.140-192.168.115.199的范围。 执行命令: -kubectl apply -f metallb-namespace.yaml kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)" kubectl apply -f metallb.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Metallb | 🍁 秋河落叶</title> +kubectl apply -f metallb-namespace.yaml kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)" kubectl apply -f metallb.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Metallb | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/metallb/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Metallb</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#metallb介绍>Metallb介绍</a></li><li><a href=#metallb搭建过程>Metallb搭建过程</a></li><li><a href=#loadbalancer测试>LoadBalancer测试</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 0-1 K8s自建LoadBalancer</p><h1 id=kubernetes-0-1-k8s自建loadbalancer>Kubernetes 0-1 K8s自建LoadBalancer diff --git a/kubernetes/nfs-as-pvc/index.html b/kubernetes/nfs-as-pvc/index.html index 04f44797..bd8a3fc7 100644 --- a/kubernetes/nfs-as-pvc/index.html +++ b/kubernetes/nfs-as-pvc/index.html @@ -3,14 +3,14 @@ NFS(Network File System),网络文件系统,允许计算机之间共享存储资源,这里也就不具体介绍了。 部署 nfs # 以下命令需要root权限,示例中机器IP为192.168.115.137。 安装 nfs: # Ubuntu & Debian apt install nfs-kernel-server -y # CentOS yum install nfs-util -y 创建共享目录: mkdir /nfs/data -p 修改 nfs 的默认配置,在文末添加配置: vim /etc/exports /nfs/data *(rw,sync,no_root_squash) 其中: -/nfs/data:共享目录 *:对所有开放访问,可以配置成网段,IP,域名等 rw:读写权限 sync:文件同时写入磁盘和内存 no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时,其权限将被转换成为匿名使用者,通常它的 UID 与 GID,都会变成 nobody 身份 重启 rpc,nfs 需要向 rpc 注册: systemctl restart rpcbind."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/nfs-as-pvc/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 使用 nfs 持久化存储 +/nfs/data:共享目录 *:对所有开放访问,可以配置成网段,IP,域名等 rw:读写权限 sync:文件同时写入磁盘和内存 no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时,其权限将被转换成为匿名使用者,通常它的 UID 与 GID,都会变成 nobody 身份 重启 rpc,nfs 需要向 rpc 注册: systemctl restart rpcbind."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/nfs-as-pvc/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 使用 nfs 持久化存储 使用 nfs 持久化存储 # 一般云平台都会提供云存储服务,如 AWS EBS 服务,K8s 可以直接使用云存储服务创建 PV 和 PVC 作为 Volume 的存储后端。假设你没有使用到云存储,那么 NFS 可能会适合你。 NFS(Network File System),网络文件系统,允许计算机之间共享存储资源,这里也就不具体介绍了。 部署 nfs # 以下命令需要root权限,示例中机器IP为192.168.115.137。 安装 nfs: # Ubuntu & Debian apt install nfs-kernel-server -y # CentOS yum install nfs-util -y 创建共享目录: mkdir /nfs/data -p 修改 nfs 的默认配置,在文末添加配置: vim /etc/exports /nfs/data *(rw,sync,no_root_squash) 其中: -/nfs/data:共享目录 *:对所有开放访问,可以配置成网段,IP,域名等 rw:读写权限 sync:文件同时写入磁盘和内存 no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时,其权限将被转换成为匿名使用者,通常它的 UID 与 GID,都会变成 nobody 身份 重启 rpc,nfs 需要向 rpc 注册: systemctl restart rpcbind."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Nfs as Pvc | 🍁 秋河落叶</title> +/nfs/data:共享目录 *:对所有开放访问,可以配置成网段,IP,域名等 rw:读写权限 sync:文件同时写入磁盘和内存 no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时,其权限将被转换成为匿名使用者,通常它的 UID 与 GID,都会变成 nobody 身份 重启 rpc,nfs 需要向 rpc 注册: systemctl restart rpcbind."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Nfs as Pvc | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/nfs-as-pvc/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Nfs as Pvc</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#部署-nfs>部署 nfs</a></li><li><a href=#创建-pv>创建 PV</a><ul><li><a href=#accessmodes-访问模式>AccessModes 访问模式</a></li><li><a href=#persistentvolumereclaimpolicy-回收策略>PersistentVolumeReclaimPolicy 回收策略</a></li><li><a href=#status>Status</a></li></ul></li><li><a href=#创建-pvc>创建 PVC</a></li><li><a href=#volume-使用-pvc>Volume 使用 PVC</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 使用 nfs 持久化存储</p><h1 id=使用-nfs-持久化存储>使用 nfs 持久化存储 diff --git a/kubernetes/pod-understood/index.html b/kubernetes/pod-understood/index.html index f3f8aa4e..04ff237e 100644 --- a/kubernetes/pod-understood/index.html +++ b/kubernetes/pod-understood/index.html @@ -2,13 +2,13 @@ Kubernetes 0-1 了解 Pod # Pod 介绍 # Pod,是 K8s 对象模型中的最小单元,Pod 里面包含着一组容器(单个容器或多个紧密耦合的容器),这时候 Pod 可以理解为一个机器,而 Pod 里面的容器则理解为该机器里面的进程。 Pod 的容器运行时由容器引擎提供,默认的容器引擎是 Docker;并且 K8s 管理的是 Pod,而不是容器。 一个 Pod 内部的容器共享: -存储:一个 Pod 可以指定一组共享存储卷。 网络:每个 Pod 分配一个唯一 IP(集群内 IP),共享网络命名空间,包括 IP 地址和网络端口。Pod 内的容器可以使用 localhost 互相通信,集群内 Pod 与 Pod通信可以使用 Pod 分配的 IP,但是由于 Pod 的 IP 是随机分配的,这种互通信的方式不太适合使用。 尽管一个 Pod 内可以包含多个 Pod,但我们在部署应用容器时的最佳实践是一个 Pod 里面只包含一个应用容器作为主容器,其他容器为主容器服务,称之为辅助容器。例如主容器崩溃了,会有一个辅助容器去重启主容器。辅助容器可以有也可以没有,因为 Pod 里面容器的生命周期可以被 Pod 的生命周期取代,而 Pod 的生命周期可以通过 Pod 管理器来管理维护。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/pod-understood/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 了解 Pod +存储:一个 Pod 可以指定一组共享存储卷。 网络:每个 Pod 分配一个唯一 IP(集群内 IP),共享网络命名空间,包括 IP 地址和网络端口。Pod 内的容器可以使用 localhost 互相通信,集群内 Pod 与 Pod通信可以使用 Pod 分配的 IP,但是由于 Pod 的 IP 是随机分配的,这种互通信的方式不太适合使用。 尽管一个 Pod 内可以包含多个 Pod,但我们在部署应用容器时的最佳实践是一个 Pod 里面只包含一个应用容器作为主容器,其他容器为主容器服务,称之为辅助容器。例如主容器崩溃了,会有一个辅助容器去重启主容器。辅助容器可以有也可以没有,因为 Pod 里面容器的生命周期可以被 Pod 的生命周期取代,而 Pod 的生命周期可以通过 Pod 管理器来管理维护。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/pod-understood/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 了解 Pod Kubernetes 0-1 了解 Pod # Pod 介绍 # Pod,是 K8s 对象模型中的最小单元,Pod 里面包含着一组容器(单个容器或多个紧密耦合的容器),这时候 Pod 可以理解为一个机器,而 Pod 里面的容器则理解为该机器里面的进程。 Pod 的容器运行时由容器引擎提供,默认的容器引擎是 Docker;并且 K8s 管理的是 Pod,而不是容器。 一个 Pod 内部的容器共享: -存储:一个 Pod 可以指定一组共享存储卷。 网络:每个 Pod 分配一个唯一 IP(集群内 IP),共享网络命名空间,包括 IP 地址和网络端口。Pod 内的容器可以使用 localhost 互相通信,集群内 Pod 与 Pod通信可以使用 Pod 分配的 IP,但是由于 Pod 的 IP 是随机分配的,这种互通信的方式不太适合使用。 尽管一个 Pod 内可以包含多个 Pod,但我们在部署应用容器时的最佳实践是一个 Pod 里面只包含一个应用容器作为主容器,其他容器为主容器服务,称之为辅助容器。例如主容器崩溃了,会有一个辅助容器去重启主容器。辅助容器可以有也可以没有,因为 Pod 里面容器的生命周期可以被 Pod 的生命周期取代,而 Pod 的生命周期可以通过 Pod 管理器来管理维护。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Pod Understood | 🍁 秋河落叶</title> +存储:一个 Pod 可以指定一组共享存储卷。 网络:每个 Pod 分配一个唯一 IP(集群内 IP),共享网络命名空间,包括 IP 地址和网络端口。Pod 内的容器可以使用 localhost 互相通信,集群内 Pod 与 Pod通信可以使用 Pod 分配的 IP,但是由于 Pod 的 IP 是随机分配的,这种互通信的方式不太适合使用。 尽管一个 Pod 内可以包含多个 Pod,但我们在部署应用容器时的最佳实践是一个 Pod 里面只包含一个应用容器作为主容器,其他容器为主容器服务,称之为辅助容器。例如主容器崩溃了,会有一个辅助容器去重启主容器。辅助容器可以有也可以没有,因为 Pod 里面容器的生命周期可以被 Pod 的生命周期取代,而 Pod 的生命周期可以通过 Pod 管理器来管理维护。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Pod Understood | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/pod-understood/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Pod Understood</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#pod-介绍>Pod 介绍</a></li><li><a href=#pod-创建>Pod 创建</a></li><li><a href=#pod-字段>Pod 字段</a><ul><li><a href=#imagepullpolicy>imagePullPolicy</a></li><li><a href=#restartpolicy>restartPolicy</a></li><li><a href=#nodeselector>nodeSelector</a></li><li><a href=#livenessprobe>livenessProbe</a></li><li><a href=#readinessprobe>readinessProbe</a></li><li><a href=#command>command</a></li><li><a href=#args>args</a></li><li><a href=#env>env</a></li><li><a href=#resource>resource</a></li></ul></li><li><a href=#pod-日志>Pod 日志</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 0-1 了解 Pod</p><h1 id=kubernetes-0-1-了解-pod>Kubernetes 0-1 了解 Pod diff --git a/kubernetes/prgramming-kubernetes/index.html b/kubernetes/prgramming-kubernetes/index.html index d39ee6ba..73de0ce6 100644 --- a/kubernetes/prgramming-kubernetes/index.html +++ b/kubernetes/prgramming-kubernetes/index.html @@ -5,16 +5,16 @@ kubernetes/code-generator: Generators for kube-like API types (github.com) code-generator 使用 B站 code-generator 介绍 -mkdir hack vim hack/boilerplate.go.txt /* Copyright 2022 programming-kubernetes. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/prgramming-kubernetes/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Kubernetes 编程 +mkdir hack vim hack/boilerplate.go.txt /* Copyright 2022 programming-kubernetes. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/prgramming-kubernetes/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Kubernetes 编程 Kubernetes 编程 # 开始 Kuberntes 编程之旅~ mkdir programming-kubernetes && cd programming-kubernetes git mod init programming-kubernetes 常用包: kubeconfig 对应的结构 clientcmdapi "k8s.io/client-go/tools/clientcmd/api" clientcmdapi.Config 编写自定义 API # 随机生成字符 "k8s.io/apimachinery/pkg/util/rand" rand.String(5) 参考: kubernetes/code-generator: Generators for kube-like API types (github.com) code-generator 使用 B站 code-generator 介绍 -mkdir hack vim hack/boilerplate.go.txt /* Copyright 2022 programming-kubernetes. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Prgramming Kubernetes | 🍁 秋河落叶</title> +mkdir hack vim hack/boilerplate.go.txt /* Copyright 2022 programming-kubernetes. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Prgramming Kubernetes | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/prgramming-kubernetes/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Prgramming Kubernetes</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#编写自定义-api>编写自定义 API</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 编程</p><h1 id=kubernetes-编程>Kubernetes 编程 diff --git a/kubernetes/prometheus-collect-kong-metrics/index.html b/kubernetes/prometheus-collect-kong-metrics/index.html index 0607fd05..dd9f02f2 100644 --- a/kubernetes/prometheus-collect-kong-metrics/index.html +++ b/kubernetes/prometheus-collect-kong-metrics/index.html @@ -6,7 +6,7 @@ - job_name: 'kong' scrape_interval: 5s static_configs: - targets: ['localhost:8000'] 配置完之后重启Prometheus,访问“ http://localhost:9090/graph” 可以看到一已经生成了很多kong的指标项,如http访问,nginx当前访问量等指标 « Kubernetes 编程 -» Prometheus"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/prometheus-collect-kong-metrics/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Prometheus-监控Kong完整操作 +» Prometheus"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/prometheus-collect-kong-metrics/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Prometheus-监控Kong完整操作 Prometheus-监控Kong完整操作 # 本篇记录使用Prometheus收集Kong暴露的/metrics接口,收集指标数据,从而实现对Kong的监控。 先决条件 # Prometheus部署完成; Kong(Kong 服务,端口8000)部署完成; Kong 的Admin Api(端口8001)部署完成 Konga(Kong的WebUI,端口1337)部署完成。 Kong添加Prometheus插件 # 登录进入Konga; 点击右边菜单栏”PLUGINS“,进入Plugins管理,点击“Analytics & Monitoring”,选择添加Promethus插件 Kong添加metrics接口 # 我们知道Prometheus主要通过读取 http://host/metrics接口, 来收集相关服务的性能数据,但是Kong的metrics接口服务默认是没有开启的,所以需要先为Kong添加/metrics。 登录进入Konga; 点击右边菜单栏”SERVICES“,进入Services管理,点击“ADD NEW SERVICE” 添加页面输入“Name”和“Url”参数即可,例如“Name”=“prometheusService”,“Url”=“ http://localhost:8001/metrics” 添加完Prometheus Service之后,Service列表选中并点击进入prometheusService,选择”Routes“菜单,点击“ADD ROUTE” 添加页面输入“Paths”参数即可,例如“Paths”=[“/metrics”](Path必须以“/”为首) 这时候访问“ http://localhost:8000/metrics”,看到页面如下显示,说明已经成功的添加了metrics接口 Prometheus添加Kong指标收集 # 修改Prometheus配置文件,prometheus.yml @@ -14,9 +14,9 @@ - job_name: 'kong' scrape_interval: 5s static_configs: - targets: ['localhost:8000'] 配置完之后重启Prometheus,访问“ http://localhost:9090/graph” 可以看到一已经生成了很多kong的指标项,如http访问,nginx当前访问量等指标 « Kubernetes 编程 -» Prometheus"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Prometheus Collect Kong Metrics | 🍁 秋河落叶</title> +» Prometheus"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Prometheus Collect Kong Metrics | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/prometheus-collect-kong-metrics/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Prometheus Collect Kong Metrics</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#先决条件>先决条件</a></li><li><a href=#kong添加prometheus插件>Kong添加Prometheus插件</a></li><li><a href=#kong添加metrics接口>Kong添加metrics接口</a></li><li><a href=#prometheus添加kong指标收集>Prometheus添加Kong指标收集</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Prometheus-监控Kong完整操作</p><h1 id=prometheus-监控kong完整操作>Prometheus-监控Kong完整操作 diff --git a/kubernetes/prometheus/index.html b/kubernetes/prometheus/index.html index 15e62abc..fc007f57 100644 --- a/kubernetes/prometheus/index.html +++ b/kubernetes/prometheus/index.html @@ -7,7 +7,7 @@ Prometheus优势 # 支持机器资源和动态配置的应用监控; 多维数据收集和查询; 服务独立,少依赖。 Prometheus组件 # Prometheus Server:采集监控数据,存储时序指标,提供数据查询; Prometheus Client SDK:对接开发工具包,提供自定义的指标数据等; Push Gateway:推送指标数据的网关组件; Third-part Exporter:外部指标采集系统,暴露接口供Prometheus采集; AlertManager:指标数据的分析告警管理器; Architecture overview # 上图来源于官网: 处理流程: 配置资源目标或应用抓取; 抓取资源或应用指标数据; 制定报警规则,推送报警; 灵活查询语言,结合Grafana展示 Installation & Start Up # 1. 以服务进程运行Prometheus # 在ubuntu系统上安装Prometheus,一般有两种方式 第一种,安装命令如下: -wget https://github.com/prometheus/prometheus/releases/download/v2.13.1/prometheus-2.13.1.linux-amd64.tar.gz tar xvfz prometheus-2.13.1.linux-amd64.tar.gz # 启动Prometheus cd prometheus-2."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/prometheus/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Prometheus +wget https://github.com/prometheus/prometheus/releases/download/v2.13.1/prometheus-2.13.1.linux-amd64.tar.gz tar xvfz prometheus-2.13.1.linux-amd64.tar.gz # 启动Prometheus cd prometheus-2."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/prometheus/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Prometheus Prometheus # Intro # 是一个面向云原生应用程序的开源的监控&报警工具。 开源:继Kubernetes之后的第二个CNCF开源项目,Go语言开发 监控:通过HTTP服务定时从配置的目标收集指标数据,识别数据展示规则,展示监控系统和服务指标数据 报警:监控到的指标数据达到某一设定好的条件时,触发报警机制 时间序列数据库: 时间序列是由唯一的指标名称(Metrics)和一组标签(key=value)的形式组成 PromeQL:基于Prometheus时间序列数据库的一个灵活的查询语言 Prometheus的监控对象 # 资源监控: 服务器的资源使用情况,在Kubernetes集群中,则可以做到对Kubernetes Node、 Deployment 、Pod的资源利用以及apiserver,controller-manager,etcd等组件的监控。 @@ -16,9 +16,9 @@ Prometheus优势 # 支持机器资源和动态配置的应用监控; 多维数据收集和查询; 服务独立,少依赖。 Prometheus组件 # Prometheus Server:采集监控数据,存储时序指标,提供数据查询; Prometheus Client SDK:对接开发工具包,提供自定义的指标数据等; Push Gateway:推送指标数据的网关组件; Third-part Exporter:外部指标采集系统,暴露接口供Prometheus采集; AlertManager:指标数据的分析告警管理器; Architecture overview # 上图来源于官网: 处理流程: 配置资源目标或应用抓取; 抓取资源或应用指标数据; 制定报警规则,推送报警; 灵活查询语言,结合Grafana展示 Installation & Start Up # 1. 以服务进程运行Prometheus # 在ubuntu系统上安装Prometheus,一般有两种方式 第一种,安装命令如下: -wget https://github.com/prometheus/prometheus/releases/download/v2.13.1/prometheus-2.13.1.linux-amd64.tar.gz tar xvfz prometheus-2.13.1.linux-amd64.tar.gz # 启动Prometheus cd prometheus-2."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Prometheus | 🍁 秋河落叶</title> +wget https://github.com/prometheus/prometheus/releases/download/v2.13.1/prometheus-2.13.1.linux-amd64.tar.gz tar xvfz prometheus-2.13.1.linux-amd64.tar.gz # 启动Prometheus cd prometheus-2."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Prometheus | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/prometheus/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Prometheus</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#intro>Intro</a><ul><li><a href=#prometheus的监控对象>Prometheus的监控对象</a></li><li><a href=#prometheus优势>Prometheus优势</a></li><li><a href=#prometheus组件>Prometheus组件</a></li></ul></li><li><a href=#architecture-overview>Architecture overview</a></li><li><a href=#installation--start-up>Installation & Start Up</a><ul><li><a href=#1-以服务进程运行prometheus>1. 以服务进程运行Prometheus</a></li><li><a href=#2docker启动prometheus>2.Docker启动Prometheus</a></li><li><a href=#3-kubernetes运行prometheus>3. Kubernetes运行Prometheus</a></li><li><a href=#4官方kubernets运行prometheus>4.官方kubernets运行Prometheus</a></li><li><a href=#5kubernetes部署prometheusgrafana>5.Kubernetes部署Prometheus+Grafana</a></li></ul></li><li><a href=#configuring-prometheus>Configuring Prometheus</a></li><li><a href=#concepts>Concepts</a><ul><li><a href=#metrics>Metrics</a></li></ul></li><li><a href=#存储>存储</a><ul><li><a href=#本地存储>本地存储</a></li><li><a href=#远程存储>远程存储</a></li></ul></li><li><a href=#联邦集群>联邦集群</a><ul><li><a href=#使用场景>使用场景</a></li><li><a href=#分层联邦>分层联邦</a></li><li><a href=#跨服务联邦>跨服务联邦</a></li><li><a href=#配置联邦>配置联邦</a></li></ul></li><li><a href=#monitor-app>Monitor App</a><ul><li><a href=#mssql>MSSQL</a></li></ul></li><li><a href=#solved>solved</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Prometheus</p><h1 id=prometheus>Prometheus diff --git a/kubernetes/pvc-expansion/index.html b/kubernetes/pvc-expansion/index.html index 70340ac7..e16f003c 100644 --- a/kubernetes/pvc-expansion/index.html +++ b/kubernetes/pvc-expansion/index.html @@ -6,7 +6,7 @@ kubectl edit storageclass <storageclass-name> 添加属性: allowVolumeExpansion: true # 允许卷扩充 之后再次执行 PVC 扩容的操作即可。 « Prometheus -» 了解 Secret"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/pvc-expansion/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / PVC 扩容 +» 了解 Secret"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/pvc-expansion/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / PVC 扩容 PVC 扩容 # K8s 部署的 Kafka 程序突然挂了,查看相关日志发现原来是挂日志的磁盘空间不足,那么现在需要对磁盘进行扩容。 使用以下命令执行 PVC 扩容的操作: kubectl edit pvc <pvc-name> -n <namespace> 执行过程中发现,无法对该 PVC 进行动态扩容,需要分配 PVC 存储的 StorageClass 支持动态扩容。 @@ -14,9 +14,9 @@ kubectl edit storageclass <storageclass-name> 添加属性: allowVolumeExpansion: true # 允许卷扩充 之后再次执行 PVC 扩容的操作即可。 « Prometheus -» 了解 Secret"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Pvc Expansion | 🍁 秋河落叶</title> +» 了解 Secret"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Pvc Expansion | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/pvc-expansion/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Pvc Expansion</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / PVC 扩容</p><h1 id=pvc-扩容>PVC 扩容 diff --git a/kubernetes/secret-understood/index.html b/kubernetes/secret-understood/index.html index b6621f56..74277a36 100644 --- a/kubernetes/secret-understood/index.html +++ b/kubernetes/secret-understood/index.html @@ -3,14 +3,14 @@ 介绍 Secret # Secret 中存储着键值对数据,可以 作为环境变量传递给容器 作为文件挂载到容器的 Volume Secret 会存储在 Pod 所调度的节点的内存中,而不是写入磁盘。 Pod 默认生成的 Secret # 每个 Pod 都会被自动挂载一个 Secret 卷,只需要使用 kubectl desribe pod 命令就能看到一个名称类似 default-token-n4q6m 的 Secret,Secret 也是一种 K8s 资源,所以,可以使用 kubectl get secret 或 kubectl describe secret 获取查看。 -从上面图例可以看出,Pod 默认生成的 Secret 会包含三个配置项:ca.crt、namespace、token。其实这三个配置项是 Pod 内部安全访问Kubernetes API 服务的所有信息,而在 kubectl describe pod 的时候,你可以看到 Secret 所挂载的具体目录在 /var/run/secrets/kubernetes."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/secret-understood/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 了解 Secret +从上面图例可以看出,Pod 默认生成的 Secret 会包含三个配置项:ca.crt、namespace、token。其实这三个配置项是 Pod 内部安全访问Kubernetes API 服务的所有信息,而在 kubectl describe pod 的时候,你可以看到 Secret 所挂载的具体目录在 /var/run/secrets/kubernetes."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/secret-understood/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 了解 Secret 了解 Secret # 通常我们的应用程序的配置都会包含一些敏感信息,例如数据库连接字符串,证书,私钥等,为了保证其安全性,K8s 提供了 Secret 资源对象来保存敏感数据,它和 CongfigMap 类似,也是键值对的映射,并且使用方式也几乎一样。 介绍 Secret # Secret 中存储着键值对数据,可以 作为环境变量传递给容器 作为文件挂载到容器的 Volume Secret 会存储在 Pod 所调度的节点的内存中,而不是写入磁盘。 Pod 默认生成的 Secret # 每个 Pod 都会被自动挂载一个 Secret 卷,只需要使用 kubectl desribe pod 命令就能看到一个名称类似 default-token-n4q6m 的 Secret,Secret 也是一种 K8s 资源,所以,可以使用 kubectl get secret 或 kubectl describe secret 获取查看。 -从上面图例可以看出,Pod 默认生成的 Secret 会包含三个配置项:ca.crt、namespace、token。其实这三个配置项是 Pod 内部安全访问Kubernetes API 服务的所有信息,而在 kubectl describe pod 的时候,你可以看到 Secret 所挂载的具体目录在 /var/run/secrets/kubernetes."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Secret Understood | 🍁 秋河落叶</title> +从上面图例可以看出,Pod 默认生成的 Secret 会包含三个配置项:ca.crt、namespace、token。其实这三个配置项是 Pod 内部安全访问Kubernetes API 服务的所有信息,而在 kubectl describe pod 的时候,你可以看到 Secret 所挂载的具体目录在 /var/run/secrets/kubernetes."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Secret Understood | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/secret-understood/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Secret Understood</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#介绍-secret>介绍 Secret</a><ul><li><a href=#pod-默认生成的-secret>Pod 默认生成的 Secret</a></li></ul></li><li><a href=#创建-secret>创建 Secret</a><ul><li><a href=#单行命令创建-secret>单行命令创建 Secret</a></li><li><a href=#基于资源清单文件创建-secret>基于资源清单文件创建 Secret</a></li></ul></li><li><a href=#使用-secret>使用 Secret</a><ul><li><a href=#使用-secret-作为容器的环境变量>使用 Secret 作为容器的环境变量</a></li><li><a href=#使用-secret-为容器的-volume-提供文件>使用 Secret 为容器的 Volume 提供文件</a></li><li><a href=#使用-secret-拉取私有镜像>使用 Secret 拉取私有镜像</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 了解 Secret</p><h1 id=了解-secret>了解 Secret diff --git a/kubernetes/service-understood/index.html b/kubernetes/service-understood/index.html index 05e4719e..d7f08313 100644 --- a/kubernetes/service-understood/index.html +++ b/kubernetes/service-understood/index.html @@ -3,14 +3,14 @@ 简单理解起来就是,由 Service 提供统一的入口地址,然后将请求负载分发到后端 Pod 的容器应用。 为什么有 Service # 集群中部署了 Pod,应用是成功的部署起来了,但是只是至此的话,Pod 提供服务访问存在以下一些问题。 Pod 是短暂的,可能会被销毁或重新调度,这使得 Pod 的 IP 是随时变动和更新的; 部署多个 Pod 的伸缩问题,流量分配问题; 集群外部客户端无法直接访问 Pod。 这时候就需要 Service,Pod 作为 Service 的后端提供服务。所以我们可以想象,Service 需要完成的事情: -服务发现,通过 Pod 的 lable 查找目标 Pod,将查找的 Pod 的注册到自己的后端列表,Pod 的 IP 信息发生更改,后端列表也同步更新; 负载均衡,请求到达 Service 之后,将请求均衡转发的后端列表; 服务暴露:对外提供统一的请求地址。 创建 Service # 在创建 Sercvice 之前我们首先创建 service 代理的 Pod,nginx-pod."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/service-understood/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 了解 Service +服务发现,通过 Pod 的 lable 查找目标 Pod,将查找的 Pod 的注册到自己的后端列表,Pod 的 IP 信息发生更改,后端列表也同步更新; 负载均衡,请求到达 Service 之后,将请求均衡转发的后端列表; 服务暴露:对外提供统一的请求地址。 创建 Service # 在创建 Sercvice 之前我们首先创建 service 代理的 Pod,nginx-pod."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/service-understood/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 了解 Service 了解 Service # Service 介绍 # 按照官方文档的说法,在 K8s 中,Service 是将运行在集群中的一组 Pod 的应用公开为网络服务的抽象方法,是 K8s 的核心概念之一,Service 的主要作用是使客户端发现 Pod 并与之通信。 简单理解起来就是,由 Service 提供统一的入口地址,然后将请求负载分发到后端 Pod 的容器应用。 为什么有 Service # 集群中部署了 Pod,应用是成功的部署起来了,但是只是至此的话,Pod 提供服务访问存在以下一些问题。 Pod 是短暂的,可能会被销毁或重新调度,这使得 Pod 的 IP 是随时变动和更新的; 部署多个 Pod 的伸缩问题,流量分配问题; 集群外部客户端无法直接访问 Pod。 这时候就需要 Service,Pod 作为 Service 的后端提供服务。所以我们可以想象,Service 需要完成的事情: -服务发现,通过 Pod 的 lable 查找目标 Pod,将查找的 Pod 的注册到自己的后端列表,Pod 的 IP 信息发生更改,后端列表也同步更新; 负载均衡,请求到达 Service 之后,将请求均衡转发的后端列表; 服务暴露:对外提供统一的请求地址。 创建 Service # 在创建 Sercvice 之前我们首先创建 service 代理的 Pod,nginx-pod."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Service Understood | 🍁 秋河落叶</title> +服务发现,通过 Pod 的 lable 查找目标 Pod,将查找的 Pod 的注册到自己的后端列表,Pod 的 IP 信息发生更改,后端列表也同步更新; 负载均衡,请求到达 Service 之后,将请求均衡转发的后端列表; 服务暴露:对外提供统一的请求地址。 创建 Service # 在创建 Sercvice 之前我们首先创建 service 代理的 Pod,nginx-pod."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Service Understood | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/service-understood/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Service Understood</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#service-介绍>Service 介绍</a><ul><li><a href=#为什么有-service>为什么有 Service</a></li></ul></li><li><a href=#创建-service>创建 Service</a></li><li><a href=#service-类型>Service 类型</a><ul><li><a href=#clusterip>CLusterIP</a></li><li><a href=#nodeport>NodePort</a></li><li><a href=#loadbalancer>LoadBalancer</a></li><li><a href=#externalname>ExternalName</a></li></ul></li><li><a href=#访问-service>访问 Service</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 了解 Service</p><h1 id=了解-service>了解 Service diff --git a/kubernetes/telepresence/index.html b/kubernetes/telepresence/index.html index 22ec6cab..acc6969b 100644 --- a/kubernetes/telepresence/index.html +++ b/kubernetes/telepresence/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Kubernetes / Telepresence Telepresence # Telepresence是一款 « 了解 Service -» Kubernetes 0-1 使用preStop优雅终止Pod"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/telepresence/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Telepresence +» Kubernetes 0-1 使用preStop优雅终止Pod"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/telepresence/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Telepresence Telepresence # Telepresence是一款 « 了解 Service -» Kubernetes 0-1 使用preStop优雅终止Pod"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Telepresence | 🍁 秋河落叶</title> +» Kubernetes 0-1 使用preStop优雅终止Pod"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Telepresence | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/telepresence/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Telepresence</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Telepresence</p><h1 id=telepresence>Telepresence diff --git a/kubernetes/terminate-pod-gracefully/index.html b/kubernetes/terminate-pod-gracefully/index.html index 598f7ec4..f880b43b 100644 --- a/kubernetes/terminate-pod-gracefully/index.html +++ b/kubernetes/terminate-pod-gracefully/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Kubernetes / Kubernetes 0-1 使用preStop优雅终止Pod Kubernetes 0-1 使用preStop优雅终止Pod # Kubernetes允许Pod终止之前,执行自定义逻辑。 字段定义 # 字段定义:pod.spec.containers.lifecycle.preStop -$ kubectl explain pod.spec.containers.lifecycle.preStop KIND: Pod VERSION: v1 RESOURCE: preStop <Object> DESCRIPTION: PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/terminate-pod-gracefully/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 使用preStop优雅终止Pod +$ kubectl explain pod.spec.containers.lifecycle.preStop KIND: Pod VERSION: v1 RESOURCE: preStop <Object> DESCRIPTION: PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/terminate-pod-gracefully/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / Kubernetes 0-1 使用preStop优雅终止Pod Kubernetes 0-1 使用preStop优雅终止Pod # Kubernetes允许Pod终止之前,执行自定义逻辑。 字段定义 # 字段定义:pod.spec.containers.lifecycle.preStop -$ kubectl explain pod.spec.containers.lifecycle.preStop KIND: Pod VERSION: v1 RESOURCE: preStop <Object> DESCRIPTION: PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Terminate Pod Gracefully | 🍁 秋河落叶</title> +$ kubectl explain pod.spec.containers.lifecycle.preStop KIND: Pod VERSION: v1 RESOURCE: preStop <Object> DESCRIPTION: PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Terminate Pod Gracefully | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/terminate-pod-gracefully/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Terminate Pod Gracefully</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#字段定义>字段定义</a></li><li><a href=#示例>示例</a></li><li><a href=#使用场景>使用场景</a></li><li><a href=#结束语>结束语</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Kubernetes 0-1 使用preStop优雅终止Pod</p><h1 id=kubernetes-0-1-使用prestop优雅终止pod>Kubernetes 0-1 使用preStop优雅终止Pod diff --git a/kubernetes/terraform/index.html b/kubernetes/terraform/index.html index b087418b..55f6ca5b 100644 --- a/kubernetes/terraform/index.html +++ b/kubernetes/terraform/index.html @@ -1,8 +1,8 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / Kubernetes / Terraform -Terraform # 创建ec2同时安装应用的三种方式 # Mode 1: userdata # 需要shell脚本文件install_nginx.sh resource "aws_instance" "demo" { # ... # Mode 1: userdata user_data = "${file("../templates/install_nginx.sh")}" # ... } Mode 2: remote-exec # 需要连接主机,connection; 密钥文件xxx.pem resource "aws_instance" "demo" { # ... # Mode 2: remote-exec connection { host = "${self.private_ip}" private_key = "${file("xxx.pem")}" user = "${var.ansible_user}" } provisioner "remote-exec" { inline = [ "sudo apt-get update", "sudo apt-get install -y nginx", "sudo service nginx start" ] } # .'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/terraform/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Terraform -Terraform # 创建ec2同时安装应用的三种方式 # Mode 1: userdata # 需要shell脚本文件install_nginx.sh resource "aws_instance" "demo" { # ... # Mode 1: userdata user_data = "${file("../templates/install_nginx.sh")}" # ... } Mode 2: remote-exec # 需要连接主机,connection; 密钥文件xxx.pem resource "aws_instance" "demo" { # ... # Mode 2: remote-exec connection { host = "${self.private_ip}" private_key = "${file("xxx.pem")}" user = "${var.ansible_user}" } provisioner "remote-exec" { inline = [ "sudo apt-get update", "sudo apt-get install -y nginx", "sudo service nginx start" ] } # .'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Terraform | 🍁 秋河落叶</title> +Terraform # 创建ec2同时安装应用的三种方式 # Mode 1: userdata # 需要shell脚本文件install_nginx.sh resource "aws_instance" "demo" { # ... # Mode 1: userdata user_data = "${file("../templates/install_nginx.sh")}" # ... } Mode 2: remote-exec # 需要连接主机,connection; 密钥文件xxx.pem resource "aws_instance" "demo" { # ... # Mode 2: remote-exec connection { host = "${self.private_ip}" private_key = "${file("xxx.pem")}" user = "${var.ansible_user}" } provisioner "remote-exec" { inline = [ "sudo apt-get update", "sudo apt-get install -y nginx", "sudo service nginx start" ] } # .'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/terraform/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Terraform +Terraform # 创建ec2同时安装应用的三种方式 # Mode 1: userdata # 需要shell脚本文件install_nginx.sh resource "aws_instance" "demo" { # ... # Mode 1: userdata user_data = "${file("../templates/install_nginx.sh")}" # ... } Mode 2: remote-exec # 需要连接主机,connection; 密钥文件xxx.pem resource "aws_instance" "demo" { # ... # Mode 2: remote-exec connection { host = "${self.private_ip}" private_key = "${file("xxx.pem")}" user = "${var.ansible_user}" } provisioner "remote-exec" { inline = [ "sudo apt-get update", "sudo apt-get install -y nginx", "sudo service nginx start" ] } # .'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Terraform | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/terraform/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Terraform</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#创建ec2同时安装应用的三种方式>创建ec2同时安装应用的三种方式</a><ul><li><a href=#mode-1-userdata>Mode 1: userdata</a></li><li><a href=#mode-2-remote-exec>Mode 2: remote-exec</a></li><li><a href=#mode-3-local-exec-with-ansible>Mode 3: local-exec with Ansible</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Terraform</p><h1 id=terraform>Terraform diff --git a/kubernetes/velero-minio-backup-restore-volume/index.html b/kubernetes/velero-minio-backup-restore-volume/index.html index 189f346c..2ca52d98 100644 --- a/kubernetes/velero-minio-backup-restore-volume/index.html +++ b/kubernetes/velero-minio-backup-restore-volume/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / Kubernetes / Velero + Minio 备份与恢复 Velero + Minio 备份与恢复 # 安装 Minio # docker run -d --name minio \\ -p 9000:9000 \\ -p 9001:9001 \\ -e MINIO_ROOT_USER=minio \\ -e MINIO_ROOT_PASSWORD=minio \\ -v /minio-data:/data \\ quay.io/minio/minio:latest server /data --console-address ":9001" 创建 Bucket # 设置 Region # 点击保存后,会出现一个横幅,点击横幅上的 Restart 即可。 创建 AccessKey # 保存 AccessKey 和 SecretKey 到文件 credentials-velero: -[default] aws_access_key_id = <access_key> aws_secret_access_key = <secret_key> 安装 Velero CLI # # linux wget <https://github.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/velero-minio-backup-restore-volume/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Velero + Minio 备份与恢复 +[default] aws_access_key_id = <access_key> aws_secret_access_key = <secret_key> 安装 Velero CLI # # linux wget <https://github.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/velero-minio-backup-restore-volume/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Kubernetes / Velero + Minio 备份与恢复 Velero + Minio 备份与恢复 # 安装 Minio # docker run -d --name minio \\ -p 9000:9000 \\ -p 9001:9001 \\ -e MINIO_ROOT_USER=minio \\ -e MINIO_ROOT_PASSWORD=minio \\ -v /minio-data:/data \\ quay.io/minio/minio:latest server /data --console-address ":9001" 创建 Bucket # 设置 Region # 点击保存后,会出现一个横幅,点击横幅上的 Restart 即可。 创建 AccessKey # 保存 AccessKey 和 SecretKey 到文件 credentials-velero: -[default] aws_access_key_id = <access_key> aws_secret_access_key = <secret_key> 安装 Velero CLI # # linux wget <https://github.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Velero Minio Backup Restore Volume | 🍁 秋河落叶</title> +[default] aws_access_key_id = <access_key> aws_secret_access_key = <secret_key> 安装 Velero CLI # # linux wget <https://github.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Velero Minio Backup Restore Volume | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/velero-minio-backup-restore-volume/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Velero Minio Backup Restore Volume</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装-minio>安装 Minio</a></li><li><a href=#创建-bucket>创建 Bucket</a></li><li><a href=#设置-region>设置 Region</a></li><li><a href=#创建-accesskey>创建 AccessKey</a></li><li><a href=#安装-velero-cli>安装 Velero CLI</a></li><li><a href=#在集群中安装-velero>在集群中安装 Velero</a></li><li><a href=#备份>备份</a></li><li><a href=#还原>还原</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / Velero + Minio 备份与恢复</p><h1 id=velero--minio-备份与恢复>Velero + Minio 备份与恢复 diff --git a/kubernetes/volume-understood/index.html b/kubernetes/volume-understood/index.html index 42e6efcd..ca4041ad 100644 --- a/kubernetes/volume-understood/index.html +++ b/kubernetes/volume-understood/index.html @@ -5,16 +5,16 @@ 在 K8s 中,Volume 供 Pod 内的容器使用,一个容器可以使用多个 Volume,同一 Pod 内的多个容器可以同时使用一个 Volume,实现文件共享,或数据持久存储。 容器与 Volume 的简单关系: Volume 定义 # 定义在 pod.spec.container 属性下: -kind: Pod ... spec: container: ... volumeMounts: - mountPath: <path> name: <volume-name> subPath: <volume-path> volumes: - name: <volume-name> <volume-type>: ... mountPath: 容器内的目录,如果不存在则创建该目录 subPath:默认会将 mountPath 直接映射到 volume 的根目录,使用 subpath 映射到 volume 特定的目录。 Volume 类型 # Volume 有多种类型,有的可以直接在集群中使用,有的则需要第三方服务或云平台的支持。简单罗列几种常见类型,更多了类型参考: https://kubernetes."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/volume-understood/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 了解 Volume +kind: Pod ... spec: container: ... volumeMounts: - mountPath: <path> name: <volume-name> subPath: <volume-path> volumes: - name: <volume-name> <volume-type>: ... mountPath: 容器内的目录,如果不存在则创建该目录 subPath:默认会将 mountPath 直接映射到 volume 的根目录,使用 subpath 映射到 volume 特定的目录。 Volume 类型 # Volume 有多种类型,有的可以直接在集群中使用,有的则需要第三方服务或云平台的支持。简单罗列几种常见类型,更多了类型参考: https://kubernetes."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/volume-understood/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / 了解 Volume 了解 Volume # 我们知道容器与容器之间是隔离的,有独立的文件系统。并且存储的文件性质时临时的,当容器被销毁时,容器内的文件一并被清除。 在 Pod 内可能运行着多个容器,这可能需要容器共享文件。在 K8s 中,抽象除了 Volume 的概念来满足这种需求。 Volume 介绍 # 在 Docker 中,也有 Volume 的概念,它是将容器内某文件目录挂载到宿主机的目录。 在 K8s 中,Volume 供 Pod 内的容器使用,一个容器可以使用多个 Volume,同一 Pod 内的多个容器可以同时使用一个 Volume,实现文件共享,或数据持久存储。 容器与 Volume 的简单关系: Volume 定义 # 定义在 pod.spec.container 属性下: -kind: Pod ... spec: container: ... volumeMounts: - mountPath: <path> name: <volume-name> subPath: <volume-path> volumes: - name: <volume-name> <volume-type>: ... mountPath: 容器内的目录,如果不存在则创建该目录 subPath:默认会将 mountPath 直接映射到 volume 的根目录,使用 subpath 映射到 volume 特定的目录。 Volume 类型 # Volume 有多种类型,有的可以直接在集群中使用,有的则需要第三方服务或云平台的支持。简单罗列几种常见类型,更多了类型参考: https://kubernetes."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Volume Understood | 🍁 秋河落叶</title> +kind: Pod ... spec: container: ... volumeMounts: - mountPath: <path> name: <volume-name> subPath: <volume-path> volumes: - name: <volume-name> <volume-type>: ... mountPath: 容器内的目录,如果不存在则创建该目录 subPath:默认会将 mountPath 直接映射到 volume 的根目录,使用 subpath 映射到 volume 特定的目录。 Volume 类型 # Volume 有多种类型,有的可以直接在集群中使用,有的则需要第三方服务或云平台的支持。简单罗列几种常见类型,更多了类型参考: https://kubernetes."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Volume Understood | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/volume-understood/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Volume Understood</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#volume-介绍>Volume 介绍</a></li><li><a href=#volume-定义>Volume 定义</a></li><li><a href=#volume-类型>Volume 类型</a><ul><li><a href=#emptydir>emptyDir</a></li><li><a href=#hostpath>hostPath</a></li><li><a href=#persistentvolumeclaim>persistentVolumeClaim</a></li><li><a href=#awselasticblockstore>awsElasticBlockStore</a></li><li><a href=#configmap>configMap</a></li><li><a href=#secret>Secret</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / 了解 Volume</p><h1 id=了解-volume>了解 Volume diff --git a/kubernetes/vpa/index.html b/kubernetes/vpa/index.html index 7ab28395..4bf4574c 100644 --- a/kubernetes/vpa/index.html +++ b/kubernetes/vpa/index.html @@ -4,15 +4,15 @@ Recreate:VPA在pod创建时分配资源请求,并在现有pod上更新它们,当请求的资源与新建议有显著差异时(如果定义了pod中断预算,则考虑到它们),将它们赶出现有pod。这种模式应该很少使用,只有当您需要确保在资源请求更改时重新启动pods时才会使用。否则更喜欢“自动”模式,这可能会利用重新启动免费更新,一旦他们可用。注意:VPA的这个特性是实验性的,可能会导致您的应用程序停机。 Initial:VPA只在pod创建时分配资源请求,以后不会更改它们。 Off:VPA不会自动更改pods的资源需求。计算并可以在VPA对象中检查建议。 -示例 # « 了解 Volume"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/vpa/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / VPA +示例 # « 了解 Volume"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/kubernetes/vpa/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Kubernetes / VPA VPA # 安装 # git clone https://github.com/kubernetes/autoscaler.git cd ./autoscaler/vertical-pod-autoscaler ./hack/vpa-up.sh 卸载: ./hack/vpa-down.sh VPA运行模式 # Auto(默认模式):VPA在pod创建时分配资源请求,并使用首选的更新机制在现有的pod上更新它们。目前,这相当于“重建”(见下文)。一旦pod请求的免费重启(“原位”)更新可用,它就可以被“Auto”模式用作首选的更新机制。注意:VPA的这个特性是实验性的,可能会导致您的应用程序停机。 Recreate:VPA在pod创建时分配资源请求,并在现有pod上更新它们,当请求的资源与新建议有显著差异时(如果定义了pod中断预算,则考虑到它们),将它们赶出现有pod。这种模式应该很少使用,只有当您需要确保在资源请求更改时重新启动pods时才会使用。否则更喜欢“自动”模式,这可能会利用重新启动免费更新,一旦他们可用。注意:VPA的这个特性是实验性的,可能会导致您的应用程序停机。 Initial:VPA只在pod创建时分配资源请求,以后不会更改它们。 Off:VPA不会自动更改pods的资源需求。计算并可以在VPA对象中检查建议。 -示例 # « 了解 Volume"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Vpa | 🍁 秋河落叶</title> +示例 # « 了解 Volume"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="kubernetes"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Vpa | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/kubernetes/vpa/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Vpa</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装>安装</a><ul><li><a href=#vpa运行模式>VPA运行模式</a></li></ul></li><li><a href=#示例>示例</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/kubernetes/>Kubernetes</a> / VPA</p><h1 id=vpa>VPA diff --git a/linux/certbot-auto-gen-cert/index.html b/linux/certbot-auto-gen-cert/index.html index 666ed2a4..a159ce64 100644 --- a/linux/certbot-auto-gen-cert/index.html +++ b/linux/certbot-auto-gen-cert/index.html @@ -2,13 +2,13 @@ certbot-auto 生成证书 # 安装 # wget https://dl.eff.org/certbot-auto chmod a+x ./certbot-auto cp ./certbot-auto /usr/local/bin 生成证书 # 条件: 提前已经将域名解析到本服务器; 本服务器端口 80、443 处于未被占用的状态,如果 web 服务占用了 80 端口,需要临时关闭。 certbot-auto certonly --standalone --email poneding@gmail.com -d test.poneding.com 以上命令执行完成后,将会在 /etc/letsencrypt/live 目录下生成域名证书文件。默认证书有效期为 3 个月。 nginx 配置证书 # 参考示例: -server { listen 80; server_name abc.com; rewrite ^(.*) https://test.poneding.com permanent; } server{ listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate /etc/letsencrypt/live/test.poneding.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/test."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/certbot-auto-gen-cert/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / certbot-auto 生成证书 +server { listen 80; server_name abc.com; rewrite ^(.*) https://test.poneding.com permanent; } server{ listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate /etc/letsencrypt/live/test.poneding.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/test."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/certbot-auto-gen-cert/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / certbot-auto 生成证书 certbot-auto 生成证书 # 安装 # wget https://dl.eff.org/certbot-auto chmod a+x ./certbot-auto cp ./certbot-auto /usr/local/bin 生成证书 # 条件: 提前已经将域名解析到本服务器; 本服务器端口 80、443 处于未被占用的状态,如果 web 服务占用了 80 端口,需要临时关闭。 certbot-auto certonly --standalone --email poneding@gmail.com -d test.poneding.com 以上命令执行完成后,将会在 /etc/letsencrypt/live 目录下生成域名证书文件。默认证书有效期为 3 个月。 nginx 配置证书 # 参考示例: -server { listen 80; server_name abc.com; rewrite ^(.*) https://test.poneding.com permanent; } server{ listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate /etc/letsencrypt/live/test.poneding.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/test."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Certbot Auto Gen Cert | 🍁 秋河落叶</title> +server { listen 80; server_name abc.com; rewrite ^(.*) https://test.poneding.com permanent; } server{ listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate /etc/letsencrypt/live/test.poneding.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/test."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Certbot Auto Gen Cert | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/linux/certbot-auto-gen-cert/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Certbot Auto Gen Cert</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装>安装</a></li><li><a href=#生成证书>生成证书</a></li><li><a href=#nginx-配置证书>nginx 配置证书</a></li><li><a href=#证书续期>证书续期</a></li><li><a href=#参考>参考</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/linux/>Linux</a> / certbot-auto 生成证书</p><h1 id=certbot-auto-生成证书>certbot-auto 生成证书 diff --git a/linux/history-with-date/index.html b/linux/history-with-date/index.html index 6fd34021..ed9d71c9 100644 --- a/linux/history-with-date/index.html +++ b/linux/history-with-date/index.html @@ -3,14 +3,14 @@ history 输出大概会是下面这种样子,只有简单的 command 列表。 1 ls 2 top 4 docker ps 5 df 6 ls 那么,如果想知道历史执行的 command 的时间该怎么做呢。 按照如下步骤,一步一步来。 -首先设置 HISTTIMEFORMAT 变量 $ HISTTIMEFORMAT="%d/%m/%y %T " # OR $ echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile 使用 source 命令加载 HISTTIMEFORMAT 变量到当前 shell 命令窗 $ . ~/.bash_profile # OR $ source ~/.bash_profile 再次运行 history 命令,已经可以输出附带执行时间的 history 了。 1 root 2020/02/18 11:28:19 ls 2 root 2020/02/18 11:28:21 top 4 root 2020/02/18 11:28:58 docker ps 5 root 2020/02/18 11:34:09 df 6 root 2020/02/18 11:34:15 ls « certbot-auto 生成证书'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/history-with-date/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Linux / Linux-history 输出附带日期 +首先设置 HISTTIMEFORMAT 变量 $ HISTTIMEFORMAT="%d/%m/%y %T " # OR $ echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile 使用 source 命令加载 HISTTIMEFORMAT 变量到当前 shell 命令窗 $ . ~/.bash_profile # OR $ source ~/.bash_profile 再次运行 history 命令,已经可以输出附带执行时间的 history 了。 1 root 2020/02/18 11:28:19 ls 2 root 2020/02/18 11:28:21 top 4 root 2020/02/18 11:28:58 docker ps 5 root 2020/02/18 11:34:09 df 6 root 2020/02/18 11:34:15 ls « certbot-auto 生成证书'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/history-with-date/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Linux / Linux-history 输出附带日期 Linux-history 输出附带日期 # 如果我们在 linux 系统中想看历史的命令记录,我们可以通过 command 命令来获取。 history 输出大概会是下面这种样子,只有简单的 command 列表。 1 ls 2 top 4 docker ps 5 df 6 ls 那么,如果想知道历史执行的 command 的时间该怎么做呢。 按照如下步骤,一步一步来。 -首先设置 HISTTIMEFORMAT 变量 $ HISTTIMEFORMAT="%d/%m/%y %T " # OR $ echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile 使用 source 命令加载 HISTTIMEFORMAT 变量到当前 shell 命令窗 $ . ~/.bash_profile # OR $ source ~/.bash_profile 再次运行 history 命令,已经可以输出附带执行时间的 history 了。 1 root 2020/02/18 11:28:19 ls 2 root 2020/02/18 11:28:21 top 4 root 2020/02/18 11:28:58 docker ps 5 root 2020/02/18 11:34:09 df 6 root 2020/02/18 11:34:15 ls « certbot-auto 生成证书'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>History With Date | 🍁 秋河落叶</title> +首先设置 HISTTIMEFORMAT 变量 $ HISTTIMEFORMAT="%d/%m/%y %T " # OR $ echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile 使用 source 命令加载 HISTTIMEFORMAT 变量到当前 shell 命令窗 $ . ~/.bash_profile # OR $ source ~/.bash_profile 再次运行 history 命令,已经可以输出附带执行时间的 history 了。 1 root 2020/02/18 11:28:19 ls 2 root 2020/02/18 11:28:21 top 4 root 2020/02/18 11:28:58 docker ps 5 root 2020/02/18 11:34:09 df 6 root 2020/02/18 11:34:15 ls « certbot-auto 生成证书'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>History With Date | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/linux/history-with-date/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>History With Date</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/linux/>Linux</a> / Linux-history 输出附带日期</p><h1 id=linux-history-输出附带日期>Linux-history 输出附带日期 diff --git a/linux/index.html b/linux/index.html index ec7bc6f4..c37d1713 100644 --- a/linux/index.html +++ b/linux/index.html @@ -9,7 +9,7 @@ shell 基础 使用 SSH Tunnel 连接中间件 tee 保存 stderr 到文件 -vim 使用"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Linux +vim 使用"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Linux Linux # certbot-auto 生成证书 Linux-history 输出附带日期 Linux 命令 @@ -20,9 +20,9 @@ shell 基础 使用 SSH Tunnel 连接中间件 tee 保存 stderr 到文件 -vim 使用"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Linux | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/linux/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/linux/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +vim 使用"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Linux | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/linux/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/linux/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Linux</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / Linux</p><h1 id=linux>Linux <a class=anchor href=#linux>#</a></h1><p><a href=/linux/certbot-auto-gen-cert/>certbot-auto 生成证书</a></p><p><a href=/linux/history-with-date/>Linux-history 输出附带日期</a></p><p><a href=/linux/linux-commands/>Linux 命令</a></p><p><a href=/linux/linux-common-commands/>Linux常用命令</a></p><p><a href=/linux/linux-enable-crontab-log/>Linux 启用 crontab 日志</a></p><p><a href=/linux/linux-secure-login/>Linux-安全登录</a></p><p><a href=/linux/shell-command-interval-character/>shell 命令间隔符</a></p><p><a href=/linux/shell/>shell 基础</a></p><p><a href=/linux/ssh-tunnel-connect-middleware/>使用 SSH Tunnel 连接中间件</a></p><p><a href=/linux/tee-keep-stderr/>tee 保存 stderr 到文件</a></p><p><a href=/linux/vim-common-commands/>vim 使用</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/linux/index.xml b/linux/index.xml index e9d01214..446f2398 100644 --- a/linux/index.xml +++ b/linux/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/linux/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/linux/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/linux/certbot-auto-gen-cert/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/linux/certbot-auto-gen-cert/</guid><description>🏠 首页 / Linux / certbot-auto 生成证书 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/linux/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/linux/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/linux/certbot-auto-gen-cert/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/linux/certbot-auto-gen-cert/</guid><description>🏠 首页 / Linux / certbot-auto 生成证书 certbot-auto 生成证书 # 安装 # wget https://dl.eff.org/certbot-auto chmod a+x ./certbot-auto cp ./certbot-auto /usr/local/bin 生成证书 # 条件: 提前已经将域名解析到本服务器; 本服务器端口 80、443 处于未被占用的状态,如果 web 服务占用了 80 端口,需要临时关闭。 certbot-auto certonly --standalone --email poneding@gmail.com -d test.poneding.com 以上命令执行完成后,将会在 /etc/letsencrypt/live 目录下生成域名证书文件。默认证书有效期为 3 个月。 nginx 配置证书 # 参考示例: diff --git a/linux/linux-commands/index.html b/linux/linux-commands/index.html index 476b564d..592fe9ea 100644 --- a/linux/linux-commands/index.html +++ b/linux/linux-commands/index.html @@ -8,7 +8,7 @@ -v 或 –show-nonprinting 实例 # 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 cat -n textfile1 > textfile2 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。 -cat -b textfile1 textfile2 >> textfile3 清空/etc/test."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/linux-commands/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / Linux 命令 +cat -b textfile1 textfile2 >> textfile3 清空/etc/test."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/linux-commands/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / Linux 命令 Linux 命令 # Linux 命令大全 cat # cat命令用于把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案) 使用权限 # 所有使用者 @@ -18,9 +18,9 @@ -v 或 –show-nonprinting 实例 # 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 cat -n textfile1 > textfile2 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。 -cat -b textfile1 textfile2 >> textfile3 清空/etc/test."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Linux Commands | 🍁 秋河落叶</title> +cat -b textfile1 textfile2 >> textfile3 清空/etc/test."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Linux Commands | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/linux/linux-commands/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Linux Commands</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#cat>cat</a><ul><li><a href=#使用权限>使用权限</a></li><li><a href=#语法格式>语法格式</a></li><li><a href=#参数说明>参数说明</a></li><li><a href=#实例>实例</a></li></ul></li><li><a href=#chattr>chattr</a><ul><li><a href=#语法>语法</a></li><li><a href=#参数>参数</a></li><li><a href=#实例-1>实例</a></li></ul></li><li><a href=#chgrp>chgrp</a><ul><li><a href=#语法-1>语法</a></li><li><a href=#参数说明-1>参数说明</a></li><li><a href=#实例-2>实例</a></li></ul></li><li><a href=#chmod>chmod</a><ul><li><a href=#语法-2>语法</a></li><li><a href=#参数说明-2>参数说明</a></li><li><a href=#实例-3>实例</a></li></ul></li><li><a href=#file>file</a><ul><li><a href=#语法-3>语法</a></li><li><a href=#实例-4>实例</a></li></ul></li><li><a href=#find>find</a><ul><li><a href=#语法-4>语法</a></li><li><a href=#实例-5>实例</a></li></ul></li><li><a href=#echo>echo</a></li><li><a href=#curl>curl</a></li><li><a href=#date>date</a></li><li><a href=#source-命令>source 命令</a><ul><li><a href=#语法-5>语法</a></li><li><a href=#示例>示例</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/linux/>Linux</a> / Linux 命令</p><h1 id=linux-命令>Linux 命令 diff --git a/linux/linux-common-commands/index.html b/linux/linux-common-commands/index.html index 72720e69..6349d534 100644 --- a/linux/linux-common-commands/index.html +++ b/linux/linux-common-commands/index.html @@ -1,8 +1,8 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / Linux / Linux常用命令 -Linux常用命令 # 1.文件和目录相关 # cd .. 切换到上一级目录 cd ../.. 切换到上两级目录 cd [dir] 进入 dir 目录 cd 进入个人的主目录 cd ~[username] 进入个人的主目录 cd - 进入上次目录 pwd 查看目录路径 ls 查看当前目录下的目录和文件(不包含隐藏目录或文件) ls -a 查看当前目录下的所有目录和文件 ls -F 查看当前目录下的文件 (不包含目录和隐藏文件) ls -l 查看文件和目录的详细资料 ls *[0-9]* 查看包含字符的文件和目录 mkdir dir1 创建目录 mkdir dir1 dir2 mkdir -p dir1/dir1/dir1 创建一个目录树 rm -f file1 删除文件 rmdir dir1 删除空 rm -rf dir1 删除包含内容的目录 rm -rf dir1 dir2 删除多个目录 mv dir1 dir2 重命名或移动一个目录(看 dir2 是否存在) cp file1 file2 复制文件 cp dir/* ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/linux-common-commands/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / Linux常用命令 -Linux常用命令 # 1.文件和目录相关 # cd .. 切换到上一级目录 cd ../.. 切换到上两级目录 cd [dir] 进入 dir 目录 cd 进入个人的主目录 cd ~[username] 进入个人的主目录 cd - 进入上次目录 pwd 查看目录路径 ls 查看当前目录下的目录和文件(不包含隐藏目录或文件) ls -a 查看当前目录下的所有目录和文件 ls -F 查看当前目录下的文件 (不包含目录和隐藏文件) ls -l 查看文件和目录的详细资料 ls *[0-9]* 查看包含字符的文件和目录 mkdir dir1 创建目录 mkdir dir1 dir2 mkdir -p dir1/dir1/dir1 创建一个目录树 rm -f file1 删除文件 rmdir dir1 删除空 rm -rf dir1 删除包含内容的目录 rm -rf dir1 dir2 删除多个目录 mv dir1 dir2 重命名或移动一个目录(看 dir2 是否存在) cp file1 file2 复制文件 cp dir/* ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Linux Common Commands | 🍁 秋河落叶</title> +Linux常用命令 # 1.文件和目录相关 # cd .. 切换到上一级目录 cd ../.. 切换到上两级目录 cd [dir] 进入 dir 目录 cd 进入个人的主目录 cd ~[username] 进入个人的主目录 cd - 进入上次目录 pwd 查看目录路径 ls 查看当前目录下的目录和文件(不包含隐藏目录或文件) ls -a 查看当前目录下的所有目录和文件 ls -F 查看当前目录下的文件 (不包含目录和隐藏文件) ls -l 查看文件和目录的详细资料 ls *[0-9]* 查看包含字符的文件和目录 mkdir dir1 创建目录 mkdir dir1 dir2 mkdir -p dir1/dir1/dir1 创建一个目录树 rm -f file1 删除文件 rmdir dir1 删除空 rm -rf dir1 删除包含内容的目录 rm -rf dir1 dir2 删除多个目录 mv dir1 dir2 重命名或移动一个目录(看 dir2 是否存在) cp file1 file2 复制文件 cp dir/* ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/linux-common-commands/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / Linux常用命令 +Linux常用命令 # 1.文件和目录相关 # cd .. 切换到上一级目录 cd ../.. 切换到上两级目录 cd [dir] 进入 dir 目录 cd 进入个人的主目录 cd ~[username] 进入个人的主目录 cd - 进入上次目录 pwd 查看目录路径 ls 查看当前目录下的目录和文件(不包含隐藏目录或文件) ls -a 查看当前目录下的所有目录和文件 ls -F 查看当前目录下的文件 (不包含目录和隐藏文件) ls -l 查看文件和目录的详细资料 ls *[0-9]* 查看包含字符的文件和目录 mkdir dir1 创建目录 mkdir dir1 dir2 mkdir -p dir1/dir1/dir1 创建一个目录树 rm -f file1 删除文件 rmdir dir1 删除空 rm -rf dir1 删除包含内容的目录 rm -rf dir1 dir2 删除多个目录 mv dir1 dir2 重命名或移动一个目录(看 dir2 是否存在) cp file1 file2 复制文件 cp dir/* ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Linux Common Commands | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/linux/linux-common-commands/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Linux Common Commands</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#1文件和目录相关>1.文件和目录相关</a></li><li><a href=#2系统>2.系统</a></li><li><a href=#3技巧>3.技巧</a></li><li><a href=#apt>apt</a></li><li><a href=#centos>CentOS</a></li><li><a href=#kitematic>Kitematic</a></li><li><a href=#sed替换文本>sed替换文本</a></li><li><a href=#修改命令行文件路径显示>修改命令行文件路径显示</a></li><li><a href=#网络命名空间>网络命名空间</a></li><li><a href=#清理工作>清理工作</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/linux/>Linux</a> / Linux常用命令</p><h1 id=linux常用命令>Linux常用命令 diff --git a/linux/linux-enable-crontab-log/index.html b/linux/linux-enable-crontab-log/index.html index 6342d4c6..11982d05 100644 --- a/linux/linux-enable-crontab-log/index.html +++ b/linux/linux-enable-crontab-log/index.html @@ -2,13 +2,13 @@ Linux 启用 crontab 日志 # You can enable logging for cron jobs in order to track problems. You need to edit the /etc/rsyslog.conf or /etc/rsyslog.d/50-default.conf (on Ubuntu) file and make sure you have the following line uncommented or add it if it is missing: cron.* /var/log/cron.log Then restart rsyslog and cron: -sudo service rsyslog restart sudo service cron restart Cron jobs will log to /var/log/cron."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/linux-enable-crontab-log/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / Linux 启用 crontab 日志 +sudo service rsyslog restart sudo service cron restart Cron jobs will log to /var/log/cron."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/linux-enable-crontab-log/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / Linux 启用 crontab 日志 Linux 启用 crontab 日志 # You can enable logging for cron jobs in order to track problems. You need to edit the /etc/rsyslog.conf or /etc/rsyslog.d/50-default.conf (on Ubuntu) file and make sure you have the following line uncommented or add it if it is missing: cron.* /var/log/cron.log Then restart rsyslog and cron: -sudo service rsyslog restart sudo service cron restart Cron jobs will log to /var/log/cron."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Linux Enable Crontab Log | 🍁 秋河落叶</title> +sudo service rsyslog restart sudo service cron restart Cron jobs will log to /var/log/cron."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Linux Enable Crontab Log | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/linux/linux-enable-crontab-log/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Linux Enable Crontab Log</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/linux/>Linux</a> / Linux 启用 crontab 日志</p><h1 id=linux-启用-crontab-日志>Linux 启用 crontab 日志 diff --git a/linux/linux-secure-login/index.html b/linux/linux-secure-login/index.html index 30aeacb5..512de224 100644 --- a/linux/linux-secure-login/index.html +++ b/linux/linux-secure-login/index.html @@ -5,16 +5,16 @@ 1. 禁用 root 账号登录 # 禁用 root 账号,那么我们就必须创建其他登录账号,这里建议账号名不要为 admin 这类常见用户名。 创建用户(以下都基于 ubuntu 系统操作) adduser dp 用户赋权 此时创建的用户不能使用 sudo 权限,考虑将用户加入 sudo 组 usermod -a -G sudo dp 并且,为了避免使用 sudo 权限需要时不时的输入密码的麻烦,进行免密设置。在 /etc/sudoers 文件中新增行。 -dp ALL=(ALL) NOPASSWD: ALL 到了这一步,应该尝试使用新用户登录系统,如果成功登录再往下继续。 禁用 root 登录 打开 /etc/ssh/sshd_config 文件,找到 PermitRootLogin 项,修改该项成如下:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/linux-secure-login/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / Linux-安全登录 +dp ALL=(ALL) NOPASSWD: ALL 到了这一步,应该尝试使用新用户登录系统,如果成功登录再往下继续。 禁用 root 登录 打开 /etc/ssh/sshd_config 文件,找到 PermitRootLogin 项,修改该项成如下:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/linux-secure-login/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / Linux-安全登录 Linux-安全登录 # 我们都知道 root 是 linux 系统默认的最高权限账号 linux 系统默认的 ssh 端口是 22 大多数人习惯使用 user/password 来登录 linux 系统 很遗憾,如果你的系统没有做特殊等登陆配置,那么其他人便可以利用 ssh ip:22 root/暴力密码 来破解登入你 的 linux 系统,一旦被他破解,你的系统就可以为他所用了。 但是,我们可以通过以下三种方式来避免发生这类安全问题。 1. 禁用 root 账号登录 # 禁用 root 账号,那么我们就必须创建其他登录账号,这里建议账号名不要为 admin 这类常见用户名。 创建用户(以下都基于 ubuntu 系统操作) adduser dp 用户赋权 此时创建的用户不能使用 sudo 权限,考虑将用户加入 sudo 组 usermod -a -G sudo dp 并且,为了避免使用 sudo 权限需要时不时的输入密码的麻烦,进行免密设置。在 /etc/sudoers 文件中新增行。 -dp ALL=(ALL) NOPASSWD: ALL 到了这一步,应该尝试使用新用户登录系统,如果成功登录再往下继续。 禁用 root 登录 打开 /etc/ssh/sshd_config 文件,找到 PermitRootLogin 项,修改该项成如下:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Linux Secure Login | 🍁 秋河落叶</title> +dp ALL=(ALL) NOPASSWD: ALL 到了这一步,应该尝试使用新用户登录系统,如果成功登录再往下继续。 禁用 root 登录 打开 /etc/ssh/sshd_config 文件,找到 PermitRootLogin 项,修改该项成如下:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Linux Secure Login | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/linux/linux-secure-login/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Linux Secure Login</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#1-禁用-root-账号登录>1. 禁用 root 账号登录</a></li><li><a href=#2-更改-ssh-远程端口>2. 更改 ssh 远程端口</a></li><li><a href=#3-使用密钥文件登录>3. 使用密钥文件登录</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/linux/>Linux</a> / Linux-安全登录</p><h1 id=linux-安全登录>Linux-安全登录 diff --git a/linux/shell-command-interval-character/index.html b/linux/shell-command-interval-character/index.html index 732421fb..523e206b 100644 --- a/linux/shell-command-interval-character/index.html +++ b/linux/shell-command-interval-character/index.html @@ -14,7 +14,7 @@ 示例: # 不管有没有赚到钱,都要回家过年 sh earn_money.sh; sh go_home.sh 5. >: 输出到指定文件(文件不存在则创建文件,文件存在则会覆盖文件内容) -echo "Hello World" > hello.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/shell-command-interval-character/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Linux / shell 命令间隔符 +echo "Hello World" > hello.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/shell-command-interval-character/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Linux / shell 命令间隔符 shell 命令间隔符 # 我们经常能看到Shell命令间有很多中间隔符:|,||,&& 等,它们到底有着什么样的作用呢?一一来看: 1. |: 间隔符 | 起着管道的作用,是将上一条命令的 stdout 作为下一条命令的 stdin: @@ -30,9 +30,9 @@ 示例: # 不管有没有赚到钱,都要回家过年 sh earn_money.sh; sh go_home.sh 5. >: 输出到指定文件(文件不存在则创建文件,文件存在则会覆盖文件内容) -echo "Hello World" > hello.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Shell Command Interval Character | 🍁 秋河落叶</title> +echo "Hello World" > hello.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Shell Command Interval Character | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/linux/shell-command-interval-character/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Shell Command Interval Character</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/linux/>Linux</a> / shell 命令间隔符</p><h1 id=shell-命令间隔符>shell 命令间隔符 diff --git a/linux/shell/index.html b/linux/shell/index.html index 01f30103..2977f46d 100644 --- a/linux/shell/index.html +++ b/linux/shell/index.html @@ -9,7 +9,7 @@ my_name="Ding Peng" readonly my_name 删除变量: unset my_name 变量类型: 局部变量:在脚本或命令中定义,仅在当前shell实例有效 环境变量:所有shell实例有效 shell变量:shell程序设置的特殊变量 shell 字符串 # 单引号与双引号的区别: -单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用; 双引号里可以有变量; 双引号里可以出现转义字符 my_name="Ding Peng" hello_string="Hllo,\"$my_name\"!" echo $hello_string 获取字符串长度:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/shell/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Linux / shell 基础 +单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用; 双引号里可以有变量; 双引号里可以出现转义字符 my_name="Ding Peng" hello_string="Hllo,\"$my_name\"!" echo $hello_string 获取字符串长度:'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/shell/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Linux / shell 基础 shell 基础 # shell 注释 # 单行注释: # 注释内容 多行注释: :<<EOF 注释内容 注释内容 注释内容 EOF 或 @@ -20,9 +20,9 @@ my_name="Ding Peng" readonly my_name 删除变量: unset my_name 变量类型: 局部变量:在脚本或命令中定义,仅在当前shell实例有效 环境变量:所有shell实例有效 shell变量:shell程序设置的特殊变量 shell 字符串 # 单引号与双引号的区别: -单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用; 双引号里可以有变量; 双引号里可以出现转义字符 my_name="Ding Peng" hello_string="Hllo,\"$my_name\"!" echo $hello_string 获取字符串长度:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Shell | 🍁 秋河落叶</title> +单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用; 双引号里可以有变量; 双引号里可以出现转义字符 my_name="Ding Peng" hello_string="Hllo,\"$my_name\"!" echo $hello_string 获取字符串长度:'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Shell | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/linux/shell/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Shell</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#shell-注释>shell 注释</a></li><li><a href=#shell-变量>shell 变量</a></li><li><a href=#shell-字符串>shell 字符串</a></li><li><a href=#shell-数组>shell 数组</a></li><li><a href=#shell-传参>shell 传参</a></li><li><a href=#shell-if-控制语句>shell if 控制语句</a><ul><li><a href=#空格问题>空格问题</a></li><li><a href=#文件测试表达式>文件测试表达式</a></li><li><a href=#字符串比较表达式>字符串比较表达式</a></li><li><a href=#数字比较表达式>数字比较表达式</a></li></ul></li><li><a href=#shell-运算符>shell 运算符</a><ul><li><a href=#算数运算符>算数运算符</a></li><li><a href=#关系运算符>关系运算符</a></li><li><a href=#布尔运算符>布尔运算符</a></li><li><a href=#逻辑运算符>逻辑运算符</a></li><li><a href=#字符串运算符>字符串运算符</a></li><li><a href=#文件测试运算符>文件测试运算符</a></li></ul></li><li><a href=#shell-命令>shell 命令</a><ul><li><a href=#echo>echo</a></li><li><a href=#read>read</a></li><li><a href=#printf>printf</a></li></ul></li><li><a href=#shell-变量引用>shell 变量引用</a></li><li><a href=#shell-经典实例>shell 经典实例</a><ul><li><a href=#删除确认>删除确认</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/linux/>Linux</a> / shell 基础</p><h1 id=shell-基础>shell 基础 diff --git a/linux/ssh-tunnel-connect-middleware/index.html b/linux/ssh-tunnel-connect-middleware/index.html index 9453540d..52ff8b04 100644 --- a/linux/ssh-tunnel-connect-middleware/index.html +++ b/linux/ssh-tunnel-connect-middleware/index.html @@ -5,16 +5,16 @@ 打开DBeaver,选择 Sql Server 连接。 在连接配置页面 Main,输入 Sql Server 连接的基本信息,这里 host 直接使用原本的数据库 host 即可。 切至 SSH,勾选 Use SSH Tunnel,输入跳板机的连接配置即可。 -配置完成,Ok连接即可。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/ssh-tunnel-connect-middleware/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / 使用 SSH Tunnel 连接中间件 +配置完成,Ok连接即可。"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/ssh-tunnel-connect-middleware/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / 使用 SSH Tunnel 连接中间件 使用 SSH Tunnel 连接中间件 # 背景 # 一般线上的数据库是不允许本机直接访问的,只能通过跳板机访问。但是这么多的开发人员都要访问数据库的话,跳板机的数量就有压力了。 本篇介绍如何使用 SSH Tunnel 的方式访问数据库,数据库不限于 Sql Server、MySql、Mongodb、Redis 等。 前提条件 # 已经拥有数据库的登录信息,如数据库访问的 host、port、user、password; 拥有一台可以访问数据库的跳板机登录权限,如跳板机的 IP、user、password(或密钥文件); 本机安装了有 SSH Tunnel 功能的数据库的可视化工具,如 DBeaver,Navicate,Robo 3T 等。 RDB # 使用 DBeaver 或 Navicate 等工具通过 SSH Tunnel 方式访问关系型数据库,以 Sql Server 为例。 打开DBeaver,选择 Sql Server 连接。 在连接配置页面 Main,输入 Sql Server 连接的基本信息,这里 host 直接使用原本的数据库 host 即可。 切至 SSH,勾选 Use SSH Tunnel,输入跳板机的连接配置即可。 -配置完成,Ok连接即可。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>SSH Tunnel Connect Middleware | 🍁 秋河落叶</title> +配置完成,Ok连接即可。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>SSH Tunnel Connect Middleware | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/linux/ssh-tunnel-connect-middleware/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>SSH Tunnel Connect Middleware</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#背景>背景</a></li><li><a href=#前提条件>前提条件</a></li><li><a href=#rdb>RDB</a><ul><li><a href=#使用-ssms--ssh-tunnel-连接-sql-server>使用 SSMS + SSH Tunnel 连接 Sql Server</a></li></ul></li><li><a href=#nosql>NoSql</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/linux/>Linux</a> / 使用 SSH Tunnel 连接中间件</p><h1 id=使用-ssh-tunnel-连接中间件>使用 SSH Tunnel 连接中间件 diff --git a/linux/tee-keep-stderr/index.html b/linux/tee-keep-stderr/index.html index 573d8e97..419a7ca6 100644 --- a/linux/tee-keep-stderr/index.html +++ b/linux/tee-keep-stderr/index.html @@ -4,15 +4,15 @@ 1.sh echo exec 1.sh start! && \ cat hello.txt && \ echo exec 1.sh end! 假如 hello.txt 文件不存在,执行 1.sh 文件中的 cat 命令将报错。如果我们想将执行 1.sh 文件的输出写入到一个 log 文件,例如: sh 1.sh | tee 1.log 执行以上命令,控制台的输出是: -$ sh 1.sh | tee 1.log exec 1.sh start! cat: hello.txt: No such file or directory 但是写入到 1."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/tee-keep-stderr/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / tee 保存 stderr 到文件 +$ sh 1.sh | tee 1.log exec 1.sh start! cat: hello.txt: No such file or directory 但是写入到 1."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/tee-keep-stderr/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / tee 保存 stderr 到文件 tee 保存 stderr 到文件 # tee命令是将 stdout 写入到某文件当中,但是如何将 stderr 也写入到文件当中? 示例如下: 1.sh echo exec 1.sh start! && \ cat hello.txt && \ echo exec 1.sh end! 假如 hello.txt 文件不存在,执行 1.sh 文件中的 cat 命令将报错。如果我们想将执行 1.sh 文件的输出写入到一个 log 文件,例如: sh 1.sh | tee 1.log 执行以上命令,控制台的输出是: -$ sh 1.sh | tee 1.log exec 1.sh start! cat: hello.txt: No such file or directory 但是写入到 1."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Tee Keep Stderr | 🍁 秋河落叶</title> +$ sh 1.sh | tee 1.log exec 1.sh start! cat: hello.txt: No such file or directory 但是写入到 1."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Tee Keep Stderr | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/linux/tee-keep-stderr/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Tee Keep Stderr</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/linux/>Linux</a> / tee 保存 stderr 到文件</p><h1 id=tee-保存-stderr-到文件>tee 保存 stderr 到文件 diff --git a/linux/vim-common-commands/index.html b/linux/vim-common-commands/index.html index 1e098f7a..a52c7c14 100644 --- a/linux/vim-common-commands/index.html +++ b/linux/vim-common-commands/index.html @@ -8,7 +8,7 @@ ecs+:set ignorecase:设置默认忽略大小写敏感 ecs+:set smartcase:如果查找字符中存在大写则自动大小写敏感 查找当前字符: -光标移动 # h:向左 j:向下 k:向上 l:向右 替换 # :s/jay/dp/g 替换当前行中所有匹配 jay => dp :1,$s/jay/dp/g 替换所有 :1,5s/jay/dp/g 替换 1 到 5 行 翻页 # ctrl+f:下一页 ctrl+d:下半页 ctrl+b:上一页 ctrl+u:上半页 行操作 # dG:删除当前行到尾行"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/vim-common-commands/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / vim 使用 +光标移动 # h:向左 j:向下 k:向上 l:向右 替换 # :s/jay/dp/g 替换当前行中所有匹配 jay => dp :1,$s/jay/dp/g 替换所有 :1,5s/jay/dp/g 替换 1 到 5 行 翻页 # ctrl+f:下一页 ctrl+d:下半页 ctrl+b:上一页 ctrl+u:上半页 行操作 # dG:删除当前行到尾行"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/linux/vim-common-commands/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Linux / vim 使用 vim 使用 # 设置 # vim /etc/vim/vimrc 或者当前环境设置 :set paste :set nopaste :set number :set nonumber :set hlsearch :set nohlsearch :set cursorline :set nocursorline vim删除所有行 # ggdG 撤销 # u ctrl+r 查找 # 大小写问题: 默认大小写敏感。 @@ -18,9 +18,9 @@ ecs+:set ignorecase:设置默认忽略大小写敏感 ecs+:set smartcase:如果查找字符中存在大写则自动大小写敏感 查找当前字符: -光标移动 # h:向左 j:向下 k:向上 l:向右 替换 # :s/jay/dp/g 替换当前行中所有匹配 jay => dp :1,$s/jay/dp/g 替换所有 :1,5s/jay/dp/g 替换 1 到 5 行 翻页 # ctrl+f:下一页 ctrl+d:下半页 ctrl+b:上一页 ctrl+u:上半页 行操作 # dG:删除当前行到尾行"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Vim Common Commands | 🍁 秋河落叶</title> +光标移动 # h:向左 j:向下 k:向上 l:向右 替换 # :s/jay/dp/g 替换当前行中所有匹配 jay => dp :1,$s/jay/dp/g 替换所有 :1,5s/jay/dp/g 替换 1 到 5 行 翻页 # ctrl+f:下一页 ctrl+d:下半页 ctrl+b:上一页 ctrl+u:上半页 行操作 # dG:删除当前行到尾行"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="linux"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Vim Common Commands | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/linux/vim-common-commands/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Vim Common Commands</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#设置>设置</a></li><li><a href=#vim删除所有行>vim删除所有行</a><ul><li><a href=#撤销>撤销</a></li><li><a href=#查找>查找</a></li><li><a href=#光标移动>光标移动</a></li><li><a href=#替换>替换</a></li><li><a href=#翻页>翻页</a></li><li><a href=#行操作>行操作</a></li><li><a href=#退出>退出</a></li></ul></li><li><a href=#查找-1>查找</a><ul><li><a href=#大小写敏感查找>大小写敏感查找</a></li><li><a href=#大小写敏感配置>大小写敏感配置</a></li><li><a href=#查找当前单词>查找当前单词</a></li><li><a href=#其他设置>其他设置</a></li></ul></li><li><a href=#查找与替换>查找与替换</a><ul><li><a href=#作用范围>作用范围</a></li><li><a href=#替换标志>替换标志</a></li></ul></li><li><a href=#高亮设置>高亮设置</a><ul><li><a href=#高亮颜色设置>高亮颜色设置</a></li><li><a href=#禁用启用高亮>禁用/启用高亮</a></li></ul></li><li><a href=#参考阅读>参考阅读</a></li><li><a href=#写入保存退出>写入、保存、退出</a></li><li><a href=#光标移动-1>光标移动</a></li><li><a href=#翻页-1>翻页</a></li><li><a href=#查找与替换-1>查找与替换</a></li><li><a href=#复制粘贴删除>复制、粘贴、删除</a></li><li><a href=#插入>插入</a></li><li><a href=#撤销重做>撤销重做</a></li><li><a href=#替换-1>替换</a></li><li><a href=#大小写>大小写</a></li><li><a href=#多窗口操作>多窗口操作</a></li><li><a href=#多文件编辑>多文件编辑</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/linux/>Linux</a> / vim 使用</p><h1 id=vim-使用>vim 使用 diff --git a/manifest.json b/manifest.json index 0526977b..2c94de9f 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { - "name": "🍁 秋河落叶", - "short_name": "🍁 秋河落叶", + "name": "秋河落叶", + "short_name": "秋河落叶", "start_url": "/", "scope": "/", "display": "standalone", diff --git a/middleware/elasticsearch/index.html b/middleware/elasticsearch/index.html index be58eb79..5fde3935 100644 --- a/middleware/elasticsearch/index.html +++ b/middleware/elasticsearch/index.html @@ -8,7 +8,7 @@ GET /users 获取所有索引 GET /_cat/indices?v 删除索引 # DELETE /users 创建文档 # 这个操作是在单个索引下的 POST /users/_doc # 一定需要body,否则报错 body: { "name": "dp", "age": 18 } 上面这个文档创建时会生成随机 ID(返回结果中的 _id),不便维护,使用下面的方法自定义文档 ID,此时由于 ID 自定义了,就要求幂等,所以可以使用 PUT 方法 -POST | PUT /users/_doc/1002 PUT /users/_create/1003 # 一定需要body,否则报错 body: { "name": "dp", "age": 18 } 查询文档 # 获取单个文档'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/middleware/elasticsearch/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / 数据中间件 / Elasticsearch +POST | PUT /users/_doc/1002 PUT /users/_create/1003 # 一定需要body,否则报错 body: { "name": "dp", "age": 18 } 查询文档 # 获取单个文档'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/middleware/elasticsearch/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / 数据中间件 / Elasticsearch Elasticsearch # 全文搜索 API # 题外话: 幂等性:多次执行同样的请求,资源只能创建或修改一次 @@ -18,9 +18,9 @@ GET /users 获取所有索引 GET /_cat/indices?v 删除索引 # DELETE /users 创建文档 # 这个操作是在单个索引下的 POST /users/_doc # 一定需要body,否则报错 body: { "name": "dp", "age": 18 } 上面这个文档创建时会生成随机 ID(返回结果中的 _id),不便维护,使用下面的方法自定义文档 ID,此时由于 ID 自定义了,就要求幂等,所以可以使用 PUT 方法 -POST | PUT /users/_doc/1002 PUT /users/_create/1003 # 一定需要body,否则报错 body: { "name": "dp", "age": 18 } 查询文档 # 获取单个文档'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="middleware"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Elasticsearch | 🍁 秋河落叶</title> +POST | PUT /users/_doc/1002 PUT /users/_create/1003 # 一定需要body,否则报错 body: { "name": "dp", "age": 18 } 查询文档 # 获取单个文档'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="middleware"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Elasticsearch | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/middleware/elasticsearch/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Elasticsearch</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#api>API</a><ul><li><a href=#创建索引>创建索引</a></li><li><a href=#查询索引>查询索引</a></li><li><a href=#删除索引>删除索引</a></li><li><a href=#创建文档>创建文档</a></li><li><a href=#查询文档>查询文档</a></li><li><a href=#修改文档>修改文档</a></li><li><a href=#删除文档>删除文档</a></li></ul></li><li><a href=#复杂查询>复杂查询</a><ul><li><a href=#条件查询>条件查询</a></li><li><a href=#多条件查询>多条件查询</a></li><li><a href=#聚合查询>聚合查询</a></li></ul></li><li><a href=#设置>设置</a><ul><li><a href=#设置集群最大索引数>设置集群最大索引数</a></li><li><a href=#设置删除权限>设置删除权限</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/middleware/>数据中间件</a> / Elasticsearch</p><h1 id=elasticsearch>Elasticsearch diff --git a/middleware/index.html b/middleware/index.html index a406c706..e6a4d27a 100644 --- a/middleware/index.html +++ b/middleware/index.html @@ -3,14 +3,14 @@ MongoDB MySQL Postgres -Redis"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/middleware/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 数据中间件 +Redis"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/middleware/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 数据中间件 数据中间件 # Elasticsearch MongoDB MySQL Postgres -Redis"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Middleware | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/middleware/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/middleware/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +Redis"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Middleware | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/middleware/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/middleware/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Middleware</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / 数据中间件</p><h1 id=数据中间件>数据中间件 <a class=anchor href=#%e6%95%b0%e6%8d%ae%e4%b8%ad%e9%97%b4%e4%bb%b6>#</a></h1><p><a href=/middleware/elasticsearch/>Elasticsearch</a></p><p><a href=/middleware/mongodb/>MongoDB</a></p><p><a href=/middleware/mysql/>MySQL</a></p><p><a href=/middleware/postgres/>Postgres</a></p><p><a href=/middleware/redis/>Redis</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/middleware/index.xml b/middleware/index.xml index 6efb1c71..946fbfd9 100644 --- a/middleware/index.xml +++ b/middleware/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/middleware/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/middleware/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/middleware/elasticsearch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/middleware/elasticsearch/</guid><description>🏠 首页 / 数据中间件 / Elasticsearch +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/middleware/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/middleware/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/middleware/elasticsearch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/middleware/elasticsearch/</guid><description>🏠 首页 / 数据中间件 / Elasticsearch Elasticsearch # 全文搜索 API # 题外话: 幂等性:多次执行同样的请求,资源只能创建或修改一次 diff --git a/middleware/mongodb/index.html b/middleware/mongodb/index.html index e0b5bca0..33b29175 100644 --- a/middleware/mongodb/index.html +++ b/middleware/mongodb/index.html @@ -6,7 +6,7 @@ sudo systemctl statt mongod #/stop/restart 创建 dba 用户并添加权限验证 mongodb 没有开启权限验证之前,使用 mongo 命令可以直接连接本地 mongodb; sudo mongo 使用 db.createUser 命令创建 dba 用户,为 dba 用户添加所有 database 的管理员权限; -> db.createUser({user:"dba",pwd:"[your pass]",roles:[ {role:"readWriteAnyDatabase",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"},{role:"userAdminAnyDatabase",db:"admin"},{role:"clusterAdmin",db:"admin"},{role:"restore",db:"admin"},{role:"backup",db:"admin"} ]}) Successfully added user: { "user" : "dba", "roles" : [ // .'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/middleware/mongodb/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / 数据中间件 / MongoDB +> db.createUser({user:"dba",pwd:"[your pass]",roles:[ {role:"readWriteAnyDatabase",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"},{role:"userAdminAnyDatabase",db:"admin"},{role:"clusterAdmin",db:"admin"},{role:"restore",db:"admin"},{role:"backup",db:"admin"} ]}) Successfully added user: { "user" : "dba", "roles" : [ // .'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/middleware/mongodb/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / 数据中间件 / MongoDB MongoDB # 资料 # http://cw.hubwiz.com/card/c/543b2f3cf86387171814c026/1/1/1/ http://cw.hubwiz.com/card/c/5438c259032c7817c40298b5/1/1/1/ 安装 # 按照官网给出的指南在 ubuntu 系统安装 mongod,参考 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/ 验证 mongo 是否安装成功:进入 ubuntu shell 窗口,直接输入 mongo --version 窗口正常输出 mongo 版本就说明 mongo 安装成功 @@ -14,9 +14,9 @@ sudo systemctl statt mongod #/stop/restart 创建 dba 用户并添加权限验证 mongodb 没有开启权限验证之前,使用 mongo 命令可以直接连接本地 mongodb; sudo mongo 使用 db.createUser 命令创建 dba 用户,为 dba 用户添加所有 database 的管理员权限; -> db.createUser({user:"dba",pwd:"[your pass]",roles:[ {role:"readWriteAnyDatabase",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"},{role:"userAdminAnyDatabase",db:"admin"},{role:"clusterAdmin",db:"admin"},{role:"restore",db:"admin"},{role:"backup",db:"admin"} ]}) Successfully added user: { "user" : "dba", "roles" : [ // .'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="middleware"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Mongodb | 🍁 秋河落叶</title> +> db.createUser({user:"dba",pwd:"[your pass]",roles:[ {role:"readWriteAnyDatabase",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"},{role:"userAdminAnyDatabase",db:"admin"},{role:"clusterAdmin",db:"admin"},{role:"restore",db:"admin"},{role:"backup",db:"admin"} ]}) Successfully added user: { "user" : "dba", "roles" : [ // .'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="middleware"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Mongodb | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/middleware/mongodb/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Mongodb</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#资料>资料</a></li><li><a href=#安装>安装</a></li><li><a href=#基础查询>基础查询</a></li><li><a href=#创建索引>创建索引</a></li><li><a href=#用户>用户</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/middleware/>数据中间件</a> / MongoDB</p><h1 id=mongodb>MongoDB diff --git a/middleware/mysql/index.html b/middleware/mysql/index.html index 876f4725..242088c1 100644 --- a/middleware/mysql/index.html +++ b/middleware/mysql/index.html @@ -2,13 +2,13 @@ MySQL # 安装 # Windows 安装 MySQL # 下载 Mysql 安装包: https://dev.mysql.com/downloads/installer/ 下载完成后,双击 msi 文件安装。 Ubuntu 安装 MySQL # sudo apt update sudo apt install mysql-server -y # 只安装 mysql 客户端 sudo apt install mysql-client -y Docker 安装 MySQL # docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 Troubleshooting # Q1. root 用户本地登录 # 使用命令 mysql -u root -p,输入密码后登录失败,提示如下: -Access denied for user 'root'@'localhost' 解决方案::"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/middleware/mysql/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 数据中间件 / MySQL +Access denied for user 'root'@'localhost' 解决方案::"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/middleware/mysql/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 数据中间件 / MySQL MySQL # 安装 # Windows 安装 MySQL # 下载 Mysql 安装包: https://dev.mysql.com/downloads/installer/ 下载完成后,双击 msi 文件安装。 Ubuntu 安装 MySQL # sudo apt update sudo apt install mysql-server -y # 只安装 mysql 客户端 sudo apt install mysql-client -y Docker 安装 MySQL # docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 Troubleshooting # Q1. root 用户本地登录 # 使用命令 mysql -u root -p,输入密码后登录失败,提示如下: -Access denied for user 'root'@'localhost' 解决方案::"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="middleware"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Mysql | 🍁 秋河落叶</title> +Access denied for user 'root'@'localhost' 解决方案::"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="middleware"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Mysql | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/middleware/mysql/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Mysql</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装>安装</a><ul><li><a href=#windows-安装-mysql>Windows 安装 MySQL</a></li><li><a href=#ubuntu-安装-mysql>Ubuntu 安装 MySQL</a></li><li><a href=#docker-安装-mysql>Docker 安装 MySQL</a></li></ul></li><li><a href=#troubleshooting>Troubleshooting</a><ul><li><a href=#q1-root-用户本地登录>Q1. root 用户本地登录</a></li><li><a href=#q2-创建用户>Q2. 创建用户</a></li></ul></li><li><a href=#mysql配置>MySQL配置</a><ul><li><a href=#创建用户>创建用户</a></li><li><a href=#mysql-开启-binary-logging>MySQL 开启 binary logging</a></li><li><a href=#aws-mysql-开启-binary-logging>AWS MySQL 开启 binary logging</a></li></ul></li><li><a href=#mysql-执行进程>MySQL 执行进程</a></li><li><a href=#mysql-join>Mysql Join</a><ul><li><a href=#inner-join>Inner Join</a></li><li><a href=#right-join>Right Join</a></li><li><a href=#left-join>Left Join</a></li></ul></li><li><a href=#mysql常用>MySQL常用</a><ul><li><a href=#字符串>字符串</a></li><li><a href=#时间>时间</a></li><li><a href=#数据导入导出>数据导入导出</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/middleware/>数据中间件</a> / MySQL</p><h1 id=mysql>MySQL diff --git a/middleware/postgres/index.html b/middleware/postgres/index.html index fccd1e53..1f40b4b9 100644 --- a/middleware/postgres/index.html +++ b/middleware/postgres/index.html @@ -2,13 +2,13 @@ Postgres # 自增 Id 数据插入权限 GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA public TO <user_name>; 修改用户密码 alter user postgres with password 'admin123'; « MySQL -» Redis"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/middleware/postgres/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 数据中间件 / Postgres +» Redis"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/middleware/postgres/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 数据中间件 / Postgres Postgres # 自增 Id 数据插入权限 GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA public TO <user_name>; 修改用户密码 alter user postgres with password 'admin123'; « MySQL -» Redis"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="middleware"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Postgres | 🍁 秋河落叶</title> +» Redis"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="middleware"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Postgres | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/middleware/postgres/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Postgres</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/middleware/>数据中间件</a> / Postgres</p><h1 id=postgres>Postgres diff --git a/middleware/redis/index.html b/middleware/redis/index.html index 468615d0..93235f6b 100644 --- a/middleware/redis/index.html +++ b/middleware/redis/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / 数据中间件 / Redis Redis # 安装 # Docker 安装 redis # sudo docker run --name redis-01 \ -p 2501:6379 \ -v /home/dp/apps/redis/redis-01/conf/redis.conf:/etc/redis/redis.conf \ -v /home/dp/apps/redis/redis-01/data:/data \ -d \ redis:6.0 redis-server /etc/redis/redis.conf --appendonly yes redis.conf 是配置文件 redis-server /etc/redis/redis.conf,启用配置,如果没有 redis-server 则 redis 默认是无配置启动 –appendonly yes 启用数据持久化 redis.conf 参照: -bind 127.0.0.1 # 注释掉这部分,使 redis 可以外部访问 daemonize no # 用守护线程的方式启动 requirepass your_pwd # 给 redis 设置密码 appendonly yes # redis 持久化 默认是 no tcp-keepalive 300 # 防止出现远程主机强迫关闭了一个现有的连接的错误 默认是 300 « Postgres"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/middleware/redis/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 数据中间件 / Redis +bind 127.0.0.1 # 注释掉这部分,使 redis 可以外部访问 daemonize no # 用守护线程的方式启动 requirepass your_pwd # 给 redis 设置密码 appendonly yes # redis 持久化 默认是 no tcp-keepalive 300 # 防止出现远程主机强迫关闭了一个现有的连接的错误 默认是 300 « Postgres"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/middleware/redis/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 数据中间件 / Redis Redis # 安装 # Docker 安装 redis # sudo docker run --name redis-01 \ -p 2501:6379 \ -v /home/dp/apps/redis/redis-01/conf/redis.conf:/etc/redis/redis.conf \ -v /home/dp/apps/redis/redis-01/data:/data \ -d \ redis:6.0 redis-server /etc/redis/redis.conf --appendonly yes redis.conf 是配置文件 redis-server /etc/redis/redis.conf,启用配置,如果没有 redis-server 则 redis 默认是无配置启动 –appendonly yes 启用数据持久化 redis.conf 参照: -bind 127.0.0.1 # 注释掉这部分,使 redis 可以外部访问 daemonize no # 用守护线程的方式启动 requirepass your_pwd # 给 redis 设置密码 appendonly yes # redis 持久化 默认是 no tcp-keepalive 300 # 防止出现远程主机强迫关闭了一个现有的连接的错误 默认是 300 « Postgres"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="middleware"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Redis | 🍁 秋河落叶</title> +bind 127.0.0.1 # 注释掉这部分,使 redis 可以外部访问 daemonize no # 用守护线程的方式启动 requirepass your_pwd # 给 redis 设置密码 appendonly yes # redis 持久化 默认是 no tcp-keepalive 300 # 防止出现远程主机强迫关闭了一个现有的连接的错误 默认是 300 « Postgres"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="middleware"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Redis | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/middleware/redis/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Redis</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装>安装</a><ul><li><a href=#docker-安装-redis>Docker 安装 redis</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/middleware/>数据中间件</a> / Redis</p><h1 id=redis>Redis diff --git a/os/index.html b/os/index.html index adb02038..2ae0d3ed 100644 --- a/os/index.html +++ b/os/index.html @@ -3,14 +3,14 @@ ohmyzsh openssl Ubuntu -Windows 使用姿势"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/os/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 操作系统 +Windows 使用姿势"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/os/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 操作系统 操作系统 # MacOS ohmyzsh openssl Ubuntu -Windows 使用姿势"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Os | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/os/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/os/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +Windows 使用姿势"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Os | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/os/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/os/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Os</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / 操作系统</p><h1 id=操作系统>操作系统 <a class=anchor href=#%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f>#</a></h1><p><a href=/os/macos/>MacOS</a></p><p><a href=/os/ohmyzsh/>ohmyzsh</a></p><p><a href=/os/openssl/>openssl</a></p><p><a href=/os/ubuntu/>Ubuntu</a></p><p><a href=/os/windows/>Windows 使用姿势</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/os/index.xml b/os/index.xml index d949fa9c..65d65a1b 100644 --- a/os/index.xml +++ b/os/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/os/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/os/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/os/macos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/os/macos/</guid><description>🏠 首页 / 操作系统 / MacOS +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/os/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/os/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/os/macos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/os/macos/</guid><description>🏠 首页 / 操作系统 / MacOS MacOS # Git 忽略 .DS_Store 文件 # # 配置全局忽略文件 git config --global core.excludesfile ~/.gitignore_global # 添加 .DS_Store 文件到全局忽略文件 echo .DS_Store &gt;&gt; ~/.gitignore_global echo ._.DS_Store &gt;&gt; ~/.gitignore_global echo **/.DS_Store &gt;&gt; ~/.gitignore_global echo **/._.DS_Store &gt;&gt; ~/.gitignore_global 配置 PATH # 在终端使用 export 命令设置 PATH 并不能全局生效,如果你想设置全局 PATH ,可以使用以下这个方法: sudo mkdir /etc/paths.d/mypath vim /etc/paths.d/mypath /your/path 查看端口占用并退出程序 # 有时候使用 VSCode 调试或运行程序后,无法成功推出程序,端口一直占用。 查看端口占用: diff --git a/os/macos/index.html b/os/macos/index.html index e92ba279..70dcb41c 100644 --- a/os/macos/index.html +++ b/os/macos/index.html @@ -2,13 +2,13 @@ MacOS # Git 忽略 .DS_Store 文件 # # 配置全局忽略文件 git config --global core.excludesfile ~/.gitignore_global # 添加 .DS_Store 文件到全局忽略文件 echo .DS_Store >> ~/.gitignore_global echo ._.DS_Store >> ~/.gitignore_global echo **/.DS_Store >> ~/.gitignore_global echo **/._.DS_Store >> ~/.gitignore_global 配置 PATH # 在终端使用 export 命令设置 PATH 并不能全局生效,如果你想设置全局 PATH ,可以使用以下这个方法: sudo mkdir /etc/paths.d/mypath vim /etc/paths.d/mypath /your/path 查看端口占用并退出程序 # 有时候使用 VSCode 调试或运行程序后,无法成功推出程序,端口一直占用。 查看端口占用: -# [port] 替换成你想查看的端口号,例如:sudo lsof -i tcp:8080 sudo lsof -i tcp:[port] 上述命令可以得到程序的进程 PID,退出进程:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/os/macos/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 操作系统 / MacOS +# [port] 替换成你想查看的端口号,例如:sudo lsof -i tcp:8080 sudo lsof -i tcp:[port] 上述命令可以得到程序的进程 PID,退出进程:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/os/macos/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 操作系统 / MacOS MacOS # Git 忽略 .DS_Store 文件 # # 配置全局忽略文件 git config --global core.excludesfile ~/.gitignore_global # 添加 .DS_Store 文件到全局忽略文件 echo .DS_Store >> ~/.gitignore_global echo ._.DS_Store >> ~/.gitignore_global echo **/.DS_Store >> ~/.gitignore_global echo **/._.DS_Store >> ~/.gitignore_global 配置 PATH # 在终端使用 export 命令设置 PATH 并不能全局生效,如果你想设置全局 PATH ,可以使用以下这个方法: sudo mkdir /etc/paths.d/mypath vim /etc/paths.d/mypath /your/path 查看端口占用并退出程序 # 有时候使用 VSCode 调试或运行程序后,无法成功推出程序,端口一直占用。 查看端口占用: -# [port] 替换成你想查看的端口号,例如:sudo lsof -i tcp:8080 sudo lsof -i tcp:[port] 上述命令可以得到程序的进程 PID,退出进程:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="os"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Macos | 🍁 秋河落叶</title> +# [port] 替换成你想查看的端口号,例如:sudo lsof -i tcp:8080 sudo lsof -i tcp:[port] 上述命令可以得到程序的进程 PID,退出进程:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="os"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Macos | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/os/macos/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Macos</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#git-忽略-ds_store-文件>Git 忽略 .DS_Store 文件</a></li><li><a href=#配置-path>配置 PATH</a></li><li><a href=#查看端口占用并退出程序>查看端口占用并退出程序</a></li><li><a href=#重置-downie-试用>重置 Downie 试用</a></li><li><a href=#自定义-path>自定义 PATH</a></li><li><a href=#更新-python-的证书包>更新 Python 的证书包</a></li><li><a href=#mac-缓存清理>Mac 缓存清理</a><ul><li><a href=#go-缓存清理>Go 缓存清理</a></li><li><a href=#npm-缓存清理>npm 缓存清理</a></li><li><a href=#yarn-缓存清理>yarn 缓存清理</a></li><li><a href=#rust-缓存清理>rust 缓存清理</a></li></ul></li><li><a href=#iterm2>iTerm2</a></li><li><a href=#go-调试问题>Go 调试问题</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/os/>操作系统</a> / MacOS</p><h1 id=macos>MacOS diff --git a/os/ohmyzsh/index.html b/os/ohmyzsh/index.html index 614fb807..f6e180ed 100644 --- a/os/ohmyzsh/index.html +++ b/os/ohmyzsh/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / 操作系统 / ohmyzsh ohmyzsh # macos # echo $SHELL /bin/zsh 安装 ohmyzsh sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 安装 zsh-autosuggestions git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions 配置 .zshrc 文件添加 ohmyzsh 插件: plugins=(git docker docker-compose kubectl autojump zsh-autosuggestions) linux # 安装 zsh: sudo apt update sudo apt install zsh -y 修改 shell: chsh -s /usr/bin/zsh 打开新的终端,将使用 zsh -echo $SHELL /usr/bin/zsh 安装 ohmyzsh: sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 安装 zsh-autosuggestions: git clone https://github.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/os/ohmyzsh/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / 操作系统 / ohmyzsh +echo $SHELL /usr/bin/zsh 安装 ohmyzsh: sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 安装 zsh-autosuggestions: git clone https://github.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/os/ohmyzsh/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / 操作系统 / ohmyzsh ohmyzsh # macos # echo $SHELL /bin/zsh 安装 ohmyzsh sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 安装 zsh-autosuggestions git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions 配置 .zshrc 文件添加 ohmyzsh 插件: plugins=(git docker docker-compose kubectl autojump zsh-autosuggestions) linux # 安装 zsh: sudo apt update sudo apt install zsh -y 修改 shell: chsh -s /usr/bin/zsh 打开新的终端,将使用 zsh -echo $SHELL /usr/bin/zsh 安装 ohmyzsh: sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 安装 zsh-autosuggestions: git clone https://github.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="os"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Ohmyzsh | 🍁 秋河落叶</title> +echo $SHELL /usr/bin/zsh 安装 ohmyzsh: sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 安装 zsh-autosuggestions: git clone https://github.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="os"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Ohmyzsh | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/os/ohmyzsh/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Ohmyzsh</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#macos>macos</a></li><li><a href=#linux>linux</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/os/>操作系统</a> / ohmyzsh</p><h1 id=ohmyzsh>ohmyzsh diff --git a/os/openssl/index.html b/os/openssl/index.html index 75e2c310..ac45c9aa 100644 --- a/os/openssl/index.html +++ b/os/openssl/index.html @@ -3,14 +3,14 @@ 包含三个组件: openssl:命令行工具 libcrypto:加密算法库 libssl:加密模块应用库,实现了 SSL 和 TLS 协议 对称加密 # echo test > test.txt # 加密 openssl enc -e -des3 -a -salt -in test.txt -out test.txt.enc # 解密 openssl enc -d -des3 -a -salt -in test.txt.enc -out test.txt.dec -salt:加盐,增加破解难度,使用 openssl 默认盐值 -S [salt]:指定盐值 非对称加密 # 生成密钥对 -openssl genrsa -out rsa_private_key.pem 2048 openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/os/openssl/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 操作系统 / openssl +openssl genrsa -out rsa_private_key.pem 2048 openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/os/openssl/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 操作系统 / openssl openssl # openssl 常用于生成证书、签名、加密等操作。它是一个开源的工具,可以在 Linux、Windows、MacOS 等操作系统上运行。 包含三个组件: openssl:命令行工具 libcrypto:加密算法库 libssl:加密模块应用库,实现了 SSL 和 TLS 协议 对称加密 # echo test > test.txt # 加密 openssl enc -e -des3 -a -salt -in test.txt -out test.txt.enc # 解密 openssl enc -d -des3 -a -salt -in test.txt.enc -out test.txt.dec -salt:加盐,增加破解难度,使用 openssl 默认盐值 -S [salt]:指定盐值 非对称加密 # 生成密钥对 -openssl genrsa -out rsa_private_key.pem 2048 openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="os"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Openssl | 🍁 秋河落叶</title> +openssl genrsa -out rsa_private_key.pem 2048 openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="os"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Openssl | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/os/openssl/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Openssl</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#对称加密>对称加密</a></li><li><a href=#非对称加密>非对称加密</a></li><li><a href=#ca-证书--颁发证书>CA 证书 & 颁发证书</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/os/>操作系统</a> / openssl</p><h1 id=openssl>openssl diff --git a/os/ubuntu/index.html b/os/ubuntu/index.html index 8803092d..d99133f5 100644 --- a/os/ubuntu/index.html +++ b/os/ubuntu/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / 操作系统 / Ubuntu Ubuntu # 终端默认使用英文 # LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 下载 arm64 桌面镜像 # https://cdimage.ubuntu.com/jammy/daily-live/current/jammy-desktop-arm64.iso 关闭防火墙 # sudo ufw disable sudo ufw status 修改时区 # sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime sudo timedatectl set-timezone Asia/Shanghai date # 同步时间 sudo apt install ntpdate -y sudo ntpdate cn.pool.ntp.org 解决英文系统下中文显示问题 # 修改字体优先级 sudo vim /etc/fonts/conf.avail/64-language-selector-prefer.conf 注意:在 Ubuntu 23.10 或更新版本的系统上修改文件: -sudo vim /etc/fonts/conf.d/64-language-selector-cjk-prefer.conf 将 `JP` 和 `KR` 所在行往下调整即可,调整成如下所示: ```xml <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/os/ubuntu/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / 操作系统 / Ubuntu +sudo vim /etc/fonts/conf.d/64-language-selector-cjk-prefer.conf 将 `JP` 和 `KR` 所在行往下调整即可,调整成如下所示: ```xml <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/os/ubuntu/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / 操作系统 / Ubuntu Ubuntu # 终端默认使用英文 # LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 下载 arm64 桌面镜像 # https://cdimage.ubuntu.com/jammy/daily-live/current/jammy-desktop-arm64.iso 关闭防火墙 # sudo ufw disable sudo ufw status 修改时区 # sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime sudo timedatectl set-timezone Asia/Shanghai date # 同步时间 sudo apt install ntpdate -y sudo ntpdate cn.pool.ntp.org 解决英文系统下中文显示问题 # 修改字体优先级 sudo vim /etc/fonts/conf.avail/64-language-selector-prefer.conf 注意:在 Ubuntu 23.10 或更新版本的系统上修改文件: -sudo vim /etc/fonts/conf.d/64-language-selector-cjk-prefer.conf 将 `JP` 和 `KR` 所在行往下调整即可,调整成如下所示: ```xml <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="os"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Ubuntu | 🍁 秋河落叶</title> +sudo vim /etc/fonts/conf.d/64-language-selector-cjk-prefer.conf 将 `JP` 和 `KR` 所在行往下调整即可,调整成如下所示: ```xml <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="os"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Ubuntu | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/os/ubuntu/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Ubuntu</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#终端默认使用英文>终端默认使用英文</a></li><li><a href=#下载-arm64-桌面镜像>下载 arm64 桌面镜像</a></li><li><a href=#关闭防火墙>关闭防火墙</a></li><li><a href=#修改时区>修改时区</a></li><li><a href=#解决英文系统下中文显示问题>解决英文系统下中文显示问题</a></li><li><a href=#安装搜狗输入法>安装搜狗输入法</a></li><li><a href=#修复-no-wi-fi-adapter-found-问题>修复 No Wi-Fi Adapter Found 问题</a></li><li><a href=#m720-鼠标优联连接>M720 鼠标优联连接</a></li><li><a href=#ubuntu-启用中文输入法>Ubuntu 启用中文输入法</a></li><li><a href=#虚拟机>虚拟机</a></li><li><a href=#升级>升级</a><ul><li><a href=#2204---2304>22.04 -> 23.04</a></li><li><a href=#2304---2310>23.04 -> 23.10</a></li></ul></li><li><a href=#输入法>输入法</a></li><li><a href=#gnome-tweak-工具>gnome-tweak 工具</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/os/>操作系统</a> / Ubuntu</p><h1 id=ubuntu>Ubuntu diff --git a/os/windows/index.html b/os/windows/index.html index d88a97c7..ab1d384f 100644 --- a/os/windows/index.html +++ b/os/windows/index.html @@ -4,15 +4,15 @@ 解决方案: 打开配置文件 %USERPROFILE%/.ssh/config,在该配置文件中添加配置行: ServerAliveInterval 60 2. VSCode 搭配 Remote-SSH # 配置远程访问文件 %USERPROFILE%/.ssh/config: -密钥文件进行SSH连接 # Host aliyun HostName 11.11.11.11 User root IdentityFile ~/.ssh/aliyun_key 用户密码进行SSH连接 # Host ubuntu HostName 192."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/os/windows/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 操作系统 / Windows 使用姿势 +密钥文件进行SSH连接 # Host aliyun HostName 11.11.11.11 User root IdentityFile ~/.ssh/aliyun_key 用户密码进行SSH连接 # Host ubuntu HostName 192."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/os/windows/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 操作系统 / Windows 使用姿势 Windows 使用姿势 # 0. 激活 windows # 以管理员身份运行命令行,输入以下三行命令: slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX # 等待弹窗出现,点击确定之后,再继续执行下一行命令 slmgr /skms kms.loli.best # slmgr /skms kms.03k.org # 同样需要等待弹窗出现,点击确定之后,再继续执行 slmgr /ato # 正常情况下应该会出现激活成功的弹窗 1. Windows Terminal SSH 连接超时自动断开 # 使用 Windows Terminal SSH 连接 linux 服务器,每过一段时间后,就会自动断开。 解决方案: 打开配置文件 %USERPROFILE%/.ssh/config,在该配置文件中添加配置行: ServerAliveInterval 60 2. VSCode 搭配 Remote-SSH # 配置远程访问文件 %USERPROFILE%/.ssh/config: -密钥文件进行SSH连接 # Host aliyun HostName 11.11.11.11 User root IdentityFile ~/.ssh/aliyun_key 用户密码进行SSH连接 # Host ubuntu HostName 192."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="os"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Windows | 🍁 秋河落叶</title> +密钥文件进行SSH连接 # Host aliyun HostName 11.11.11.11 User root IdentityFile ~/.ssh/aliyun_key 用户密码进行SSH连接 # Host ubuntu HostName 192."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="os"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Windows | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/os/windows/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Windows</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#0-激活-windows>0. 激活 windows</a></li><li><a href=#1-windows-terminal-ssh-连接超时自动断开>1. Windows Terminal SSH 连接超时自动断开</a></li><li><a href=#2-vscode-搭配-remote-ssh>2. VSCode 搭配 Remote-SSH</a><ul><li><a href=#密钥文件进行ssh连接>密钥文件进行SSH连接</a></li><li><a href=#用户密码进行ssh连接>用户密码进行SSH连接</a></li></ul></li><li><a href=#3-powershell-命令>3. Powershell 命令</a></li><li><a href=#4-安装-windows11-虚拟机>4. 安装 windows11 虚拟机</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/os/>操作系统</a> / Windows 使用姿势</p><h1 id=windows-使用姿势>Windows 使用姿势 diff --git a/reading/index.html b/reading/index.html index 7bd255bd..96003e4e 100644 --- a/reading/index.html +++ b/reading/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / 阅读 阅读 # 云原生应用开发:Operator原理与实践 我的第一本算法书 -深入理解计算机网络.md"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/reading/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 阅读 +深入理解计算机网络.md"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/reading/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 阅读 阅读 # 云原生应用开发:Operator原理与实践 我的第一本算法书 -深入理解计算机网络.md"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Reading | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/reading/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/reading/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +深入理解计算机网络.md"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Reading | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/reading/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/reading/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Reading</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / 阅读</p><h1 id=阅读>阅读 <a class=anchor href=#%e9%98%85%e8%af%bb>#</a></h1><p><a href=/reading/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91Operator%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5/>云原生应用开发:Operator原理与实践</a></p><p><a href=/reading/%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E6%9C%AC%E7%AE%97%E6%B3%95%E4%B9%A6/>我的第一本算法书</a></p><p><a href=/reading/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/>深入理解计算机网络.md</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/reading/index.xml b/reading/index.xml index c6318cab..cc5e22b8 100644 --- a/reading/index.xml +++ b/reading/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/reading/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/reading/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/reading/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91Operator%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/reading/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91Operator%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5/</guid><description>🏠 首页 / 阅读 / 云原生应用开发:Operator原理与实践 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/reading/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/reading/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/reading/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91Operator%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/reading/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91Operator%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5/</guid><description>🏠 首页 / 阅读 / 云原生应用开发:Operator原理与实践 云原生应用开发:Operator原理与实践 # 2. Operator原理 # 2.2 client-go原理 # client-go主要用在Kubernetes的Controller中,包括内置Controller(如kube-controller-manager)和CRD控制器; 实现对各类K8s API资源的增删改查操作; 包含Reflector,Informer,Indexr等组件。 diff --git "a/reading/\344\272\221\345\216\237\347\224\237\345\272\224\347\224\250\345\274\200\345\217\221Operator\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265/index.html" "b/reading/\344\272\221\345\216\237\347\224\237\345\272\224\347\224\250\345\274\200\345\217\221Operator\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265/index.html" index fe8ca84a..57335a05 100644 --- "a/reading/\344\272\221\345\216\237\347\224\237\345\272\224\347\224\250\345\274\200\345\217\221Operator\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265/index.html" +++ "b/reading/\344\272\221\345\216\237\347\224\237\345\272\224\347\224\250\345\274\200\345\217\221Operator\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265/index.html" @@ -7,7 +7,7 @@ 使用: client-go库抽象封装了与k8s reset api的交互,便于开发者基于k8s做二次开发。利用client-go操作k8s资源的流程基本如下: 通过kubeconfig信息构造Config实例,该实例记录了集群证书,k8s apiserver地址等信息; 根据Config实例携带的信息构建特定的客户端(clientset,dynamicset等); 利用客户端向k8s apiserver发起请求,操作k8s资源。 以下是使用 client-go 获取 pod 的代码清单: -func main() { var kubernetes *string if home := homeDir(); home != "" { kubeconfig := flag.String( "kubeconfig", filePath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file", ) } else { kubeconfig := flag.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/reading/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91Operator%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / 阅读 / 云原生应用开发:Operator原理与实践 +func main() { var kubernetes *string if home := homeDir(); home != "" { kubeconfig := flag.String( "kubeconfig", filePath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file", ) } else { kubeconfig := flag.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/reading/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91Operator%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / 阅读 / 云原生应用开发:Operator原理与实践 云原生应用开发:Operator原理与实践 # 2. Operator原理 # 2.2 client-go原理 # client-go主要用在Kubernetes的Controller中,包括内置Controller(如kube-controller-manager)和CRD控制器; 实现对各类K8s API资源的增删改查操作; 包含Reflector,Informer,Indexr等组件。 @@ -16,9 +16,9 @@ 使用: client-go库抽象封装了与k8s reset api的交互,便于开发者基于k8s做二次开发。利用client-go操作k8s资源的流程基本如下: 通过kubeconfig信息构造Config实例,该实例记录了集群证书,k8s apiserver地址等信息; 根据Config实例携带的信息构建特定的客户端(clientset,dynamicset等); 利用客户端向k8s apiserver发起请求,操作k8s资源。 以下是使用 client-go 获取 pod 的代码清单: -func main() { var kubernetes *string if home := homeDir(); home != "" { kubeconfig := flag.String( "kubeconfig", filePath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file", ) } else { kubeconfig := flag.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="reading"><title>云原生应用开发: Operator原理与实践 | 🍁 秋河落叶</title> +func main() { var kubernetes *string if home := homeDir(); home != "" { kubeconfig := flag.String( "kubeconfig", filePath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file", ) } else { kubeconfig := flag.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="reading"><title>云原生应用开发: Operator原理与实践 | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/reading/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91Operator%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>云原生应用开发: Operator原理与实践</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#2-operator原理>2. Operator原理</a><ul><li><a href=#22-client-go原理>2.2 client-go原理</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/reading/>阅读</a> / 云原生应用开发:Operator原理与实践</p><h1 id=云原生应用开发operator原理与实践>云原生应用开发:Operator原理与实践 diff --git "a/reading/\346\210\221\347\232\204\347\254\254\344\270\200\346\234\254\347\256\227\346\263\225\344\271\246/index.html" "b/reading/\346\210\221\347\232\204\347\254\254\344\270\200\346\234\254\347\256\227\346\263\225\344\271\246/index.html" index 813b14a1..0c694509 100644 --- "a/reading/\346\210\221\347\232\204\347\254\254\344\270\200\346\234\254\347\256\227\346\263\225\344\271\246/index.html" +++ "b/reading/\346\210\221\347\232\204\347\254\254\344\270\200\346\234\254\347\256\227\346\263\225\344\271\246/index.html" @@ -3,14 +3,14 @@ 1. 算法的基础知识 # 1.1 什么是算法 # 算法是计算机计算和解决问题的步骤。 选择排序: func selectionSort(nums []int) []int { for i := 0; i < len(nums); i++ { min := i for j := i + 1; j < len(nums); j++ { if nums[j] < nums[min] { min = j } } nums[i], nums[min] = nums[min], nums[i] } return nums } « 云原生应用开发:Operator原理与实践 -» 深入理解计算机网络.md"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/reading/%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E6%9C%AC%E7%AE%97%E6%B3%95%E4%B9%A6/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 阅读 / 我的第一本算法书 +» 深入理解计算机网络.md"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/reading/%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E6%9C%AC%E7%AE%97%E6%B3%95%E4%B9%A6/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 阅读 / 我的第一本算法书 我的第一本算法书 # 作者:石田保辉,宫崎修一 1. 算法的基础知识 # 1.1 什么是算法 # 算法是计算机计算和解决问题的步骤。 选择排序: func selectionSort(nums []int) []int { for i := 0; i < len(nums); i++ { min := i for j := i + 1; j < len(nums); j++ { if nums[j] < nums[min] { min = j } } nums[i], nums[min] = nums[min], nums[i] } return nums } « 云原生应用开发:Operator原理与实践 -» 深入理解计算机网络.md"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="reading"><title>我的第一本算法书 | 🍁 秋河落叶</title> +» 深入理解计算机网络.md"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="reading"><title>我的第一本算法书 | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/reading/%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E6%9C%AC%E7%AE%97%E6%B3%95%E4%B9%A6/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>我的第一本算法书</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#1-算法的基础知识>1. 算法的基础知识</a><ul><li><a href=#11-什么是算法>1.1 什么是算法</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/reading/>阅读</a> / 我的第一本算法书</p><h1 id=我的第一本算法书>我的第一本算法书 diff --git "a/reading/\346\267\261\345\205\245\347\220\206\350\247\243\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/index.html" "b/reading/\346\267\261\345\205\245\347\220\206\350\247\243\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/index.html" index c162890c..5baf261c 100644 --- "a/reading/\346\267\261\345\205\245\347\220\206\350\247\243\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/index.html" +++ "b/reading/\346\267\261\345\205\245\347\220\206\350\247\243\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/index.html" @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="🏠 首页 / 阅读 / 深入理解计算机网络.md 二进制数的四种表示方法 # 原码 # 二进制数第一位用来表示正负符号,0 表示 +,1 表示 -。 原码就是带正负符号的二进制数,例如,+3 原码为 00000011,-3 原码为 10000011。 原码表示方法中,0 有 +0 和 -0 表现形式。 反码 # 补码 # 原码在加减法运算中的不便, -移码 # « 我的第一本算法书"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/reading/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / 阅读 / 深入理解计算机网络.md +移码 # « 我的第一本算法书"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/reading/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / 阅读 / 深入理解计算机网络.md 二进制数的四种表示方法 # 原码 # 二进制数第一位用来表示正负符号,0 表示 +,1 表示 -。 原码就是带正负符号的二进制数,例如,+3 原码为 00000011,-3 原码为 10000011。 原码表示方法中,0 有 +0 和 -0 表现形式。 反码 # 补码 # 原码在加减法运算中的不便, -移码 # « 我的第一本算法书"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="reading"><title>深入理解计算机网络 | 🍁 秋河落叶</title> +移码 # « 我的第一本算法书"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="reading"><title>深入理解计算机网络 | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/reading/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>深入理解计算机网络</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><ul><li><a href=#二进制数的四种表示方法>二进制数的四种表示方法</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/reading/>阅读</a> / 深入理解计算机网络.md</p><h3 id=二进制数的四种表示方法>二进制数的四种表示方法 diff --git a/rust/cargo/index.html b/rust/cargo/index.html index 7ac8e0df..2f6cef87 100644 --- a/rust/cargo/index.html +++ b/rust/cargo/index.html @@ -4,15 +4,15 @@ 编译项目 # cargo build # 编译之后将在 target/debug 目录下生成可执行文件 # 可以通过以下命令运行 ./target/debug/hello-world 默认构建模式是 debug,里面包含了大量的符号和调试信息,优化级别不高。建议使用 relase 模式构建发布到生产环境。 release 模式构建花费的时间较长,但是构建出来的二进制文件则要精简很多。 cargo build --release 运行项目 # cargo run 追踪 panic 位置运行: -RUST_BACKTRACE=1 cargo run 创建类包 # cargo new --lib mylib 检测项目是否可以编译 # cargo check 安装可执行文件(更新) # cargo install --path ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/cargo/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Rust 编程 / Rust cargo 管理工具 +RUST_BACKTRACE=1 cargo run 创建类包 # cargo new --lib mylib 检测项目是否可以编译 # cargo check 安装可执行文件(更新) # cargo install --path ."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/cargo/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Rust 编程 / Rust cargo 管理工具 Rust cargo 管理工具 # cargo 是 Rust 的构建系统和包管理器。 创建项目 # cargo new hello-world cd hello-world 可以使用 cargo new --vcs git hello-world 创建项目并初始化 git 仓库,它将自动创建一个 .gitignore 文件。 编译项目 # cargo build # 编译之后将在 target/debug 目录下生成可执行文件 # 可以通过以下命令运行 ./target/debug/hello-world 默认构建模式是 debug,里面包含了大量的符号和调试信息,优化级别不高。建议使用 relase 模式构建发布到生产环境。 release 模式构建花费的时间较长,但是构建出来的二进制文件则要精简很多。 cargo build --release 运行项目 # cargo run 追踪 panic 位置运行: -RUST_BACKTRACE=1 cargo run 创建类包 # cargo new --lib mylib 检测项目是否可以编译 # cargo check 安装可执行文件(更新) # cargo install --path ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="rust"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Cargo | 🍁 秋河落叶</title> +RUST_BACKTRACE=1 cargo run 创建类包 # cargo new --lib mylib 检测项目是否可以编译 # cargo check 安装可执行文件(更新) # cargo install --path ."><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="rust"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Cargo | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/rust/cargo/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Cargo</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#创建项目>创建项目</a></li><li><a href=#编译项目>编译项目</a></li><li><a href=#运行项目>运行项目</a></li><li><a href=#创建类包>创建类包</a></li><li><a href=#检测项目是否可以编译>检测项目是否可以编译</a></li><li><a href=#安装可执行文件更新>安装可执行文件(更新)</a></li><li><a href=#卸载可执行文件>卸载可执行文件</a></li><li><a href=#发布项目>发布项目</a></li><li><a href=#添加依赖>添加依赖</a></li><li><a href=#更新依赖>更新依赖</a></li><li><a href=#移除依赖>移除依赖</a></li><li><a href=#清除编译>清除编译</a></li><li><a href=#生成文档>生成文档</a></li><li><a href=#测试>测试</a></li><li><a href=#workspace>workspace</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/rust/>Rust 编程</a> / Rust cargo 管理工具</p><h1 id=rust-cargo-管理工具>Rust cargo 管理工具 diff --git a/rust/dev-env-config/index.html b/rust/dev-env-config/index.html index 4ba198f1..6f7b209b 100644 --- a/rust/dev-env-config/index.html +++ b/rust/dev-env-config/index.html @@ -4,15 +4,15 @@ xcode-select --install Ubuntu 上通过运行以下命令可以获得 C 编译器: sudo apt install build-essential 更新 # rustup update 卸载 # rustup self uninstall 配置命令补全 # 第一种方式,zsh 添加 rust 插件: vim ~/.zshrc 找到 plugins 配置位置,追加 rust: -plugins=(... rust) 第二种方式:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/dev-env-config/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Rust 编程 / Rust 开发环境配置 +plugins=(... rust) 第二种方式:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/dev-env-config/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Rust 编程 / Rust 开发环境配置 Rust 开发环境配置 # 安装 # Linux & Mac: curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh 一些常用的 Rust 包依赖于 C 代码,因此可能需要额外安装 C 编译器,在 Mac 上通过运行以下命令可以获得 C 编译器: xcode-select --install Ubuntu 上通过运行以下命令可以获得 C 编译器: sudo apt install build-essential 更新 # rustup update 卸载 # rustup self uninstall 配置命令补全 # 第一种方式,zsh 添加 rust 插件: vim ~/.zshrc 找到 plugins 配置位置,追加 rust: -plugins=(... rust) 第二种方式:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="rust"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Dev Env Config | 🍁 秋河落叶</title> +plugins=(... rust) 第二种方式:"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="rust"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Dev Env Config | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/rust/dev-env-config/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Dev Env Config</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装>安装</a></li><li><a href=#更新>更新</a></li><li><a href=#卸载>卸载</a></li><li><a href=#配置命令补全>配置命令补全</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/rust/>Rust 编程</a> / Rust 开发环境配置</p><h1 id=rust-开发环境配置>Rust 开发环境配置 diff --git a/rust/getting-started/index.html b/rust/getting-started/index.html index c5d3b6b4..d44f06c2 100644 --- a/rust/getting-started/index.html +++ b/rust/getting-started/index.html @@ -6,7 +6,7 @@ fn main() { println!("Hello, World!"); } 要运行这个程序,使用 rustc 编译器: rustc main.rs && ./main 执行后,你应该看到输出 Hello, World!。 « Rust 开发环境配置 -» 查看根目录"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/getting-started/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Rust 编程 / Rust 入门 +» 查看根目录"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/getting-started/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Rust 编程 / Rust 入门 Rust 入门 # Rust 是一种系统编程语言,类似于 C 和 C++。它的设计目标是提供安全性和并发性,同时保持高性能。Rust 通过所有权系统来实现这些目标。 安装 Rust # MacOS,linux 或其他类 Unix 系统用户可以直接在终端中运行以下命令安装 Rust: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh Windows 用户可以在 Rust 官网 下载安装程序。 @@ -14,9 +14,9 @@ fn main() { println!("Hello, World!"); } 要运行这个程序,使用 rustc 编译器: rustc main.rs && ./main 执行后,你应该看到输出 Hello, World!。 « Rust 开发环境配置 -» 查看根目录"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="rust"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Getting Started | 🍁 秋河落叶</title> +» 查看根目录"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="rust"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Getting Started | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/rust/getting-started/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Getting Started</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#安装-rust>安装 Rust</a></li><li><a href=#hello-world>Hello, World</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/rust/>Rust 编程</a> / Rust 入门</p><h1 id=rust-入门>Rust 入门 diff --git a/rust/index.html b/rust/index.html index 2e15b738..5b588c67 100644 --- a/rust/index.html +++ b/rust/index.html @@ -4,15 +4,15 @@ Rust 入门 查看根目录 Rust VSCode 调试 -Rust WASM 编程"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content="🏠 首页 / Rust 编程 +Rust WASM 编程"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content="🏠 首页 / Rust 编程 Rust 编程 # Rust cargo 管理工具 Rust 开发环境配置 Rust 入门 查看根目录 Rust VSCode 调试 -Rust WASM 编程"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Rust | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/rust/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/rust/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/ class=active>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +Rust WASM 编程"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Rust | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/rust/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/rust/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/ class=active>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Rust</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / Rust 编程</p><h1 id=rust-编程>Rust 编程 <a class=anchor href=#rust-%e7%bc%96%e7%a8%8b>#</a></h1><p><a href=/rust/cargo/>Rust cargo 管理工具</a></p><p><a href=/rust/dev-env-config/>Rust 开发环境配置</a></p><p><a href=/rust/getting-started/>Rust 入门</a></p><p><a href=/rust/rust-programming/>查看根目录</a></p><p><a href=/rust/vscode-debugging/>Rust VSCode 调试</a></p><p><a href=/rust/wasm-programming/>Rust WASM 编程</a></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/poneding/blog/commit/5faa4f1be5d4525c49e513962394eae7c15fb6f2 title='最后修改者 poneding | 2024/06/13' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt> diff --git a/rust/index.xml b/rust/index.xml index 68181a93..39db5cbb 100644 --- a/rust/index.xml +++ b/rust/index.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🍁 秋河落叶</title><link>https://blog.poneding.com/rust/</link><description>Recent content on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/rust/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/rust/cargo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/rust/cargo/</guid><description>🏠 首页 / Rust 编程 / Rust cargo 管理工具 +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>秋河落叶</title><link>https://blog.poneding.com/rust/</link><description>Recent content on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/rust/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://blog.poneding.com/rust/cargo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.poneding.com/rust/cargo/</guid><description>🏠 首页 / Rust 编程 / Rust cargo 管理工具 Rust cargo 管理工具 # cargo 是 Rust 的构建系统和包管理器。 创建项目 # cargo new hello-world cd hello-world 可以使用 cargo new --vcs git hello-world 创建项目并初始化 git 仓库,它将自动创建一个 .gitignore 文件。 编译项目 # cargo build # 编译之后将在 target/debug 目录下生成可执行文件 # 可以通过以下命令运行 ./target/debug/hello-world 默认构建模式是 debug,里面包含了大量的符号和调试信息,优化级别不高。建议使用 relase 模式构建发布到生产环境。 diff --git a/rust/rust-programming/index.html b/rust/rust-programming/index.html index ca1b5041..c4f62816 100644 --- a/rust/rust-programming/index.html +++ b/rust/rust-programming/index.html @@ -4,15 +4,15 @@ &str:字符串切片 let s: &str = "Hello World!"; let s1 = s.to_string(); let s1 = String::from(s); let s2 = &s1[..]; let s2 = s1.as_ref(); Panic # 设置 RUST_BACKTRACE=1 环境变量值,可以追踪到 panic 位置,例如: « Rust 入门 -» Rust VSCode 调试'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/rust-programming/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Rust 编程 / 查看根目录 +» Rust VSCode 调试'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/rust-programming/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Rust 编程 / 查看根目录 Rust 编程 信息 # # 查看根目录 rustc --print sysroot # 二进制程序位置 $(rustc --print sysroot)/bin # 源码位置 $(rustc --print sysroot)/lib/rustlib/src/ String 与 &str # String:字符串 &str:字符串切片 let s: &str = "Hello World!"; let s1 = s.to_string(); let s1 = String::from(s); let s2 = &s1[..]; let s2 = s1.as_ref(); Panic # 设置 RUST_BACKTRACE=1 环境变量值,可以追踪到 panic 位置,例如: « Rust 入门 -» Rust VSCode 调试'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="rust"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Rust Programming | 🍁 秋河落叶</title> +» Rust VSCode 调试'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="rust"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Rust Programming | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/rust/rust-programming/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Rust Programming</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#信息>信息</a></li><li><a href=#string-与-str>String 与 &str</a></li><li><a href=#panic>Panic</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/rust/>Rust 编程</a> / 查看根目录</p><p>Rust 编程</p><h2 id=信息>信息 diff --git a/rust/vscode-debugging/index.html b/rust/vscode-debugging/index.html index bcaf05dd..e2c2a8cb 100644 --- a/rust/vscode-debugging/index.html +++ b/rust/vscode-debugging/index.html @@ -1,10 +1,10 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / Rust 编程 / Rust VSCode 调试 Rust VSCode 调试 # 1. 安装插件 # CodeLLDB rust-analyzer 2. 配置 # 项目根目录配置 .vscode/launch.json,调试运行时打开 main.rs 文件。 -{ "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug Rust Project", "cargo": { "args": [ "build", "--target-dir=${fileDirname}/../target", "--manifest-path=${fileDirname}/../Cargo.toml" ] }, "args": [], "cwd": "${workspaceFolder}" }, { "type": "lldb", "request": "launch", "name": "Debug Rust Unit Tests", "cargo": { "args": [ "test", "--no-run", "--target-dir=${fileDirname}/.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/vscode-debugging/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Rust 编程 / Rust VSCode 调试 +{ "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug Rust Project", "cargo": { "args": [ "build", "--target-dir=${fileDirname}/../target", "--manifest-path=${fileDirname}/../Cargo.toml" ] }, "args": [], "cwd": "${workspaceFolder}" }, { "type": "lldb", "request": "launch", "name": "Debug Rust Unit Tests", "cargo": { "args": [ "test", "--no-run", "--target-dir=${fileDirname}/.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/vscode-debugging/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Rust 编程 / Rust VSCode 调试 Rust VSCode 调试 # 1. 安装插件 # CodeLLDB rust-analyzer 2. 配置 # 项目根目录配置 .vscode/launch.json,调试运行时打开 main.rs 文件。 -{ "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug Rust Project", "cargo": { "args": [ "build", "--target-dir=${fileDirname}/../target", "--manifest-path=${fileDirname}/../Cargo.toml" ] }, "args": [], "cwd": "${workspaceFolder}" }, { "type": "lldb", "request": "launch", "name": "Debug Rust Unit Tests", "cargo": { "args": [ "test", "--no-run", "--target-dir=${fileDirname}/.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="rust"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Vscode Debugging | 🍁 秋河落叶</title> +{ "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug Rust Project", "cargo": { "args": [ "build", "--target-dir=${fileDirname}/../target", "--manifest-path=${fileDirname}/../Cargo.toml" ] }, "args": [], "cwd": "${workspaceFolder}" }, { "type": "lldb", "request": "launch", "name": "Debug Rust Unit Tests", "cargo": { "args": [ "test", "--no-run", "--target-dir=${fileDirname}/.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="rust"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Vscode Debugging | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/rust/vscode-debugging/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Vscode Debugging</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#1-安装插件>1. 安装插件</a></li><li><a href=#2-配置>2. 配置</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/rust/>Rust 编程</a> / Rust VSCode 调试</p><h1 id=rust-vscode-调试>Rust VSCode 调试 diff --git a/rust/wasm-programming/index.html b/rust/wasm-programming/index.html index 3653c994..5d6e7cc8 100644 --- a/rust/wasm-programming/index.html +++ b/rust/wasm-programming/index.html @@ -1,12 +1,12 @@ <!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='🏠 首页 / Rust 编程 / Rust WASM 编程 Rust WASM 编程 # 1. 初始化项目 # cargo new hello-wasm cd hello-wasm 2. 安装 wasm-pack # cargo install wasm-pack 3. 编写代码 # 编辑 src/main.rs 文件: // 使用 wasm-bindgen 在 Rust 与 JavaScript 之间通信 extern crate wasm_bindgen; use wasm_bindgen::prelude::*; #[wasm_bindgen] extern { pub fn alert(s: &str); } #[wasm_bindgen] pub fn greet(name: &str){ alert(&format!("Hello, {}!",name)); } 编辑 Cargo.toml 文件: -[package] name = "hello-wasm" version = "0.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/wasm-programming/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="🍁 秋河落叶"><meta property="og:description" content='🏠 首页 / Rust 编程 / Rust WASM 编程 +[package] name = "hello-wasm" version = "0.'><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/rust/wasm-programming/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="秋河落叶"><meta property="og:description" content='🏠 首页 / Rust 编程 / Rust WASM 编程 Rust WASM 编程 # 1. 初始化项目 # cargo new hello-wasm cd hello-wasm 2. 安装 wasm-pack # cargo install wasm-pack 3. 编写代码 # 编辑 src/main.rs 文件: // 使用 wasm-bindgen 在 Rust 与 JavaScript 之间通信 extern crate wasm_bindgen; use wasm_bindgen::prelude::*; #[wasm_bindgen] extern { pub fn alert(s: &str); } #[wasm_bindgen] pub fn greet(name: &str){ alert(&format!("Hello, {}!",name)); } 编辑 Cargo.toml 文件: -[package] name = "hello-wasm" version = "0.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="rust"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Wasm Programming | 🍁 秋河落叶</title> +[package] name = "hello-wasm" version = "0.'><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="rust"><meta property="article:modified_time" content="2024-06-13T15:37:18+08:00"><title>Wasm Programming | 秋河落叶</title> <link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/rust/wasm-programming/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Wasm Programming</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#1-初始化项目>1. 初始化项目</a></li><li><a href=#2-安装-wasm-pack>2. 安装 wasm-pack</a></li><li><a href=#3-编写代码>3. 编写代码</a></li><li><a href=#4-构建项目>4. 构建项目</a></li></ul></nav></aside></header><article class="markdown book-article"><p><a href=/>🏠 首页</a> / <a href=/rust/>Rust 编程</a> / Rust WASM 编程</p><h1 id=rust-wasm-编程>Rust WASM 编程 diff --git a/sitemap.xml b/sitemap.xml index 41ef837e..bf4a3c69 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://blog.poneding.com/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/algo/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/</loc></url><url><loc>https://blog.poneding.com/algo/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/</loc></url><url><loc>https://blog.poneding.com/aws/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/build-eks-cluster/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/cluster-autoscaler/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/create-eks-cluster/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/eks-config-alb-ingress/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/eks-details/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/eks-intergrate-gitlab-auto-release-01/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/eks-intergrate-gitlab-auto-release-02/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/eks-use-efs/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/gitlab-eks/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/k8s-deploy-kong/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/k8s-deploy-konga/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/k8s-deploy-postgres/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/terraform-remanage-resource/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cka/001/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cka/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cka/prepare-cka/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cka/tasks/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cs/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cs/internet/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cs/networking/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cs/virtual-memory/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/dapr/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/dapr/dapr/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/design-pattern/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/design-pattern/cicd/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/agile/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/ansible/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/bule-green-rollback-gray/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/chaos-engineering/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/commercial-canvas/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/grafana-monite-service-with-5xx/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/grafana-monite-service/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/grafana/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/jeager/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/nginx/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/container-diff/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/dind/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-buildx/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-commands/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-compose-practice/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-container-install-pfx-cert/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-copy-between-host-container/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-manifest-build-cross-arch-image/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-run-link/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-visiable-tool-kitematic/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/dockerfile/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/linux-container/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/non-root-account-get-docker-permission/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/some-apps/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/ebpf/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/ebpf/ebpf/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/front-end/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/front-end/build-blog-site/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/front-end/pinia/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/front-end/vitepress/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/front-end/vue3/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/common-usage/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/git-secret/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/github-action-best-practice/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/github-host-helm-chart/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/github-hosting-helm-reop/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/github/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/gitlab-intergrate-k8s/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/gitlab-upgrade-cross-version/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/multi-github-account-management/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/simplest-git-server/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/dev-env-config/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/function-optional-pattern/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-cert-management/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-cross-complie/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-gen-cert/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-linkname/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-list-to-tree/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-mtls/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-publish-package-01/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-publish-package-02/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-solid/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-stdlib/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-testing/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/gopkg-errors/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/goreleaser/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/mac-appl-silicon-cross-compile-cgo/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/pprof/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/ssh-keygen-with-go/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/graphql/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/graphql/graphql/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/grpc/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/grpc/gRPC/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/aws-acm-tls-management/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/installation/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/istio-auth-policy/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/istio-canary-deploy/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/istio-cors/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/istio-timeout/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/istio-white-manifest/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/Istio/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/tls-transform/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/traffic-management/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/anti-affinity-improves-service-availability/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/apiserver-builder/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/apiserver/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/binary-build-k8s-01-prepare-nodes/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/binary-build-k8s-02-deploy-etcd/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/binary-build-k8s-03-deploy-master/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/binary-build-k8s-04-deploy-worker/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/cloud-native-understood/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/cluster-federation/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/configmap-understood/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/delete-es-log-index-scheduler/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/delete-k8s-resource-force/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/gateway-api-practice/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/helm-k8s-package-management-tool/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/hpa-usage/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/http-call-k8s-apiserver/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/informer/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/ingress-gray-deploy/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/installation/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k3s/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-deploy-coredns/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-deploy-dashboard/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-deploy-efk/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-deploy-prometheus-grafana/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-deploy-zookeeper-kafka/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-dev-01-api-concept/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-dev-02-crd/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-dev-50-extend-kube-scheduler/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-get-started/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubeadm-install-k8s-docker/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubeadm-install-k8s/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubeadm-upgrade/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubebuilder-inaction/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubectl/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubernetes-best-practice/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubernetes-dashboard/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubernetes-naming-constraints/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubernetes/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubevirt-create-windows-vm/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubevirt-practice/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kustomize/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/liveness-readiness-probe/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/local-storageclass/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/metallb/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/nfs-as-pvc/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/pod-understood/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/prgramming-kubernetes/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/prometheus-collect-kong-metrics/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/prometheus/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/pvc-expansion/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/secret-understood/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/service-understood/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/telepresence/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/terminate-pod-gracefully/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/terraform/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/velero-minio-backup-restore-volume/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/volume-understood/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/vpa/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/certbot-auto-gen-cert/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/history-with-date/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/linux-commands/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/linux-common-commands/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/linux-enable-crontab-log/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/linux-secure-login/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/shell-command-interval-character/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/shell/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/ssh-tunnel-connect-middleware/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/tee-keep-stderr/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/vim-common-commands/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/middleware/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/middleware/elasticsearch/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/middleware/mongodb/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/middleware/mysql/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/middleware/postgres/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/middleware/redis/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/os/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/os/macos/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/os/ohmyzsh/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/os/openssl/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/os/ubuntu/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/os/windows/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/reading/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/reading/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91Operator%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5/</loc></url><url><loc>https://blog.poneding.com/reading/%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E6%9C%AC%E7%AE%97%E6%B3%95%E4%B9%A6/</loc></url><url><loc>https://blog.poneding.com/reading/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/</loc></url><url><loc>https://blog.poneding.com/rust/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/rust/cargo/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/rust/dev-env-config/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/rust/getting-started/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/rust/rust-programming/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/rust/vscode-debugging/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/rust/wasm-programming/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/categories/</loc></url><url><loc>https://blog.poneding.com/tags/</loc></url></urlset> \ No newline at end of file +<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://blog.poneding.com/</loc><lastmod>2024-06-13T17:01:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/algo/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/algo/%E5%A0%86%E6%8E%92%E5%BA%8F/</loc></url><url><loc>https://blog.poneding.com/algo/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/</loc></url><url><loc>https://blog.poneding.com/aws/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/build-eks-cluster/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/cluster-autoscaler/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/create-eks-cluster/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/eks-config-alb-ingress/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/eks-details/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/eks-intergrate-gitlab-auto-release-01/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/eks-intergrate-gitlab-auto-release-02/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/eks-use-efs/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/gitlab-eks/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/k8s-deploy-kong/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/k8s-deploy-konga/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/k8s-deploy-postgres/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/aws/terraform-remanage-resource/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cka/001/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cka/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cka/prepare-cka/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cka/tasks/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cs/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cs/internet/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cs/networking/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/cs/virtual-memory/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/dapr/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/dapr/dapr/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/design-pattern/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/design-pattern/cicd/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/agile/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/ansible/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/bule-green-rollback-gray/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/chaos-engineering/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/commercial-canvas/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/grafana-monite-service-with-5xx/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/grafana-monite-service/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/grafana/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/jeager/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/devops/nginx/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/container-diff/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/dind/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-buildx/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-commands/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-compose-practice/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-container-install-pfx-cert/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-copy-between-host-container/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-manifest-build-cross-arch-image/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-run-link/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/docker-visiable-tool-kitematic/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/dockerfile/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/linux-container/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/non-root-account-get-docker-permission/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/docker/some-apps/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/ebpf/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/ebpf/ebpf/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/front-end/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/front-end/build-blog-site/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/front-end/pinia/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/front-end/vitepress/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/front-end/vue3/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/common-usage/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/git-secret/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/github-action-best-practice/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/github-host-helm-chart/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/github-hosting-helm-reop/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/github/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/gitlab-intergrate-k8s/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/gitlab-upgrade-cross-version/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/multi-github-account-management/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/git/simplest-git-server/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/dev-env-config/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/function-optional-pattern/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-cert-management/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-cross-complie/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-gen-cert/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-linkname/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-list-to-tree/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-mtls/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-publish-package-01/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-publish-package-02/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-solid/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-stdlib/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go-testing/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/go/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/gopkg-errors/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/goreleaser/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/mac-appl-silicon-cross-compile-cgo/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/pprof/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/go/ssh-keygen-with-go/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/graphql/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/graphql/graphql/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/grpc/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/grpc/gRPC/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/aws-acm-tls-management/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/installation/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/istio-auth-policy/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/istio-canary-deploy/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/istio-cors/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/istio-timeout/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/istio-white-manifest/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/Istio/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/tls-transform/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/istio/traffic-management/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/anti-affinity-improves-service-availability/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/apiserver-builder/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/apiserver/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/binary-build-k8s-01-prepare-nodes/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/binary-build-k8s-02-deploy-etcd/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/binary-build-k8s-03-deploy-master/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/binary-build-k8s-04-deploy-worker/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/cloud-native-understood/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/cluster-federation/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/configmap-understood/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/delete-es-log-index-scheduler/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/delete-k8s-resource-force/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/gateway-api-practice/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/helm-k8s-package-management-tool/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/hpa-usage/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/http-call-k8s-apiserver/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/informer/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/ingress-gray-deploy/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/installation/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k3s/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-deploy-coredns/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-deploy-dashboard/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-deploy-efk/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-deploy-prometheus-grafana/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-deploy-zookeeper-kafka/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-dev-01-api-concept/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-dev-02-crd/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-dev-50-extend-kube-scheduler/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/k8s-get-started/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubeadm-install-k8s-docker/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubeadm-install-k8s/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubeadm-upgrade/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubebuilder-inaction/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubectl/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubernetes-best-practice/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubernetes-dashboard/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubernetes-naming-constraints/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubernetes/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubevirt-create-windows-vm/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kubevirt-practice/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/kustomize/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/liveness-readiness-probe/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/local-storageclass/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/metallb/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/nfs-as-pvc/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/pod-understood/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/prgramming-kubernetes/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/prometheus-collect-kong-metrics/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/prometheus/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/pvc-expansion/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/secret-understood/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/service-understood/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/telepresence/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/terminate-pod-gracefully/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/terraform/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/velero-minio-backup-restore-volume/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/volume-understood/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/kubernetes/vpa/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/certbot-auto-gen-cert/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/history-with-date/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/linux-commands/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/linux-common-commands/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/linux-enable-crontab-log/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/linux-secure-login/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/shell-command-interval-character/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/shell/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/ssh-tunnel-connect-middleware/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/tee-keep-stderr/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/linux/vim-common-commands/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/middleware/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/middleware/elasticsearch/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/middleware/mongodb/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/middleware/mysql/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/middleware/postgres/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/middleware/redis/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/os/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/os/macos/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/os/ohmyzsh/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/os/openssl/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/os/ubuntu/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/os/windows/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/reading/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/reading/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91Operator%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5/</loc></url><url><loc>https://blog.poneding.com/reading/%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E6%9C%AC%E7%AE%97%E6%B3%95%E4%B9%A6/</loc></url><url><loc>https://blog.poneding.com/reading/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/</loc></url><url><loc>https://blog.poneding.com/rust/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/rust/cargo/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/rust/dev-env-config/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/rust/getting-started/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/rust/rust-programming/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/rust/vscode-debugging/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/rust/wasm-programming/</loc><lastmod>2024-06-13T15:37:18+08:00</lastmod></url><url><loc>https://blog.poneding.com/categories/</loc></url><url><loc>https://blog.poneding.com/tags/</loc></url></urlset> \ No newline at end of file diff --git a/tags/index.html b/tags/index.html index d6b829b3..c2a3a39f 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1,5 +1,5 @@ -<!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/tags/"><meta property="og:site_name" content="🍁 秋河落叶"><meta property="og:title" content="Tags"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Tags | 🍁 秋河落叶</title> -<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/tags/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/tags/index.xml title="🍁 秋河落叶"><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> -<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>🍁 秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><ul><li><a href=/><strong>🏠 首页</strong></a></li></ul><hr><ul><li><strong>📌 置顶</strong><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🔗 GitHub</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> +<!doctype html><html lang=cn dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://blog.poneding.com/tags/"><meta property="og:site_name" content="秋河落叶"><meta property="og:title" content="Tags"><meta property="og:locale" content="cn"><meta property="og:type" content="website"><title>Tags | 秋河落叶</title> +<link rel=manifest href=/manifest.json><link rel=icon href=/logo.png><link rel=canonical href=https://blog.poneding.com/tags/><link rel=stylesheet href=/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css integrity="sha256-SWSQOoIqessQ2sbRq1JIM8l/tfmbFBl2vLikfVOb6cA=" crossorigin=anonymous><script defer src=/fuse.min.js></script><script defer src=/cn.search.min.e455a84312850374a504e30c4b1d27589df914ed87d8397c49c9b6148a70a882.js integrity="sha256-5FWoQxKFA3SlBOMMSx0nWJ35FO2H2Dl8Scm2FIpwqII=" crossorigin=anonymous></script><script defer src=/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk=" crossorigin=anonymous></script><link rel=alternate type=application/rss+xml href=https://blog.poneding.com/tags/index.xml title=秋河落叶><link rel=stylesheet href=/css/syntax.css></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control> +<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo><span>秋河落叶</span></a></h2><div class="book-search hidden"><input type=text id=book-search-input placeholder=搜索 aria-label=搜索 maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><script>document.querySelector(".book-search").classList.remove("hidden")</script><p>🦉 集中起来的意志可以击穿顽石。</p><hr><ul><li><p><a href=/><strong>🏠 首页</strong></a></p></li><li><p><strong>📌 置顶文章</strong></p><ul><li><a href=/git/common-usage/>Git 常用</a></li><li><a href=/kubernetes/kubeadm-install-k8s-docker/>安装 Kubernetes (Docker)</a></li></ul></li><li><p><strong>📌 置顶分类</strong></p><ul><li><a href=/go/>Golang 编程</a></li><li><a href=/kubernetes/>Kubernetes</a></li><li><a href=/rust/>Rust 编程</a></li><li><a href=/git/>Git</a></li></ul></li></ul><hr><ul><li><strong>🗃️ 开源项目</strong><ul><li><a href=https://github.com/ketches/registry-proxy>registry-proxy</a></li><li><a href=https://github.com/poneding/mdi>mdi</a></li></ul></li></ul><hr><ul><li><a href=https://github.com/poneding target=_blank rel=noopener>🐙 GitHub</a></li><li><a href=mailto:poneding@gmail.com target=_blank rel=noopener>📬 邮箱</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu> </label><strong>Tags</strong> <label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav><ul><li class=book-section-flat><strong>Categories</strong><ul></ul></li><li class=book-section-flat><strong>Tags</strong><ul></ul></li></ul></nav></aside></header><footer class=book-footer><div class="flex flex-wrap justify-between"></div><script>(function(){function e(e){const t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}document.querySelectorAll("pre code").forEach(t=>{t.addEventListener("click",function(){if(window.getSelection().toString())return;e(t.parentElement),navigator.clipboard&&navigator.clipboard.writeText(t.parentElement.textContent)})})})()</script></footer><label for=menu-control class="hidden book-menu-overlay"></label></div><aside class=book-toc><div class=book-toc-content><nav><ul><li class=book-section-flat><strong>Categories</strong><ul></ul></li><li class=book-section-flat><strong>Tags</strong><ul></ul></li></ul></nav></div></aside></main></body></html> \ No newline at end of file diff --git a/tags/index.xml b/tags/index.xml index ff314cb1..9d24edc3 100644 --- a/tags/index.xml +++ b/tags/index.xml @@ -1 +1 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tags on 🍁 秋河落叶</title><link>https://blog.poneding.com/tags/</link><description>Recent content in Tags on 🍁 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/tags/index.xml" rel="self" type="application/rss+xml"/></channel></rss> \ No newline at end of file +<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tags on 秋河落叶</title><link>https://blog.poneding.com/tags/</link><description>Recent content in Tags on 秋河落叶</description><generator>Hugo</generator><language>cn</language><atom:link href="https://blog.poneding.com/tags/index.xml" rel="self" type="application/rss+xml"/></channel></rss> \ No newline at end of file