diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/1.\345\256\211\350\243\205kubectl/install.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/1.\345\256\211\350\243\205kubectl/install.md" index b0490df55f4480d00e5f95a83255c74f24a3203f..82af02106c6192fd0a09dd3027884f5e81577757 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/1.\345\256\211\350\243\205kubectl/install.md" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/1.\345\256\211\350\243\205kubectl/install.md" @@ -1,6 +1,7 @@ # 安装 kubectl kubectl 是用来与 Kubernetes 集群通讯的命令行工具。通过 Kubectl 可以在 Kubernetes 集群上完成如下操作: + * 部署和管理应用 * 查看资源信息 * 删除和更新组件 @@ -14,11 +15,13 @@ kubectl 适配了不同操作系统不同指令架构的安装版本 以在 MacOS 上安装 Kebuctl 为例,执行命令: 针对 Intel 芯片: + ```bash curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl" ``` 针对 Apple 芯片: + ```bash curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl" ``` diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_deployment.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_deployment.md" index 7834cee011e195033d9fb88c6f8a65109c620c10..c23af81e2f6f3c7745146626743147e2f6794bb0 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_deployment.md" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_deployment.md" @@ -40,7 +40,8 @@ spec: - containerPort: 1024 ``` -通过一组操作来部署和查看状态 +通过一组操作来部署和查看状态: + * 使用命令 `kubectl create -f k8s.deployment.yaml` 部署到 k8s 集群,“部署” 本身被当一种资源创建过程 * 使用命令 `kubectl get deployments` 查看部署情况 * 使用命令`kubectl rollout status deployment/cloud-native-hello-py`查看状态。 diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/rs_pod.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/rs_pod.md" index 88b095d9419eebee346272d8095a38ec15d78ec5..a52e747f1fe4e0da5b09d41682c03fc5c152b86d 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/rs_pod.md" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/rs_pod.md" @@ -16,6 +16,7 @@ Pod是一个或多个容器的组合,这些容器共享存储、网络和命 ReplicaSet 的信息解释: + * NAME:ReplicaSet 名字 * DESIRED:需要的 pod 副本个数 * CURRENT:当前运行的 pod 副本个数 @@ -23,6 +24,7 @@ ReplicaSet 的信息解释: * AGE:运行开始到现在的时间 Pod的列信息大同小异: + * NAME: 名字 * READY: 就绪状态 * STATUS: 运行状态 diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/3.\345\256\271\345\231\250\347\274\226\346\216\222(\347\224\237\344\272\247\347\216\257\345\242\203 k8s)/1.kubelet,kubectl,kubeadm\344\270\211\344\273\266\345\245\227/introduce.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/3.\345\256\271\345\231\250\347\274\226\346\216\222(\347\224\237\344\272\247\347\216\257\345\242\203 k8s)/1.kubelet,kubectl,kubeadm\344\270\211\344\273\266\345\245\227/introduce.md" index 4be5f8e841507f3981f0bf9e359856ad6ecfcbfd..6dcb01f78ccd8c4973788450d74f14803503ee80 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/3.\345\256\271\345\231\250\347\274\226\346\216\222(\347\224\237\344\272\247\347\216\257\345\242\203 k8s)/1.kubelet,kubectl,kubeadm\344\270\211\344\273\266\345\245\227/introduce.md" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/3.\345\256\271\345\231\250\347\274\226\346\216\222(\347\224\237\344\272\247\347\216\257\345\242\203 k8s)/1.kubelet,kubectl,kubeadm\344\270\211\344\273\266\345\245\227/introduce.md" @@ -2,7 +2,8 @@ 在生产环境上,例如 centos linux系统上,使用 kubelet, kubectl, kubeadm 三件套可以部署 k8s 集群。 -cenos 上安装 k8s 步骤如下 +cenos 上安装 k8s 步骤如下: + * 安装 docker * 安装 kubelet, kubectl, kubeadm * 使用 kubeadm 初始化集群 diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/3.\345\256\271\345\231\250\347\274\226\346\216\222(\347\224\237\344\272\247\347\216\257\345\242\203 k8s)/2.k8s\345\237\272\347\241\200\347\273\204\344\273\266/introduce.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/3.\345\256\271\345\231\250\347\274\226\346\216\222(\347\224\237\344\272\247\347\216\257\345\242\203 k8s)/2.k8s\345\237\272\347\241\200\347\273\204\344\273\266/introduce.md" index de51cb12f5eed743e9332c75156e6741bd6527d4..adc9b3ca0ae4395ed6be482988f16dfcab14239b 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/3.\345\256\271\345\231\250\347\274\226\346\216\222(\347\224\237\344\272\247\347\216\257\345\242\203 k8s)/2.k8s\345\237\272\347\241\200\347\273\204\344\273\266/introduce.md" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/3.\345\256\271\345\231\250\347\274\226\346\216\222(\347\224\237\344\272\247\347\216\257\345\242\203 k8s)/2.k8s\345\237\272\347\241\200\347\273\204\344\273\266/introduce.md" @@ -1,6 +1,7 @@ # k8s 基础组件介绍 到目前为止,我们从 k8s 命令行安装和操作的角度理解到了 k8s 的很多基本概念: + * 容器(docker)里可以跑代码 * pod 可以管理容器(docker) * ReplicaSet 可以管理多 pod @@ -9,11 +10,13 @@ * k8s的集群节点分 control-plane 和 worker 两种节点 我们也掌握了安装 k8s 的概念 + * kubectl 可以用来和 k8s 集群通讯,是 k8s 的命令行客户端 * 使用 minikube/kind 可以创建学习环境 k8s 集群 * 使用 kubeadm 可以创建生产环境 k8s 现在,我们简要介绍下 k8s 的核心组件 + * etcd : 实现了raft分布式一致性协议的元数据存储 * apiserver: 提供了元数据读写 etcd 的api * Controller Manager : 集群内部的控制管理中心 diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/3.\345\256\271\345\231\250\347\274\226\346\216\222(\347\224\237\344\272\247\347\216\257\345\242\203 k8s)/3.k8s\350\256\276\350\256\241\347\220\206\345\277\265/introduce.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/3.\345\256\271\345\231\250\347\274\226\346\216\222(\347\224\237\344\272\247\347\216\257\345\242\203 k8s)/3.k8s\350\256\276\350\256\241\347\220\206\345\277\265/introduce.md" index 1611dadd3e96b192bf84a4de5b2742a3d65618db..07d461f8545230df9c8cc03657a6e3f351053bad 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/3.\345\256\271\345\231\250\347\274\226\346\216\222(\347\224\237\344\272\247\347\216\257\345\242\203 k8s)/3.k8s\350\256\276\350\256\241\347\220\206\345\277\265/introduce.md" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/3.\345\256\271\345\231\250\347\274\226\346\216\222(\347\224\237\344\272\247\347\216\257\345\242\203 k8s)/3.k8s\350\256\276\350\256\241\347\220\206\345\277\265/introduce.md" @@ -1,14 +1,15 @@ # k8s 设计理念 以下关于k8s设计说法正确的是? -a. 所有API应该是声明式的 -b. API对象是彼此互补而且可组合的 -c. 高层API以操作意图为基础设计 -d. 低层API根据高层API的控制需要设计 -e. 尽量避免简单封装,不要有在外部API无法显式知道的内部隐藏的机制 -f. API操作复杂度与对象数量成正比 -g. API对象状态不能依赖于网络连接状态 -h. 尽量避免让操作机制依赖于全局状态,因为在分布式系统中要保证全局状态的同步是非常困难的 + +1. 所有API应该是声明式的 +2. API对象是彼此互补而且可组合的 +3. 高层API以操作意图为基础设计 +4. 低层API根据高层API的控制需要设计 +5. 尽量避免简单封装,不要有在外部API无法显式知道的内部隐藏的机制 +6. API操作复杂度与对象数量成正比 +7. API对象状态不能依赖于网络连接状态 +8. 尽量避免让操作机制依赖于全局状态,因为在分布式系统中要保证全局状态的同步是非常困难的 ## 答案 @@ -18,12 +19,12 @@ h. 尽量避免让操作机制依赖于全局状态,因为在分布式系统 ### A -b,c,d,e,f,g,h +2,3,4,5,6,7 ### B -a,b,c,d,e,f,g +1,2,3,4,5 ### C -a,b,c,d,e,f,g,h +1,2,3,5,8 diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/install.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/install.md" index d9708abd6995600809025b93876ab7e9961536f7..77715a05be2620a39d427a354449ed1fc42c8e0f 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/install.md" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/install.md" @@ -1,13 +1,16 @@ # 安装 helm -Linux系统上有包管理软件 +Linux系统上有包管理软件: + * 例如 centos 上有 yum * 例如 ubuntu 上有 apt-get -Mac系统上有包管理软件 +Mac系统上有包管理软件: + * 例如 brew -Windows 上也有可用的包管理软件 +Windows 上也有可用的包管理软件: + * 例如 scoop * 例如 choco diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/2.helm\344\270\211\345\244\247\346\246\202\345\277\265/concept.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/2.helm\344\270\211\345\244\247\346\246\202\345\277\265/concept.md" index 3c6506ef34bf841bbd2ed31aebc2d4d2f207b9e7..49d4cdbffccf2a61cf7ff64868bbe669b4a9484a 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/2.helm\344\270\211\345\244\247\346\246\202\345\277\265/concept.md" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/2.helm\344\270\211\345\244\247\346\246\202\345\277\265/concept.md" @@ -1,6 +1,7 @@ # helm三大概念(Chart、Repository、Release) -helm 通过三大概念来管理 k8s 上的包 +helm 通过三大概念来管理 k8s 上的包: + * Chart:Chart 代表着 helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。 * Repository:是 chart 的存储库。例如:https://charts.bitnami.com/bitnami * Release:Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该chart两次。每一个数据库都会拥有它自己的 release 和 release name。 diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install2.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install2.md" index fe5477cbe1c750c5aa2c2caaba4af9556fa90993..3682463c08fd0d84f939278fa4aec96b040c79b3 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install2.md" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install2.md" @@ -7,11 +7,13 @@ helm repo add istio https://istio-release.storage.googleapis.com/charts ``` 其次,创建一个k8s namespace: + ```bash kubectl create namespace istio-system ``` -接着,安装istio到k8s集群 +接着,安装istio到k8s集群: + ```bash helm install istio-base istio/base -n istio-system ``` diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.md" index bcc23f928f4ce79968c9b83463eea685dd51695a..cb850c34487feb915f169d80d33157b33c55efd0 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.md" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.md" @@ -2,11 +2,13 @@ Terraform 是一个高度可扩展的工具,通过 Provider 来支持新的基础架构。Terraform能够让您在云上轻松使用 简单模板语言 来定义、预览和部署云基础结构。您可以使用Terraform来创建、修改、删除ECS、VPC、RDS、SLB等多种资源。 -可以从两个方面来简化理解 +可以从两个方面来简化理解: + * Terraform 采用声明式方式配置基础架构设置 * Terraform 提供了对规范的基础架构配置的命令行操作 -Terraform 对基础架构的管理3个步骤 +Terraform 对基础架构的管理3个步骤: + * Write: 编写基础架构的配置 * Plan: 对配置进行校验 * Apply: 将配置在多云上实施、生效