############# Kubernetes ############# * `Kubernetes中文手册 `_ *********************** 每天5分钟玩转容器技术 *********************** Docker ======= * `1. 写在最前面 `_ * `2. 容器生态系统 `_ * `3. 容器生态系统 (续) `_ * `4. 运行第一个容器 `_ * `5. 视频 `_ * `6. 容器 What, Why, How `_ * `7. Docker 架构详解 `_ * `8. Docker 组件如何协作 `_ * `9. 最小的镜像 `_ * `10. base镜像 `_ * `11. 镜像的分层结构 `_ * `12. 构建镜像 `_ * `13. Dockerfile 构建镜像 `_ * `14. 镜像的缓存特性 `_ * `15. 调试 Dockerfile `_ * `16. Dockerfile 常用指令 `_ * `18. 镜像命名的最佳实践 `_ * `19. 使用公共 Registry `_ * `20. 搭建本地 Registry `_ * `21. Docker 镜像小结 `_ * `22. 如何运行容器? `_ * `23. 两种进入容器的方法 `_ * `24. 运行容器的最佳实践 `_ * `25. 容器常用操作 `_ * `26. 一张图搞懂容器所有操作 `_ * `27. 限制容器对内存的使用 `_ * `28. 限制容器对CPU的使用 `_ * `29. 限制容器的 Block IO `_ * `30. 实现容器的底层技术 `_ * `31. none 和 host 网络的适用场景 `_ * `32. 学容器必须懂 bridge 网络 `_ * `33. 如何自定义容器网络? `_ * `34. 理解容器之间的连通性 `_ * `35. 容器间通信的三种方式 `_ * `36. 容器如何访问外部世界? `_ * `37. 外部世界如何访问容器? `_ * `38. Docker 的两类存储资源 `_ * `39. Data Volume 之 bind mount `_ * `40. docker managed volume `_ * `41. 如何共享数据? `_ * `42. 用 volume container 共享数据 `_ * `43. data-packed volume container `_ * `44. volume 生命周期管理 `_ * `45. 安装 Docker Machine `_ * `46. 创建 Machine `_ * `47. 管理 Machine `_ * `48. 跨主机网络概述 `_ * `49. 准备 overlay 网络实验环境 `_ * `50. 创建 overlay 网络 `_ * `51. 在 overlay 中运行容器 `_ * `52. overlay 如何实现跨主机通信? `_ * `53. overlay 是如何隔离的? `_ * `54. 准备 macvlan 环境 `_ * `55. 创建 macvlan 网络 `_ * `56. macvlan 网络结构分析 `_ * `57. macvlan 网络隔离和连通 `_ * `58. flannel 概述 `_ * `59. 安装配置 flannel `_ * `60. 在 Docker 中使用 flannel `_ * `61. flannel 的连通与隔离 `_ * `62. 如何使用 flannel host-gw backend? `_ * `63. 如何使用 Weave 网络? `_ * `64. Weave 网络结构分析 `_ * `65. 容器在 Weave 中如何通信和隔离? `_ * `66. Weave 如何与外网通信? `_ * 67 * 68 * 69 * 70 * 71 * 72 * 73 * 74 * 75 * 76 * 77 * 78 * 79 * 80 * 81 * 82 * 83 * 84 * 85 * 86 * 87 * 88 * 89 * 90 * 91 * 92 * 93 * 94 * 95 * 96 * 97 * 98 * 99 * 100 * 101 * 102 * 103 * 104 * 105 * 106 * 107 * 108 * 109 * 110 * 111 * 112 * 113 K8s ===== * `114. 学习 Kubernetes 的 Why 和 How `_ * `115. 五秒创建 k8s 集群 `_ * `116. k8s 核心功能 `_ * `117. k8s 重要概念 `_ * `118. 部署 k8s Cluster(上) `_ * `119. 部署 k8s Cluster(下) `_ * `120. Kubernetes 架构(上) `_ * `121. Kubernetes 架构(下) `_ * `122. 通过例子理解 k8s 架构 `_ * 123 * 124 * 125 * 126 * 127 * 128 * 129 * 130 * 131 * 132 * 133 * 134 * 135 * 136 * 137 * 138 * 139 * 140 * 141 * 142 * 143 * 144 * 145 * 146 * 147 * 148 * 149 * 150 * 151 * 152 * 153 * 154 * 155 * 156 * 157 * 158 * 159 * 160 * 161 * 162 * 163 * 164 * 165 * 166 * 167 * 168 * 169 * 170 * 171 * 172 * 173 * 174 * 175 * 176 * 177 * 178 * 179 * `180. Kubernetes 集群日志管理 `_ .. code-block:: sh kubeadm token list # get --discovery-token-ca-cert-hash openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' ************ 搭建 ************ * `googlecontainer `_ --------------------------------- * `install-kubeadm `_ * `kubeadm安装kubernetes集群 `_ * `通过docker hub 下载 `_ ------------ * `安装部署 Kubernetes 集群 `_ * `kubeadm安装kubernetes集群 `_ * `【kubernetes/k8s 部署】minikube与kubernetes搭建 2017.08.16 `_ * `使用Kubeadm快速搭建Kubernetes(docker) `_ * `使用kubeadm安装Kubernetes v1.10以及常见问题解答 `_ * `Kubernetes in Vagrant with kubeadm `_ * `k8s学习笔记(一) `_ * `Kubernetes Handbook `_ 测试 ======= .. code-block:: yaml ################# # busybox.yaml ################# apiVersion: v1 kind: Pod metadata: name: busybox namespace: default spec: containers: - image: busybox command: - sleep - "3600" imagePullPolicy: IfNotPresent name: busybox restartPolicy: Always .. code-block:: sh sudo kubectl create -f ./busybox.yaml sudo kubectl get rc sudo kubectl get pods sudo kubectl describe pod mysql ****** FAQ ****** 问题: .. code-block:: sh ########################3 # Centos7 ########################3 #sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml $ sudo kubectl apply -f ./kube-flannel.yml unable to recognize "./kube-flannel.yml": Get http://localhost:8080/api?timeout=32s: dial tcp [::1]:8080: connect: connection refused unable to recognize "./kube-flannel.yml": Get http://localhost:8080/api?timeout=32s: dial tcp [::1]:8080: connect: connection refused unable to recognize "./kube-flannel.yml": Get http://localhost:8080/api?timeout=32s: dial tcp [::1]:8080: connect: connection refused unable to recognize "./kube-flannel.yml": Get http://localhost:8080/api?timeout=32s: dial tcp [::1]:8080: connect: connection refused unable to recognize "./kube-flannel.yml": Get http://localhost:8080/api?timeout=32s: dial tcp [::1]:8080: connect: connection refused The connection to the server localhost:8080 was refused - did you specify the right host or port 解决: 需要开启 api server 代理端口: * https://www.oschina.net/question/574036_2271046 * `Kubernetes核心原理(一)之API Server `_ .. code-block:: sh # 查看端口是否代理: $ curl localhost:8080/api # 开启端口代理: $ kubectl proxy --port=8080 &