Kubernetes 入门教程

转自: 凡澈 阿里技术原文链接 前言:本文是一篇 kubernetes(下文用 k8s 代替)的入门文章,将会涉及 k8s 的架构、集群搭建、一个 Redis 的例子,以及如何使用 operator-sdk 开发 operator 的教程。在文章过程中,会穿插引出 Pod、Deployment、StatefulSet 等 k8s 的概念,这些概念通过例子引出来,更容易理解和实践。文章参考了很多博客以及资料,放在最后参考资料部分。 作为一篇了解k8s基本概念的文章,还是不错的。 一 k8s架构 我们看下 k8s 集群的架构,从左到右,分为两部分,第一部分是 Master 节点(也就是图中的 Control Plane),第二部分是 Node 节点。 Master 节点一般包括四个组件,apiserver、scheduler、controller-manager、etcd,他们分别的作用是什么: Apiserver:上知天文下知地理,上连其余组件,下接ETCD,提供各类 api 处理、鉴权,和 Node 上的 kubelet 通信等,只有 apiserver 会连接 ETCD。 Controller-manager:控制各类 controller,通过控制器模式,致力于将当前状态转变为期望的状态。 Scheduler:调度,打分,分配资源。 Etcd:整个集群的数据库,也可以不部署在 Master 节点,单独搭建。 Node 节点一般也包括三个组件,docker,kube-proxy,kubelet Docker:具体跑应用的载体。 Kube-proxy:主要负责网络的打通,早期利用 iptables,现在使用 ipvs技术。 […]

Kubernetes 部署 Kafka & Zookeeper(转)

bash 正文:以下内容适用于Kubernetes v1.20.0之前的版本,因为从该版本开始弃用selfLink。nfs-client-provisioner已无法使用:临时解决方案:https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/issues/25 相似的还有:https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/tree/master/charts/nfs-subdir-external-provisioner 以上均已无法使用。可考虑降级kubernetes todo:topic已创建成功,但无法生产及消费消息 关于StorageClass 在K8S环境,当pod需要存储空间时,StorageClass比PV更灵活和方便,官方文档地址:https://kubernetes.io/docs/concepts/storage/persistent-volumes/ 本次实战 本次实战的目标是快速创建NFS类型的StorageClass,并验证该StorageClass正常可用,全文由以下部分组成: 创建StorageClass; 通过helm下载tomcat的chart; 修改chart,让tomcat使用刚才创建的StorageClass; 在NFS服务端检查文件夹已正常写入; 环境信息和准备工作 以下是创建StorageClass必备的环境信息: Kubernetes:1.15 Kubernetes宿主机:CentOS Linux release 7.7.1908 NFS服务:IP地址192.168.50.135,文件夹/volume1/nfs-storageclass-test 如果您已经准备好了kubernetes和NFS,咱们就开始实战吧; 如何创建StorageClass 把创建StorageClass要做的的事情理清楚: 创建namespace,这里用hello-storageclass(您也可以选用自己喜欢的); 创建rbac:因为StorageClass有对应的pod要运行,每个pod都有自己的身份即serviceaccount,而这个serviceaccount是和某个角色绑定的,所以要创建:serviceaccount、rule、rolebinding; 创建provisioner,即关联NFS的工作类,负责给PVC提供存储资源,这里用的是nfs-client-provisioner; 创建StorageClass,所有需要PVC通过该StorageClass即可获得存储空间; 接下来请SSH登录kubernetes环境,按照上述步骤操作; 创建StorageClass 创建namespace:kubectl create namespace hello-storageclass 创建rbac的脚本直接从我的github下载吧,地址:https://raw.githubusercontent.com/zq2599/blog_demos/master/storageclass-demo/rbac.yaml 下载的rbac.yaml文件中,namespace是kafka-test,现在要替换成hello-storages,执行命令替换:sed -i ‘s/kafka-test/hello-storageclass/’ rbac.yaml 创建rbac:kubectl apply -f rbac.yaml 创建provisioner的脚本也从我的github下载,地址:https://raw.githubusercontent.com/zq2599/blog_demos/master/storageclass-demo/deployment.yaml 下载的deployment.yaml文件中,namespace是kafka-test,现在要替换成hello-storages,执行命令替换:sed -i ‘s/kafka-test/hello-storageclass/’ deployment.yaml 打开deployment.yaml,设置NFS参数,修改下图红框的四个参数,红框1和3都是NFS server地址,红框2和4都是NFS分配的文件夹目录,请您按照实际的NFS资源来设置: 创建provisioner:kubectl apply -f deployment.yaml […]

kubernetes之helm简介、安装、配置、使用指南。包含安装WordPress(转)

原文地址:https://feiutech.blog.csdn.net/article/details/81087911?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control helm简介 很多人都使用过Ubuntu下的ap-get或者CentOS下的yum, 这两者都是Linux系统下的包管理工具。采用apt-get/yum,应用开发者可以管理应用包之间的依赖关系,发布应用;用户则可以以简单的方式查找、安装、升级、卸载应用程序。 我们可以将Helm看作Kubernetes下的apt-get/yum。Helm是Deis (https://deis.com/) 开发的一个用于kubernetes的包管理器。每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成name-version.tgz格式的单一文件,方便传输和存储)。 对于应用发布者而言,可以通过Helm打包应用,管理应用依赖关系,管理应用版本并发布应用到软件仓库。 对于使用者而言,使用Helm后不用需要了解Kubernetes的Yaml语法并编写应用部署文件,可以通过Helm下载并在kubernetes上安装需要的应用。 除此以外,Helm还提供了kubernetes上的软件部署,删除,升级,回滚应用的强大功能。 Helm 组件及相关术语 Helm Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。 Tiller Tiller 是 Helm 的服务端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。 Chart Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 […]

Kubernetes入门

完成 介绍 官方文档 Kubernetes 组件 当你部署完 Kubernetes, 即拥有了一个完整的集群。 一个 Kubernetes 集群包含 集群由一组被称作节点的机器组成。这些节点上运行 Kubernetes 所管理的容器化应用。集群具有至少一个工作节点。 工作节点托管作为应用负载的组件的 Pod 。控制平面管理集群中的工作节点和 Pod 。 为集群提供故障转移和高可用性,这些控制平面一般跨多主机运行,集群跨多个节点运行。 本文档概述了交付正常运行的 Kubernetes 集群所需的各种组件。 这张图表展示了包含所有相互关联组件的 Kubernetes 集群。 控制平面组件(Control Plane Components) 控制平面的组件对集群做出全局决策(比如调度),以及检测和响应集群事件(例如,当不满足部署的 replicas 字段时,启动新的 pod)。 控制平面组件可以在集群中的任何节点上运行。 然而,为了简单起见,设置脚本通常会在同一个计算机上启动所有控制平面组件,并且不会在此计算机上运行用户容器。 请参阅构建高可用性集群 中对于多主机 VM 的设置示例。 kube-apiserver API 服务器是 Kubernetes 控制面的组件, 该组件公开了 Kubernetes API。 API 服务器是 Kubernetes 控制面的前端。 Kubernetes API 服务器的主要实现是 kube-apiserver。 […]

lWoHvYe 无悔,专一