diff --git a/.vuepress/config.js b/.vuepress/config.js index 9b6d0d0..5ba5132 100644 --- a/.vuepress/config.js +++ b/.vuepress/config.js @@ -139,7 +139,7 @@ module.exports = { children: [ ['install-k8s', '安装 Kubernetes 单Master节点'], 'install-kubernetes', - 'install-k8s-upgrade', + ['install-k8s-upgrade', '升级 Kubernetes 集群'], 'install-kubectl' ] }, diff --git a/install/install-k8s-upgrade.md b/install/install-k8s-upgrade.md index 2ed01fb..906abc2 100644 --- a/install/install-k8s-upgrade.md +++ b/install/install-k8s-upgrade.md @@ -2,17 +2,144 @@ description: 通过 kubeadm 升级 kubernetes 集群 --- -# 升级 Kubernetes 集群 +# Kubernetes 爆发严重漏洞:可能影响所有开源版本,请尽快升级 -文档完善中 +参考文档: kubernetes 官网文档 [kubeadm upgrade](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/) + +参考文档:Info Q 文章 [Kubernetes 爆发严重漏洞:可能影响所有开源版本](https://www.infoq.cn/article/2lxylPOCU4cf9MR2S5fp) + +::: danger 严重漏洞 +* CVE-2019-9512 Ping Flood:攻击者向 HTTP/2 对等体 (peer) 发送连续 ping,导致对等体建立内部响应队列。这可能消耗过多 CPU 和内存——这取决于该数据的队列多高效,从而可能导致拒绝服务攻击。 +* CVE-2019-9514 Rest Flood:攻击者打开多路数据流,并在每路数据流上发送无效请求,从而从对等体获得 RST_STREAM 帧数据流。这会消耗过多的内存、CPU 或 CPU 和内存——这取决于对等体如何将 RST_STREAM 帧列入队列,从而可能导致拒绝服务攻击。 +::: + +::: warning 请升级到补丁版本 +Kubernetes 已经发布补丁以修复漏洞,建议所有管理员尽快升级到补丁版本,以帮助管理员应对漏洞: + +* Kubernetes v1.15.3 - go1.12.9 +* Kubernetes v1.14.6 - go1.12.9 +* Kubernetes v1.13.10 - go1.11.13 + +::: ## 前提条件 * 您使用 kubeadm 安装了 kubernetes v1.15.0 / v1.15.1 / v1.15.2 集群 * 您想要将其升级到最新的版本 kubernetes v1.15.3 -## 升级 kubeadm +::: tip +www.kuboard.cn 目前只能提供 kubernetes v1.15.0 / v1.15.1 / v1.15.2 到 kubernetes v1.15.3 的升级文档,其他版本的集群,请参考 kubernetes 官网文档 [kubeadm upgrade](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/) +::: + +## 升级 kubeadm/kubelet/kubectl + +在所有节点(包括 master、worker 节点)执行命令 ``` sh -yum install kubeadm +# 在所有节点执行(包括 master 和 worker 节点) +yum install -y kubelet-1.15.3 kubeadm-1.15.3 kubectl-1.15.3 +systemctl daemon-reload +systemctl restart kubelet +``` + +## 查看集群配置 + +在第一个 master 节点执行命令 + +``` sh +# 只在第一个 master 节点执行 +kubeadm config view +``` + +输入结果如下所示:(根据集群配置不一样,您的结果可能不同) + +``` yaml {15,17} +apiServer: + extraArgs: + authorization-mode: Node,RBAC + timeoutForControlPlane: 4m0s +apiVersion: kubeadm.k8s.io/v1beta2 +certificatesDir: /etc/kubernetes/pki +clusterName: kubernetes +controlPlaneEndpoint: apiserver.demo:6443 +controllerManager: {} +dns: + type: CoreDNS +etcd: + local: + dataDir: /var/lib/etcd +imageRepository: k8s.gcr.io +kind: ClusterConfiguration +kubernetesVersion: v1.15.0 +networking: + dnsDomain: cluster.local + serviceSubnet: 10.96.0.0/12 +scheduler: {} +``` + +## 创建升级用的配置文件 + +**创建文件 kubeadm-config-upgrade.yaml** + +文件内容如下所示,根据前面 `kubeadm config view` 的执行结果,修改了如下字段: +* imageRepository 的值修改为:registry.cn-hangzhou.aliyuncs.com/google_containers +* kubernetesVersion 的值修改为: v1.15.3 +``` yaml {15,17} +apiServer: + extraArgs: + authorization-mode: Node,RBAC + timeoutForControlPlane: 4m0s +apiVersion: kubeadm.k8s.io/v1beta2 +certificatesDir: /etc/kubernetes/pki +clusterName: kubernetes +controlPlaneEndpoint: apiserver.demo:6443 +controllerManager: {} +dns: + type: CoreDNS +etcd: + local: + dataDir: /var/lib/etcd +imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers +kind: ClusterConfiguration +kubernetesVersion: v1.15.3 +networking: + dnsDomain: cluster.local + serviceSubnet: 10.96.0.0/12 +scheduler: {} +``` + +## 执行 kubeadm upgrade 命令 + +在第一个 master 节点上执行: + +查看升级后的变化 + +``` sh +# 只在第一个 master 节点执行 +kubeadm upgrade diff --config kubeadm-config-upgrade.yaml +``` + +执行升级 dry-run + +``` sh +# 只在第一个 master 节点执行 +kubeadm upgrade apply --config kubeadm-config-upgrade.yaml --dry-run +``` + +执行升级动作 + +``` sh +# 只在第一个 master 节点执行 +kubeadm upgrade apply --config kubeadm-config-upgrade.yaml +``` + +## 检查升级结果 + +在第一个 master 节点执行 + +``` sh +# 只在第一个 master 节点执行 +kubectl get nodes -o wide +kubectl version +kubeadm config view ``` diff --git a/learning/README.md b/learning/README.md index f15e003..845b6ab 100644 --- a/learning/README.md +++ b/learning/README.md @@ -16,7 +16,7 @@ description: Kubernetes 学习路径推荐 ## **Kubernetes 进阶** * [通过互联网访问您的应用](/learning/k8s-intermediate/ingress.html) * [使用 ConfigMap 配置您的应用程序](/learning/k8s-intermediate/config-map.html) - + * [使用私有 registry 中的 docker 镜像](/learning/k8s-intermediate/private-registry.md) ## **课程推荐** diff --git a/learning/carreer/career.md b/learning/carreer/career.md new file mode 100644 index 0000000..5c93f12 --- /dev/null +++ b/learning/carreer/career.md @@ -0,0 +1,11 @@ +--- +description: 不少初学者加我微信后,都表示感到迷茫,问我学会 K8S 未来能挣多少钱,问将来自己的职业发展该怎么走。在这里作为一个十多年的老兵,算是分享一下自己的一些观点吧,也许对年轻的你会有用。 +--- + +# 技术人的职业发展之我见 + +国内技术从业者的 + +# 职场价值衡量体系 + +# 跳槽 diff --git a/learning/k8s-intermediate/private-registry.md b/learning/k8s-intermediate/private-registry.md index 95b84ad..5a0b441 100644 --- a/learning/k8s-intermediate/private-registry.md +++ b/learning/k8s-intermediate/private-registry.md @@ -2,7 +2,7 @@ description: 通过Kuboard 配置 Kubernetes,使用私有 registry 中的 docker 镜像 --- -# 使用私有 registry 中的 docker 镜像 +# 使用私有 Registry 中的 docker 镜像 企业通常会因为如下几个原因,需要搭建自己的私有 docker registry: * 限制 docker 镜像的分发范围,例如:只允许在内网分发,或者只允许被授权的用户获取 docker 镜像 diff --git a/overview/README.md b/overview/README.md index a95f343..d68857a 100644 --- a/overview/README.md +++ b/overview/README.md @@ -125,6 +125,7 @@ Kuboard 为 Kubernetes 初学者设计了如下学习路径: * **Kubernetes 进阶** * [通过互联网访问您的应用](/learning/k8s-intermediate/ingress.html) * [使用 ConfigMap 配置您的应用程序](/learning/k8s-intermediate/config-map.html) + * [使用私有 Registry 中的 docker 镜像](/learning/k8s-intermediate/private-registry.md) * 进阶路线一 * 在实际项目中锻炼,完成各种与微服务、容器化、Kubernetes更多高级功能的学习、理解和应用 * **适合人群:** 身边有人带路,并且技术功底比较强的人,能够自行翻阅大量 docker / kubernetes 的官网英文资料。这些人在完成上面的 Kubernetes 入门教程之后,基本上可以在项目中开始实战了。