kubernetes集群搭建(1):环境准备 中各节点已经安装好了docker,请确认docker已启动并正常运行 1.通过命令启动私库 docker run -d -p 5000:5000 --privileged =true -v /data/history:/data/registry registry 2.确认启动成功 [root@localhost ~]# docker ps CONTAINER ID :5000->5000/tcp quirky_liskov #查看私库中的镜像 [root@localhost ~]# curl -XGET http://192.168.100.6:5000/v2/ rhel7/pod-infrastructure","server","tomcat"]} [root@localhost ~]# #查看某一镜像的版本信息 访问方式为 http://ip:port/v2/ 镜像名字/tags/list [root@localhost ~]# curl -XGET http://192.168.100.6:5000/v2/server/tags/list {"name":
、AKS) 集成 1.2、Rancher 2.x 架构图 下图描述了 Rancher 管理两个 Kubernetes 集群的 Rancher server: 一个由 RKE 创建,另一个由 GKE 2、环境、软件准备 本次演示环境,我是在虚拟机上安装 RancherOS 系统来执行操作,通过虚拟机完成 Kubernetes 集群的搭建,以下是安装的软件及版本: Oracle VirtualBox 4、Rancher 2.x UI 界面 Rancher 提供了一个非常直观的 UI 界面,通过 UI 可以很方便的查看并操作 Kubernetes 集群。 5、Rancher 2.x 管理现有 Kubernetes 集群 Rancher 可以管理现有 Kubernetes 集群,通过在现有 Kubernetes 集群中启动一个 Rancher Agent 6、Rancher 2.x 基于 RKE 搭建 Kubernetes 集群 上边演示了通过导入现有 Kubernetes 集群,来实现 UI 操作托管集群,Rancher 还可以通过 RKE 方式自动搭建
,而Master节点为了便于恢复建议安装在vSphere虚拟化环境之中; (2) 稳定版本选择 (VERSION) 目前截至本文档汇总时(2020-06-20),Kubernetes 官方还在维护的 release ,为其提供存储空间; 建议采用存储服务器进行提供存储服务,并且在不考虑经费的问题上时固态无疑是最好的选择; 4.网络环境 一般来说kubernetes集群在部署安装时候为了防止错误都是将防火墙进行关闭部署的 (在线) 描述:安装K8s高可用集群至少需要三个Master节点和不限制节点数量的工作节点进行组成,否则会出现脑裂的现象; 三个 master 组成主节点集群,通过内网 loader balancer 实现负载均衡 多个 worker 组成工作节点集群,通过外网 loader balancer 实现负载均衡 WeiyiGeek.集群架构 集群安装环境说明以及IP地址规划说明: # 操作系统 CentOS # 2) 获取CA(证书)公钥哈希值 openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform
3.2、创建 RancherOS 3.3、启动 Rancher 2.x 4、Rancher 2.x UI 界面 5、Rancher 2.x 管理现有 Kubernetes 集群 6、Rancher 2.x 基于 RKE 搭建 Kubernetes 集群 7、Rancher 部署服务 1、Rancher 2.x 介绍 Rancher 是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器 4、Rancher 2.x UI 界面 Rancher 提供了一个非常直观的 UI 界面,通过 UI 可以很方便的查看并操作 Kubernetes 集群。 5、Rancher 2.x 管理现有 Kubernetes 集群 Rancher 可以管理现有 Kubernetes 集群,通过在现有 Kubernetes 集群中启动一个 Rancher Agent 6、Rancher 2.x 基于 RKE 搭建 Kubernetes 集群 上边演示了通过导入现有 Kubernetes 集群,来实现 UI 操作托管集群,Rancher 还可以通过 RKE 方式自动搭建
Kubernetes 集群。 构建的 Kubernetes 集群中。 集群可以用于开发测试,但是它不能模拟多节点的 Kubernetes 集群。 ,Amazon EKS,腾讯云,阿里云)搭建 Kubernetes 集群。 2m31s v1.24.4+k3s1 部署 Worker Deployment创建好集群之后,我们要想办法将当前的爬虫项目部署到 Kubernetes 集群中。
,这个集群要使用 Flannel 作为容器网络方案。 但是随着集群规模的扩大,mesh模式将形成一个巨大服务网格,连接数成倍增加。 /arch":"amd64","beta.kubernetes.io/os":"linux","kubernetes.io/arch":"amd64","kubernetes.io/hostname": /arch: amd64 beta.kubernetes.io/os: linux kubernetes.io/arch: amd64 kubernetes.io/hostname 集群规模多大? 是否有维护能力? 网络策略 为什么需要网络隔离?
/cri-toolsVERSION="v1.26.0"wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION /apt/sources.list.d/kubernetes.listdeb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial mainEOF /admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config其他工作节点加入集群的命令行kubeadm 9.133.33.133:6443 --token xxxx.xxxxxx \ --discovery-token-ca-cert-hash sha256:xxxxxxxx如果忘记,也可以使用个下面指令获取加入集群命令行 kubeadm token create --print-join-command安装 woker 节点加入集群(首先完成基础安装)kubeadm join 9.133.33.133:6443 --token
deployment nginx --port=88 --target-port=80 --type=NodePort #发布服务 暴露88 类型nodeport 镜像nginx kubectl get svc #查看集群 ip kubectl get svc nginx #查看集群 nginx服务 kubectl get namespce glusterfs分布式(复制模式) https://docs.gluster.org glusterd systemctl start glusterd /etc/hosts 10.4.230.206 k8s-master 10.4.230.207 node1 10.4.230.208 node2 gluster peer probe node2 k8s-master gluster peer probe node2 node1 gluster peer probe node2 node2 persitent /Volumes 存储 pv (持久卷)抽象存储如nfs cephfs,glusterd,支持权限控制 pvc (持久卷申请)会消耗pv的资源 pod申请pvc作为卷来使用,这样集群只认pv,不要管后端是什么存储
Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令 每台机器 2 GB 或更多的 RAM (如果少于这个数字将会影响你应用的运行内存 ) 2 CPU 核或更多 集群中的所有机器的网络彼此均能相互连接(公网和内网都可以) 节点之中不可以有重复的主机名、MAC 地址或 product_uuid。 [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7- 要部署使用 IPv6 地址的 Kubernetes 集群, 必须指定一个 IPv6 地址,例如 --apiserver-advertise-address=fd00::101 所有节点安装之前记得先把镜像准备好 如果你希望能够在控制平面节点上调度 Pod, 例如用于开发的单机 Kubernetes 集群,请运行: kubectl taint nodes --all node-role.kubernetes.io
一、集群部署准备 Kubernetes有三种安装方式: 1、通过yum进行安装 2、通过二进制文件进行安装 3、命令行工具kubeadm进行安装 kubeadm是Kubernetes官方提供的用于快速安装 Kubernetes集群的工具,致力于简化集群的安装过程,并解决Kubernetes集群的高可用问题。 安装 kubernetes 所需软件包: 链接:https://pan.baidu.com/s/1GoxSWAHkB3AVn9aRzGMjkQ 密码:az0o 二、部署kubernetes集群 2.1 、环境准备 准备好三台虚拟机分别做为 master、node-1、node-2 虚拟机硬件配置: master:2CPU、4G node-1:2CPU、2G node-2:2CPU、2G 网络配置 kubeadm提供了upgrade命令用于对kubeadm安装的Kubernetes集群进行升级,但是开始之前需要注意,虽然kubeadm的升级不会触及工作负载,但还是要在升级之前做好备份,升级过程可能会因为
引言 上一篇文章,我们介绍和对比了 Docker Swarm 和 Kubernetes: 容器集群管理 -- Docker Swarm vs Kubernetes 那么,功能强大却又看起来如此复杂的 2. K8s 的架构 上图就是 K8s 的全局架构。它由 Master 和 Node 两种节点构成,它们分别对应控制节点和计算节点。 我们只需要执行下面两个命令就可以部署一个 Kubernetes 集群: $ kubeadm init # 创建一个 Master 节点。 接下来,我们就可以执行下面的命令创建集群了: $ sudo kubeadm init 4.2.3 拷贝配置 如果你是在当前机器上第一次启动 kubernetes 集群,你需要按照屏幕上显示的提示执行: Kubernetes 集群中部署应用了。
之前我们在windows机器上用Minikube安装了一个单节点Kubernetes集群,这个只能当做了解k8s的练手,本篇文章我们安装一个拥有一个Master,两个Worker节点的k8s集群,作为熟悉 Kubernetes的测试集群。 [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86 go-template='{{.data.token}}' | base64 -d) eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJvYXJkLXVzZXItdG9rZW4taDh0czQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoia3Vib2FyZC11c2VyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNTQwMDg1YmUtYzRmMS00Y2Q1LWFjZDUtNTBiMDMzYTk2MTZmIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmt1Ym9hcmQtdXNlciJ9 http://任意一个Worker节点的IP地址:32567/ 输入前一步骤中获得的 token,可进入Kuboard 集群概览页面 ?
"log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" bootstrap token,只要拥有该token,任何一个安装了kubelet和kubeadm的节点都可以通过kubeadm join命令加入集群 token生成以后,kubeadm会将ca.crt 等Master节点的信息通过ConfigMap保存到etcd中,该ConfigMap的名字是cluster-info 安装默认插件,默认安装kube-proxy和coredns,用来提供整个集群的服务发现和负载均衡 集群就搭建完成了,一个崭新的Kubernetes集群就映入眼帘。 本期Kubernetes集群搭建就到这。
本文我们将介绍如何在 Windows10 下使用 WSL2 和 KinD 来搭建一套 Kubernetes 集群。在过去几年,Kubernetes 已经成为了容器编排领域事实上的标准。 虽然现在已经有各种各样的 Kubernetes 发行版本和安装程序来部署 Kubernetes 环境了,除了云环境或者裸机环境下面之外,我们仍然需要在本地部署和运行 Kubernetes 集群,特别是对于相关的开发人员 下面我们就来简要介绍下在 Windows10 下面如何安装和配置 WSL2 以及 Kubernetes 集群。 到这里 Docker 和 WSL2 的基本配置就完成了,接下来我们来安装 Kubernetes 集群。 到这里我们就完成了在 Windows 系统下面使用 WSL2 + KinD 来搭建 Kubernetes 集群,对于本地开发测试来说非常方便。
本文我们将介绍如何在 Windows10 下使用 WSL2 和 KinD 来搭建一套 Kubernetes 集群。在过去几年,Kubernetes 已经成为了容器编排领域事实上的标准。 虽然现在已经有各种各样的 Kubernetes 发行版本和安装程序来部署 Kubernetes 环境了,除了云环境或者裸机环境下面之外,我们仍然需要在本地部署和运行 Kubernetes 集群,特别是对于相关的开发人员 下面我们就来简要介绍下在 Windows10 下面如何安装和配置 WSL2 以及 Kubernetes 集群。 到这里 Docker 和 WSL2 的基本配置就完成了,接下来我们来安装 Kubernetes 集群。 到这里我们就完成了在 Windows 系统下面使用 WSL2 + KinD 来搭建 Kubernetes 集群,对于本地开发测试来说非常方便。
部署Etcd集群 Etcd 是一个分布式键值存储系统,Kubernetes使用Etcd进行数据存储,所以先准备一个Etcd数据库,为解决Etcd单点故障,应采用集群方式部署,这里使用3台组建集群,可容忍 1台机器故障,当然,你也可以使用5台组建集群,可容忍2台机器故障。 注:为了节省机器,这里与K8s节点机器复用,也可以独立于k8s集群之外部署,只要apiserver能连接到就行。 :集群通告地址 ETCD_ADVERTISE_CLIENT_URLS:客户端通告地址 ETCD_INITIAL_CLUSTER:集群节点地址 ETCD_INITIAL_CLUSTER_TOKEN:集群Token ETCD_INITIAL_CLUSTER_STATE:加入集群的当前状态,new是新集群,existing表示加入已有集群 在k8s-master1节点执行---创建etcd服务,systemd管理etcd
我们现在有这样一个需求,就是集群中多台服务的配置是不一致的。这就导致资源分配并不是均匀的,比如我们需要有些服务节点用来运行计算密集型的服务,而有些服务节点来运行需要大量内存的服务。 Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 Pod 分配到集群的节点上。 听起来非常简单,但有很多要考虑的问题: 公平 如何保证每个节点都能被分配资源 资源高效利用 集群所有资源最大化被使用 效率 调度的性能要好,能够尽快地对大批量的 Pod 完成调度工作 灵活 允许用户根据自己的需求控制调度的逻辑 /arch=amd64,kubernetes.io/hostname=k8s-node1,kubernetes.io/os=linux k8s-node2 Ready <none> 3d v1.19.4 kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node2,kubernetes.io/os=linux k8s-master
kubeadm配置的集群默认的证书是1年,到期后证书升级是个很麻烦的事情。 ,该脚本可将kubeadm生成的证书有效期更新为10年 该脚本用于处理已过期或者即将过期的kubernetes集群证书 该脚本只处理master节点上的证书:kubeadm默认配置了kubelet证书自动更新 etcd默认是不使用TLS连接,没有etcd相关证书,只需要更新master证书即可 大于等于v1.10版本,etcd默认开启TLS,需要更新etcd证书和master证书 该脚本适用于所有k8s版本集群证书更新 kubelet.conf └── pki ├── apiserver.crt ├── apiserver-kubelet-client.crt └── front-proxy-client.crt 2. 证书更新失败回滚 脚本会自动备份/etc/kubernetes目录到/etc/kubernetes.old-$(date +%Y%m%d)目录(备份目录名录示例:kubernetes.old-20200325
Kubernetes会将所有传入的数据流量路由到Kafka服务的Pod上。 步骤2:创建Kafka集群 接下来,我们需要使用Kubernetes的Deployment资源来定义Kafka集群。 步骤4:创建Zookeeper集群 接下来,我们需要创建一个Zookeeper集群来支持Kafka集群。我们可以使用Kubernetes的StatefulSet资源来定义Zookeeper集群。 value: "1" - name: ZOO_SERVERS value: "server.1=zookeeper-0:2888:3888 server.2= zookeeper-1:2888:3888 server.3=zookeeper-2:2888:3888" volumeClaimTemplates: - metadata: name 步骤5:测试Kafka集群 现在,我们已经成功地在Kubernetes上部署了一个Kafka集群。为了测试集群是否正常工作,我们可以创建一个Kafka生产者和一个Kafka消费者来测试集群。
本文主要阐述在生产环境不可连接互联网的情况下如何离线搭建K8S 集群。 从image导出镜像docker save -o registry.tar registry:23.上传registry.tar到离线服务器,导入docker load -i registry.tar2. registerdocker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2修改 k8s集群节点的dokcer daemon.json 支持https{ "registry-mirrors": ["https://registry.docker-cn.com"], "exec-opts /admin.conf#查看kubectl是否能正常使用kubectl get nodes安装 Pod 网络附加组件(master)每个集群只能安装一个 Pod 网络。