diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214\346\234\215\345\212\241/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214Python\347\250\213\345\272\217/config.json" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214\346\234\215\345\212\241/config.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214Python\347\250\213\345\272\217/config.json" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214\346\234\215\345\212\241/docker_pull.jpg" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214Python\347\250\213\345\272\217/docker_pull.jpg" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214\346\234\215\345\212\241/docker_pull.jpg" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214Python\347\250\213\345\272\217/docker_pull.jpg" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214\346\234\215\345\212\241/pull_and_run.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214Python\347\250\213\345\272\217/pull_and_run.json" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214\346\234\215\345\212\241/pull_and_run.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214Python\347\250\213\345\272\217/pull_and_run.json" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214\346\234\215\345\212\241/pull_and_run.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214Python\347\250\213\345\272\217/pull_and_run.md" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214\346\234\215\345\212\241/pull_and_run.md" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214Python\347\250\213\345\272\217/pull_and_run.md" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214\346\234\215\345\212\241/run-with-port-map.jpg" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214Python\347\250\213\345\272\217/run-with-port-map.jpg" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214\346\234\215\345\212\241/run-with-port-map.jpg" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214Python\347\250\213\345\272\217/run-with-port-map.jpg" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214\346\234\215\345\212\241/test-request.jpg" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214Python\347\250\213\345\272\217/test-request.jpg" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214\346\234\215\345\212\241/test-request.jpg" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/1.\345\256\271\345\231\250(docker)/5.\344\275\277\347\224\250docker\350\277\220\350\241\214Python\347\250\213\345\272\217/test-request.jpg" 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 kubernetes)/1.\345\256\211\350\243\205kubectl/install.json" "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 kubernetes)/1.\345\256\211\350\243\205kubectl/install.json" index 511e2284165daf664c57e45580bf3ab3a24cb343..9676b4813884377aee62123429f42ec3c87c8071 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 kubernetes)/1.\345\256\211\350\243\205kubectl/install.json" +++ "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 kubernetes)/1.\345\256\211\350\243\205kubectl/install.json" @@ -1,6 +1,6 @@ { "type": "code_options", - "author": null, + "author": "feilong", "source": "install.md", "notebook_enable": false, "exercise_id": "3767250c65a64d4b89f714ed9185a6f2" 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 kubernetes)/2.\345\256\211\350\243\205minikube/install_4_learning.json" "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 kubernetes)/2.\345\256\211\350\243\205minikube/install_4_learning.json" index dfdf45d2958a69ebdfab576a31f347c677255379..69761136d2508e063af240df00d571ade036dc85 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 kubernetes)/2.\345\256\211\350\243\205minikube/install_4_learning.json" +++ "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 kubernetes)/2.\345\256\211\350\243\205minikube/install_4_learning.json" @@ -1,6 +1,6 @@ { "type": "code_options", - "author": null, + "author": "feilong", "source": "install_4_learning.md", "notebook_enable": false, "exercise_id": "278162c0c42641d3a539f557d7e86f05" 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 kubernetes)/2.\345\256\211\350\243\205minikube/install_minikube.json" "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 kubernetes)/2.\345\256\211\350\243\205minikube/install_minikube.json" index c88bcbd80a542d847a25f129b0e62656bd1701b4..ea8584ec66880501ada9ad5657550da551cd0f46 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 kubernetes)/2.\345\256\211\350\243\205minikube/install_minikube.json" +++ "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 kubernetes)/2.\345\256\211\350\243\205minikube/install_minikube.json" @@ -1,6 +1,6 @@ { "type": "code_options", - "author": null, + "author": "feilong", "source": "install_minikube.md", "notebook_enable": false, "exercise_id": "511d5df92425424197302efa19cad475" 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 kubernetes)/2.\345\256\211\350\243\205minikube/minikube_commnds.json" "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 kubernetes)/2.\345\256\211\350\243\205minikube/minikube_commnds.json" index e7d75e4fec2681d7a7897f297ce51dc41f2a2633..63ca8d54031ef2bde8b4207c559d6bac2f870834 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 kubernetes)/2.\345\256\211\350\243\205minikube/minikube_commnds.json" +++ "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 kubernetes)/2.\345\256\211\350\243\205minikube/minikube_commnds.json" @@ -1,6 +1,6 @@ { "type": "code_options", - "author": null, + "author": "feilong", "source": "minikube_commnds.md", "notebook_enable": false, "exercise_id": "0ba6346aee9042ea8a44a443be4ed11a" 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 kubernetes)/2.\345\256\211\350\243\205minikube/start_k8s.json" "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 kubernetes)/2.\345\256\211\350\243\205minikube/start_k8s.json" index 99cfb3cf9dc4691f281a410a3ab9ecf455c7b490..24475103973e90c31d426c80c213ee1869570293 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 kubernetes)/2.\345\256\211\350\243\205minikube/start_k8s.json" +++ "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 kubernetes)/2.\345\256\211\350\243\205minikube/start_k8s.json" @@ -1,6 +1,6 @@ { "type": "code_options", - "author": null, + "author": "feilong", "source": "start_k8s.md", "notebook_enable": false, "exercise_id": "d9a94bb8d8ff4d149ba2c02481ddef6c" 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 kubernetes)/3.\345\256\211\350\243\205kind/config.json" "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 kubernetes)/3.\345\256\211\350\243\205kind/config.json" index f2b20046f7aa785d7ea9782e3b0c35e75fabe091..c4e3a049c8a6abe66197c7fe2938c417a9953744 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 kubernetes)/3.\345\256\211\350\243\205kind/config.json" +++ "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 kubernetes)/3.\345\256\211\350\243\205kind/config.json" @@ -5,7 +5,8 @@ "export": [ "start_k8s.json", "install_kind.json", - "get_info.json" + "get_info.json", + "start_k8s_three_nodes.json" ], "keywords_must": [], "keywords_forbid": [] 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 kubernetes)/3.\345\256\211\350\243\205kind/get_info.json" "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 kubernetes)/3.\345\256\211\350\243\205kind/get_info.json" index 1dff870f5dd9ea1c81139519052b517c4b50cf60..2abb92d3aa78208c5430556d6891b398d9c983bf 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 kubernetes)/3.\345\256\211\350\243\205kind/get_info.json" +++ "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 kubernetes)/3.\345\256\211\350\243\205kind/get_info.json" @@ -1,6 +1,6 @@ { "type": "code_options", - "author": null, + "author": "feilong", "source": "get_info.md", "notebook_enable": false, "exercise_id": "b267edaeac6d49d2bde26232a9e2cba0" 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 kubernetes)/3.\345\256\211\350\243\205kind/img/kind_three_nodes.png" "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 kubernetes)/3.\345\256\211\350\243\205kind/img/kind_three_nodes.png" new file mode 100644 index 0000000000000000000000000000000000000000..c6e0ddac5d2743e62e915302cba360b558388d5f Binary files /dev/null and "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 kubernetes)/3.\345\256\211\350\243\205kind/img/kind_three_nodes.png" differ 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 kubernetes)/3.\345\256\211\350\243\205kind/img/kind_three_nodes_info.png" "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 kubernetes)/3.\345\256\211\350\243\205kind/img/kind_three_nodes_info.png" new file mode 100644 index 0000000000000000000000000000000000000000..9d4ba3c59eba1fcd2884857ae30372fb5d04883c Binary files /dev/null and "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 kubernetes)/3.\345\256\211\350\243\205kind/img/kind_three_nodes_info.png" differ 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 kubernetes)/3.\345\256\211\350\243\205kind/install_kind.json" "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 kubernetes)/3.\345\256\211\350\243\205kind/install_kind.json" index b617e2c6514bf56094234113930c19e7c96da411..cfad0ee4eeaa74275eb4b736aa094710956d70e0 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 kubernetes)/3.\345\256\211\350\243\205kind/install_kind.json" +++ "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 kubernetes)/3.\345\256\211\350\243\205kind/install_kind.json" @@ -1,6 +1,6 @@ { "type": "code_options", - "author": null, + "author": "feilong", "source": "install_kind.md", "notebook_enable": false, "exercise_id": "34ae63ea33ab4500844b158d26eb8c6a" 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 kubernetes)/3.\345\256\211\350\243\205kind/start_k8s.json" "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 kubernetes)/3.\345\256\211\350\243\205kind/start_k8s.json" index b312302d26f5683a04cc765844f41d582007fa91..9f73176d8d40a66d57b427de4f3f68cba7a25762 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 kubernetes)/3.\345\256\211\350\243\205kind/start_k8s.json" +++ "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 kubernetes)/3.\345\256\211\350\243\205kind/start_k8s.json" @@ -1,6 +1,6 @@ { "type": "code_options", - "author": null, + "author": "feilong", "source": "start_k8s.md", "notebook_enable": false, "exercise_id": "585600fc1b0e4894baf2066148693be6" 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 kubernetes)/3.\345\256\211\350\243\205kind/start_k8s_three_nodes.json" "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 kubernetes)/3.\345\256\211\350\243\205kind/start_k8s_three_nodes.json" new file mode 100644 index 0000000000000000000000000000000000000000..494f9c9fad88091d838d905a7e6cc055c05234dc --- /dev/null +++ "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 kubernetes)/3.\345\256\211\350\243\205kind/start_k8s_three_nodes.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": null, + "source": "start_k8s_three_nodes.md", + "notebook_enable": false, + "exercise_id": "dc46afbe45344def85ffb7835cc9fd21" +} \ No newline at end of file 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 kubernetes)/3.\345\256\211\350\243\205kind/start_k8s_three_nodes.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 kubernetes)/3.\345\256\211\350\243\205kind/start_k8s_three_nodes.md" new file mode 100644 index 0000000000000000000000000000000000000000..30dc45ed15c35d62c0eff4cabe160c4f6822783f --- /dev/null +++ "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 kubernetes)/3.\345\256\211\350\243\205kind/start_k8s_three_nodes.md" @@ -0,0 +1,60 @@ +# 创建一个典型的3节点k8s集群 + +k8s是一个分布式容器编排引擎,集群的node有`Control Plane` 和`Worker` 两种类型。为了更好地认识 k8s 集群的构架,需要使用 kind 创建一个3节点的k8s集群。 + +首先添加一个 3 节点 yaml 配置信息,yaml 文件格式是云原生构架的主要配置文件格式。云原生构架下的一个设计哲学就是使用“声明式”方式编程。通过 yaml 配置文件指定各种策略选择。 + +```yaml +# three node (two workers) cluster config +kind: Cluster +apiVersion: kind.x-k8s.io/v1alpha4 +nodes: +- role: control-plane +- role: worker +- role: worker +``` + +将上述文件保存到`hello-k8s-config.yaml`,其中 + +* `apiVersion` 指定里采用的k8s api版本 +* `nodes` 配置了一个`control-plane`角色的节点和两个`worker`角色的节点 +* 事实上可以创建不只一个 `control-plane` 角色节点 + + +其次,使用如下的命令构建: + +```bash +kind create cluster --config hello-k8s-config.yaml --name hello-k8s +``` + +![](./img/kind_three_nodes.png) + + +查看集群的节点列表 + +![](./img/kind_three_nodes_info.png) + + + +以下说法错误的是? + +## 答案 + +一个 k8s 集群只能创建一个 control-plane 角色的节点 + +## 选项 + +### A + +角色为 worker 的节点是 k8s 的工作节点 + +### B + +角色为 control-plane 的节点是 k8s 的控制节点 + +### C + +YAML配置文件是云原生声明式API的一种方式 + + + 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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/config.json" "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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..02754182252846124aab53c655402a71b4d4d65a --- /dev/null +++ "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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-96843019dff240fab2a76b6d53be1775", + "keywords": [], + "children": [], + "export": [ + "config_view.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file 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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/config_view.json" "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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/config_view.json" new file mode 100644 index 0000000000000000000000000000000000000000..867acef2ffd9ef70a40ce8ea9febe112ed7bcab9 --- /dev/null +++ "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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/config_view.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": null, + "source": "config_view.md", + "notebook_enable": false, + "exercise_id": "e4ed448ebffb4d61b7c95fe763792efb" +} \ No newline at end of file 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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/config_view.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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/config_view.md" new file mode 100644 index 0000000000000000000000000000000000000000..9b6f267af0ac00c40429323ee482bce705972cb5 --- /dev/null +++ "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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/config_view.md" @@ -0,0 +1,107 @@ +# 使用 kubectl 查看和切换 context + +前面的节,我们分别使用 minikube 和 kind 创建了不同名字的 k8s 集群,kubectl 是和哪个集群通讯的呢?可以通过以下命令先看下全局信息 + +```bash +kubectl config view +``` + +可以看到输出了很多有用的信息: + +```yaml +apiVersion: v1 +clusters: +- cluster: + certificate-authority-data: DATA+OMITTED + server: https://127.0.0.1:60712 + name: kind-hello-k8s +- cluster: + certificate-authority-data: DATA+OMITTED + server: https://127.0.0.1:50225 + name: kind-test +- cluster: + certificate-authority: /Users/feilong/.minikube/ca.crt + extensions: + - extension: + last-update: Wed, 16 Mar 2022 19:13:01 CST + provider: minikube.sigs.k8s.io + version: v1.25.2 + name: cluster_info + server: https://127.0.0.1:49371 + name: minikube +contexts: +- context: + cluster: kind-hello-k8s + user: kind-hello-k8s + name: kind-hello-k8s +- context: + cluster: kind-test + user: kind-test + name: kind-test +- context: + cluster: minikube + extensions: + - extension: + last-update: Wed, 16 Mar 2022 19:13:01 CST + provider: minikube.sigs.k8s.io + version: v1.25.2 + name: context_info + namespace: default + user: minikube + name: minikube +current-context: kind-hello-k8s +kind: Config +preferences: {} +users: +- name: kind-hello-k8s + user: + client-certificate-data: REDACTED + client-key-data: REDACTED +- name: kind-test + user: + client-certificate-data: REDACTED + client-key-data: REDACTED +- name: minikube + user: + client-certificate: /Users/feilong/.minikube/profiles/minikube/client.crt + client-key: /Users/feilong/.minikube/profiles/minikube/client.key +``` + +主要包括这几类信息: +* `clusters` 列出了所有的 k8s 集群,例如这里有两个kind创建的集群:`kind-hello-k8s` 和 `kind-test` 以及一个 minikube 创建的集群`minikube` +* `context` 列出了每个 k8s 集群对应的上下文信息 +* `users` 列出了每个 k8s 集群的用户信息 +* `current-context` 指定了当前 kubectl 连接的集群上下文,这里是 `kind-hello-k8s` + + +首先,通过`kubectl config get-contexts` 查看下有哪些集群上下文,通过`kubectl config current-context` 确认当前 k8s 集群上下文 +![](./img/config_get.png) + +其次,通过`kubectl get nodes`查看当前 kubectl 连接的集群`kind-hello-k8s`的节点列表: +![](./img/kubectl_get_nodes.png) + +现在,通过`kubectl config use-context kind-test` 切换连接的 k8s 集群,然后再次查看信息 +![](./img/kubectl_switch_context.png) + +以下说法错误的是? + +## 答案 + +kubectl 只能连接最后一次创建的 k8s 集群 + +## 选项 + +### A + +kubectl 可以切换连接的集群上下文 + +### B + +kubectl 查看当前连接的 k8s 集群节点信息 + +### C + +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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/img/config_get.png" "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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/img/config_get.png" new file mode 100644 index 0000000000000000000000000000000000000000..8ed87a9db076969dabb457c162bfcbcfbd57345a Binary files /dev/null and "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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/img/config_get.png" differ 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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/img/docker_ps.png" "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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/img/docker_ps.png" new file mode 100644 index 0000000000000000000000000000000000000000..3fef9f75236f8623256030b3109aa563abf34753 Binary files /dev/null and "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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/img/docker_ps.png" differ 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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/img/kubectl_get_nodes.png" "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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/img/kubectl_get_nodes.png" new file mode 100644 index 0000000000000000000000000000000000000000..f2f4022d0de53839f0a1846466d8e2df74144b47 Binary files /dev/null and "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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/img/kubectl_get_nodes.png" differ 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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/img/kubectl_switch_context.png" "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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/img/kubectl_switch_context.png" new file mode 100644 index 0000000000000000000000000000000000000000..e5bcb286d4c080fc454e9a8494d2a92b9338ce3b Binary files /dev/null and "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 kubernetes)/4.kubectl\346\237\245\347\234\213\345\222\214\345\210\207\346\215\242context/img/kubectl_switch_context.png" differ 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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/config.json" "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..9c756af50dda786a4b2b4c9c767260f5598545cd --- /dev/null +++ "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/config.json" @@ -0,0 +1,12 @@ +{ + "node_id": "cloud_native-82e0635057c847f99823da536e9eba68", + "keywords": [], + "children": [], + "export": [ + "create_deployment.json", + "create_service.json", + "rs_pod.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file 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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_deployment.json" "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_deployment.json" new file mode 100644 index 0000000000000000000000000000000000000000..b6b2b0685cf7c41b0c68ddd2548ecb5f9eed1aa6 --- /dev/null +++ "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_deployment.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": null, + "source": "create_deployment.md", + "notebook_enable": false, + "exercise_id": "9f699ea545304e6dbd354df5e63b3d96" +} \ No newline at end of file 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 kubernetes)/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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_deployment.md" new file mode 100644 index 0000000000000000000000000000000000000000..77cae204c007d47469528f46e786b49f422649f5 --- /dev/null +++ "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_deployment.md" @@ -0,0 +1,73 @@ +# 服务部署(1): 使用 kubectl 部署(deployment) + +回顾我们在 “使用Dockerfile制作镜像” 一节里制作过的 python docker 镜像程序。镜像推送到镜像仓库的tag名字是`fanfeilong/cloud_native_hello_py`,源码结构如下: + +```bash + +├── .dockerignore +├── .gitignore +├── Dockerfile +├── README.md +└── src + ├── main.py + └── requirements.txt +``` + + +我们在根目录下创建一个 k8s 的部署配置文件,文件是 yaml 格式,文件名为`k8s_python_sample_code.deployment.yml`,内容如下,注意`name`字段不能是下划线命名风格: + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: cloud-native-hello-py + labels: + app: cloud-native-hello-py +spec: + replicas: 3 + selector: + matchLabels: + app: cloud-native-hello-py + template: + metadata: + labels: + app: cloud-native-hello-py + spec: + containers: + - name: cloud-native-hello-py + image: fanfeilong/cloud_native_hello_py + ports: + - containerPort: 1024 +``` + +通过一组操作来部署和查看状态 +* 使用命令 `kubectl create -f k8s.deployment.yaml` 部署到 k8s 集群,“部署” 本身被当一种资源创建过程 +* 使用命令 `kubectl get deployments` 查看部署情况 +* 使用命令`kubectl rollout status deployment/cloud-native-hello-py`查看状态。 + +![](./img/deployment.png) + + +以下说法错误的是? + +## 答案 + +k8s.deployment.yaml 里不需要指定目标部署 Python 服务的 docker 镜像名字 + +## 选项 + +### A + +kubectl 对一种资源的操作,常见的包含:创建、查看列表、获取状态三种 + +### B + +使用 yaml 配置部署信息,使用`kubectl create -f` 命令创建资源,这就是 k8s 的声明式 api 的做法 + +### C + +deployment 的配置文件yaml里,`name` 字段不能带下划线风格 + +### D + +containerPort: 1024 用来暴露容器导出端口 \ No newline at end of file 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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_service.json" "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_service.json" new file mode 100644 index 0000000000000000000000000000000000000000..456b7d87202633d54b5cfc17378ad7c276192a4f --- /dev/null +++ "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_service.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": null, + "source": "create_service.md", + "notebook_enable": false, + "exercise_id": "40ac07260ef34085961c39064ad61b09" +} \ No newline at end of file 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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_service.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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_service.md" new file mode 100644 index 0000000000000000000000000000000000000000..870ade977e7c68a45497ae3731569f060762d663 --- /dev/null +++ "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/create_service.md" @@ -0,0 +1,71 @@ +# 服务部署(3): 使用 kubectl 启动服务(service) + +经过 deployment,cloud_native_hello_py 项目的目录结构如下: + +```bash +. +├── Dockerfile +├── README.md +├── k8s.deployment.yaml +└── src + ├── main.py + └── requirements.txt +``` + +在根目录下增加一个文件`k8s.service.yaml`,内容如下: + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: cloud-native-hello-py +spec: + selector: + app: cloud-native-hello-py + ports: + - protocol: TCP + port: 1024 + targetPort: 1024 +``` + +注意 targetPort 必须和 deployment 步骤里容器的导出端口一致 + + +使用如下的命令来创建服务 + +```bash +kubectl create -f k8s.service.yaml +``` + +![](./img/service.png) + + +对服务做下端口转发 +![](./img/port_forward.png) + + +使用浏览器直接访问 +![](./img/it_works_html.png) + +HelloWorld! 恭喜你成功地在 K8S 上部署启动了一个 Python Flask 后端服务。 + +下面说法错误的是? + +## 答案 + +kubectl 只能创建一个服务 + +## 选项 + +### A + +service 可以配置将端口映射到 deployment 里配置的容器端口 + +### B + +转发本机端口到服务端口后,本机可以直接访问服务 + +### C + +服务配置里的 selector 配置了选择 pod 的策略 + 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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/deployment.png" "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/deployment.png" new file mode 100644 index 0000000000000000000000000000000000000000..6ea5c5ea2c719f2603a76c1acc9a078a114262ec Binary files /dev/null and "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/deployment.png" differ 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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/it_works_cli.png" "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/it_works_cli.png" new file mode 100644 index 0000000000000000000000000000000000000000..ff9c9f6f480b35337d0f93bd27aff6531bce1f0c Binary files /dev/null and "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/it_works_cli.png" differ 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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/it_works_html.png" "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/it_works_html.png" new file mode 100644 index 0000000000000000000000000000000000000000..4d9962be09fa9b29d9661f6499266bed0a63d162 Binary files /dev/null and "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/it_works_html.png" differ 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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/pods.png" "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/pods.png" new file mode 100644 index 0000000000000000000000000000000000000000..94f4e9a240e9d5fedec12e73d192a55e437e0016 Binary files /dev/null and "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/pods.png" differ 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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/port_forward.png" "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/port_forward.png" new file mode 100644 index 0000000000000000000000000000000000000000..e2cda67c357766b8a7d5b259f359067946bd8fa8 Binary files /dev/null and "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/port_forward.png" differ 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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/rs.png" "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/rs.png" new file mode 100644 index 0000000000000000000000000000000000000000..7887cc0f56643568b79df8cdbc4439f10981b00f Binary files /dev/null and "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/rs.png" differ 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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/service.png" "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/service.png" new file mode 100644 index 0000000000000000000000000000000000000000..570e7da77ee81afeb75c7cc293309d0593f79e04 Binary files /dev/null and "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/img/service.png" differ 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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/rs_pod.json" "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/rs_pod.json" new file mode 100644 index 0000000000000000000000000000000000000000..d000d2074a0edb56b643586be4e2e70fee871f1b --- /dev/null +++ "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/rs_pod.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": null, + "source": "rs_pod.md", + "notebook_enable": false, + "exercise_id": "03679801cd5e4b2aad9c10f2adaad982" +} \ No newline at end of file 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 kubernetes)/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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/rs_pod.md" new file mode 100644 index 0000000000000000000000000000000000000000..1fe6d4aa3db20caa59fcf686c826756375aa6ae1 --- /dev/null +++ "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 kubernetes)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/rs_pod.md" @@ -0,0 +1,53 @@ +# 服务部署(2): 使用 kubectl 查看 ReplicaSet 和 Pods + +k8s 通过 deployment 部署,deployment 管理副本集合ReplicaSet ,而 ReplicaSet 包含多个Pod。那么Pod又是什么呢? + +Pod是一个或多个容器的组合,这些容器共享存储、网络和命名空间,以及如何运行的规范。Pod是 K8s 的最小可部署单元。 + +我们先通过命令`kubectl get rs`直观地看下 ReplicaSet + +![](./img/rs.png) + +我们再通过命令`kubectl get pods`直观地看下 pods + +![](./img/pods.png) + +可以看到有一个 ReplicaSet,管理三个 Pods。ReplicaSet 管理多个 Pod,确保以指定个数的副本运行部署的服务。 + + +ReplicaSet 的信息解释: +* NAME:ReplicaSet 名字 +* DESIRED:需要的 pod 副本个数 +* CURRENT:当前运行的 pod 副本个数 +* READY: 有多少个副本对用户可用 +* AGE:运行开始到现在的时间 + +Pod的列信息大同小异: +* NAME: 名字 +* READY: 就绪状态 +* STATUS: 运行状态 +* RESTARTS:重启次数 +* AGE:运行开始到现在的时间 + +以下说法错误的是? + +## 答案 + +通常一个 ReplicaSet 只需要一个 pod 即可 + +## 选项 + +### A + +deployment 可以对 ReplicaSet 管理的 pod 实行滚动升级 + +### B + +Pod 管理内部容器,这些容器共享存储、网络和命名空间 + +### C + +k8s 使用 ReplicaSet 管理多个 Pods + + + 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 kubernates)/1.CentOS\345\256\211\350\243\205kubelet,kubectl,kubeadm/config.json" "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 kubernates)/1.CentOS\345\256\211\350\243\205kubelet,kubectl,kubeadm/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..7e9c48a3be4501e240213e72a641f5876cad6c0f --- /dev/null +++ "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 kubernates)/1.CentOS\345\256\211\350\243\205kubelet,kubectl,kubeadm/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-3a407b55039e4e29b802e5047caf881b", + "keywords": [], + "children": [], + "export": [ + "introduce.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file 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 kubernates)/1.CentOS\345\256\211\350\243\205kubelet,kubectl,kubeadm/introduce.json" "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 kubernates)/1.CentOS\345\256\211\350\243\205kubelet,kubectl,kubeadm/introduce.json" new file mode 100644 index 0000000000000000000000000000000000000000..b8f1a2bc973bd8ccc3a67b136ba6744588f7b64c --- /dev/null +++ "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 kubernates)/1.CentOS\345\256\211\350\243\205kubelet,kubectl,kubeadm/introduce.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": null, + "source": "introduce.md", + "notebook_enable": false, + "exercise_id": "067897924b1447589d6232c0b4aca432" +} \ No newline at end of file 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 kubernates)/1.CentOS\345\256\211\350\243\205kubelet,kubectl,kubeadm/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 kubernates)/1.CentOS\345\256\211\350\243\205kubelet,kubectl,kubeadm/introduce.md" new file mode 100644 index 0000000000000000000000000000000000000000..805c48c0831474f8b38b91530209f61f0171ba88 --- /dev/null +++ "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 kubernates)/1.CentOS\345\256\211\350\243\205kubelet,kubectl,kubeadm/introduce.md" @@ -0,0 +1,48 @@ +# 生产环境 k8s 三件套:kubelet, kubectl, kubeadm + +在生产环境上,例如 centos linux系统上,使用 kubelet, kubectl, kubeadm 三件套可以部署 k8s 集群。 + +cenos 上安装 k8s 步骤如下 +* 安装 docker +* 安装 kubelet, kubectl, kubeadm +* 使用 kubeadm 初始化集群 + +例如,安装三件套的命令如下 + +```bash +sudo yum install -y kubectl kubelet kubeadm +sudo systemctl enable kubelet +sudo systemctl start kubelet +``` + +使用 kubeadm 初始化集群的命令如下 + +```bash +kubeadm init --apiserver-advertise-address=0.0.0.0 \ +--apiserver-cert-extra-sans=127.0.0.1 \ +--image-repository=registry.aliyuncs.com/google_containers \ +--ignore-preflight-errors=all \ +--kubernetes-version=v1.21.1 \ +--service-cidr=10.10.0.0/16 \ +--pod-network-cidr=10.18.0.0/16 +``` + +以下说法错误的是? + +## 答案 + +kubectl 不能用来连接生产环境 k8s 集群 + +## 选项 + +### A + +kubeadm 用来初始化 k8s 集群 + +### B + +在 k8s 节点上应该运行 kubelet + +### C + +生产环境不应该用 minikube 和 kind 创建 k8s 集群 \ No newline at end of file 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 kubernates)/2.k8s\345\237\272\347\241\200\347\273\204\344\273\266/config.json" "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 kubernates)/2.k8s\345\237\272\347\241\200\347\273\204\344\273\266/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..d46fdc1601c37ea0b1adc01e4925110d9dc979bc --- /dev/null +++ "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 kubernates)/2.k8s\345\237\272\347\241\200\347\273\204\344\273\266/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-956e6d175eb343468b21131c54afb4c6", + "keywords": [], + "children": [], + "export": [ + "introduce.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file 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 kubernates)/2.k8s\345\237\272\347\241\200\347\273\204\344\273\266/introduce.json" "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 kubernates)/2.k8s\345\237\272\347\241\200\347\273\204\344\273\266/introduce.json" new file mode 100644 index 0000000000000000000000000000000000000000..9e6d0013f4ce7a13947d5c184d23a6eae68948c9 --- /dev/null +++ "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 kubernates)/2.k8s\345\237\272\347\241\200\347\273\204\344\273\266/introduce.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": null, + "source": "introduce.md", + "notebook_enable": false, + "exercise_id": "6c420e94227948279466358d4548c0d4" +} \ No newline at end of file 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 kubernates)/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 kubernates)/2.k8s\345\237\272\347\241\200\347\273\204\344\273\266/introduce.md" new file mode 100644 index 0000000000000000000000000000000000000000..de51cb12f5eed743e9332c75156e6741bd6527d4 --- /dev/null +++ "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 kubernates)/2.k8s\345\237\272\347\241\200\347\273\204\344\273\266/introduce.md" @@ -0,0 +1,43 @@ +# k8s 基础组件介绍 + +到目前为止,我们从 k8s 命令行安装和操作的角度理解到了 k8s 的很多基本概念: +* 容器(docker)里可以跑代码 +* pod 可以管理容器(docker) +* ReplicaSet 可以管理多 pod +* 通过 deployment 可以部署一个 ReplicaSet +* deployement 可以通过 service 暴露给集群外 +* k8s的集群节点分 control-plane 和 worker 两种节点 + +我们也掌握了安装 k8s 的概念 +* kubectl 可以用来和 k8s 集群通讯,是 k8s 的命令行客户端 +* 使用 minikube/kind 可以创建学习环境 k8s 集群 +* 使用 kubeadm 可以创建生产环境 k8s + +现在,我们简要介绍下 k8s 的核心组件 +* etcd : 实现了raft分布式一致性协议的元数据存储 +* apiserver: 提供了元数据读写 etcd 的api +* Controller Manager : 集群内部的控制管理中心 +* Scheduler: 集群内部的调度器,对 pod 进行调度 +* Kubelet:负责 Node 节点上的 pod 的增删查改 +* Proxy: Service的代理 + +自己搜索资料,以下说法错误的是? + +## 答案 + +kubectl 不能连接 kubeadm 创建的 k8s 集群 + +## 选项 + +### A + +apiserver 的 api 是有版本划分的 + +### B + +minikube 和 kind 会自动安装 kubelet,但是 kubeadm 不会自动安装 kubelet + +### C + +Scheduler 是k8s的调度器 + 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 kubernates)/3.k8s\350\256\276\350\256\241\347\220\206\345\277\265/config.json" "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 kubernates)/3.k8s\350\256\276\350\256\241\347\220\206\345\277\265/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..632f4a9b1142dbcea370ed178ce66671764e817a --- /dev/null +++ "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 kubernates)/3.k8s\350\256\276\350\256\241\347\220\206\345\277\265/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-3d43dbd9c50e407a806cb4f7703c4160", + "keywords": [], + "children": [], + "export": [ + "introduce.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file 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 kubernates)/3.k8s\350\256\276\350\256\241\347\220\206\345\277\265/introduce.json" "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 kubernates)/3.k8s\350\256\276\350\256\241\347\220\206\345\277\265/introduce.json" new file mode 100644 index 0000000000000000000000000000000000000000..00f26c841df5ba95b0b87d3c83d2773acfd640d5 --- /dev/null +++ "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 kubernates)/3.k8s\350\256\276\350\256\241\347\220\206\345\277\265/introduce.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": null, + "source": "introduce.md", + "notebook_enable": false, + "exercise_id": "e0d420a053a8499f8e42c3b29e673320" +} \ No newline at end of file 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 kubernates)/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 kubernates)/3.k8s\350\256\276\350\256\241\347\220\206\345\277\265/introduce.md" new file mode 100644 index 0000000000000000000000000000000000000000..00a609c0fb94e070257cd5310fb4df924d9f9fff --- /dev/null +++ "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 kubernates)/3.k8s\350\256\276\350\256\241\347\220\206\345\277\265/introduce.md" @@ -0,0 +1,29 @@ +# k8s 设计理念 + +以下关于k8s设计说法正确的是? +a. 所有API应该是声明式的 +b. API对象是彼此互补而且可组合的 +c. 高层API以操作意图为基础设计 +d. 低层API根据高层API的控制需要设计 +e. 尽量避免简单封装,不要有在外部API无法显式知道的内部隐藏的机制 +f. API操作复杂度与对象数量成正比 +g. API对象状态不能依赖于网络连接状态 +h. 尽量避免让操作机制依赖于全局状态,因为在分布式系统中要保证全局状态的同步是非常困难的 + +## 答案 + +全部正确 + +## 选项 + +### A + +b,c,d,e,f,g,h + +### B + +a,b,c,d,e,f,g + +### C + +a,b,c,d,e,f,g,h \ No newline at end of file diff --git a/data/tree.json b/data/tree.json index 718d571beece59445ff09048373708752e735e8f..106fd1afbc17c10de4d27fd87ce3647aafc526ce 100644 --- a/data/tree.json +++ b/data/tree.json @@ -50,7 +50,7 @@ } }, { - "使用docker运行服务": { + "使用docker运行Python程序": { "node_id": "cloud_native-9d1d7311d4ee49c1aa36eef9f38000fd", "keywords": [], "children": [], @@ -94,6 +94,24 @@ "keywords_must": [], "keywords_forbid": [] } + }, + { + "kubectl查看和切换context": { + "node_id": "cloud_native-96843019dff240fab2a76b6d53be1775", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + }, + { + "kubectl部署一个Python程序": { + "node_id": "cloud_native-82e0635057c847f99823da536e9eba68", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } } ], "keywords_must": [], @@ -104,7 +122,35 @@ "容器编排(生产环境 kubernates)": { "node_id": "cloud_native-be3fffb284e242489400a9c65ae1b217", "keywords": [], - "children": [], + "children": [ + { + "CentOS安装kubelet,kubectl,kubeadm": { + "node_id": "cloud_native-3a407b55039e4e29b802e5047caf881b", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + }, + { + "k8s基础组件": { + "node_id": "cloud_native-956e6d175eb343468b21131c54afb4c6", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + }, + { + "k8s设计理念": { + "node_id": "cloud_native-3d43dbd9c50e407a806cb4f7703c4160", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + } + ], "keywords_must": [], "keywords_forbid": [] }