-pod-network-cidr=10.244.0.0/16 \ --ignore-preflight-errors=all 解释 --apiserver-advertise-address 集群通告地址 --image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址 --kubernetes-version K8s版本,与上面安装的一致 --service-cidr 集群内部虚拟网络,Pod统一访问入口 --pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致 --ignore-preflight-errors=all 忽略错误 向集群添加新节点,执行在kubeadm init输出的kubeadm join命令 kubeadm join192.168.4.10:6443 --token oweerb.nonsh3zl5a8no0od account并绑定默认cluster-admin管理员集群角色: 创建用户 kubectl create serviceaccount dashboard-admin -n kube-system
/ Service 是 k8s 中为多个 pod 公开网络服务的抽象方法。 在 k8s 中,每个 pod 都有自己的 ip 地址,而且 Service 可以为一组 pod 提供相同的 DNS ,使得多个 pod 之间可以相互通讯,k8s 可以在这些 pod 之间进行负载均衡。 KUBERNETES_PORT=tcp://10.96.0.1:443 KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443 KUBERNETES_PORT_443_TCP_PROTO Service 外部服务类型 k8s 中可以将一个 Service 暴露到集群外部,外界可以通过 ip 访问这个 Service。 kubeadm kubeadm init、kubeadm join 创建集群和使节点加入集群。
添加hosts解析 cat /etc/hosts 10.39.7.51 k8s-master-51 10.39.7.57 k8s-master-57 10.39.7.52 k8s-master /manifests \ --bootstrap-kubeconfig=/etc/kubernetes/bootstrap.kubeconfig \ --kubeconfig=/etc/kubernetes /kubelet.config \ --config=/etc/kubernetes/kubelet.config.json \ --cert-dir=/etc/kubernetes/pki \ node name 2018-12-12 06:39:44.949 [INFO][8] startup.go 280: Determined node name: k8s-master-51 Calico scheduler.alpha.kubernetes.io/critical-pod: '' spec: nodeSelector: beta.kubernetes.io
使用prometheus全方位监控k8s集群 prometheus架构 Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。 为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会(CNCF),成为继Kubernetes之后的第二个托管项目。 集群中部署的,所以使用svc的dns即可(名称配置成Prometheus,这样是为了方便使用模板获取数据) ? 监控k8s集群中的pod,node以及资源状态 pod 监控使用的yml(获取这些文件请加QQ122725501) $ ls -l kube-* -rw-r--r-- 1 root root 2362 root root 58945 Dec 23 2019 K8S集群资源监控-20191219.json ?
1/1 Running 0 5h 172.16.60.3 k8s-node2 default default serverrc-8s274 1/1 Running 0 5h 172.16.20.2 172.16.60.2 k8s-node2 kubectl describe pod POD-NAME -n NAMESPACE #查看具体pod详情,在排错时尤为实用 kubectl get ep #获取service的endpoint信息 NAME ENDPOINTS AGE kubernetes kubectl logs -f POD-NAME #查看节点控制台日志 etcdctl cluster-health # 查看etcd集群状态
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过, 我们在讲解kubectl的命令的时候讲过一个参数top,可以查看我们集群的监控信息,但是这个命令默认无法使用,因为还没有安装监控组件。虽然这个Prometheus组件部署以后这个指令还是不可用。 目前在Kubernetes集群的监控里面Prometheus已经是事实上的标准,所以我们的的监控也是基于他来讲解的。 拉取(Pull)模型 Prometheus 主动从目标服务 拉取指标数据(通过 HTTP 协议),适合动态环境(如 Kubernetes)。 简单理解Prometheus通过记录各种监控数据在不同时间段的值,然后通过这些值,我们可以获得集群的运行状态,然后设置对应的阈值进行报警。
Kubernetes作为容器的编排平台,它是以集群的形式为业务提供服务。所以在日常的工作中,作为Kubernetes平台的维护者,会经常对集群进行管理。 这里,我将集群管理分为以下几种: 安装集群 前置说明 Kubernetes的集群安装分为:kubeadm安装和二进制安装。在这里,只会介绍kubeadm的安装。 更新集群 集群的更新操作有很多,比如创建或删除应用、添加或者删除节点等,这里主要介绍几种常用的操作: 升级集群 更新集群证书 添加或删除集群 升级集群 Kubernetes社区新版本的推出速度很快的,至少保持一年 velero 是开源方案,项目地址:https://velero.io/ velero的作用: 灾备能力:提供备份恢复k8s集群的能力 迁移能力:提供拷贝集群资源到其他集群的能力 和 etcd 备份的区别 etcd 更适合单集群内数据备份,不太适合集群迁移 etcd 是当前状态备份,velero 可以做到只备份集群内的一部分资源 velero 会在你的 k8s 集群上运行一个 server pod,然后配合
本博客搭建k8s集群1.12.2版本 1. 准备2台以上最低2核4G的服务器 2. 查看两条命令是否返回的都是1 验证k8s依赖 rpm -ql kubelet 执行以上命令看屏幕结果是否如下 /etc/kubernetes/manifests #清单目录/etc/sysconfig /12 注意如果使用最新版本的话不需要使用–kubernetes-version参数 命令执行后k8s会进行一系列的检查,比如说: Linux 内核的版本必须是否是 3.10 以上? 使用上方安装master结束后记住的命令加入到集群中 kubeadm join 172.26.15.165:6443 --token ns4kps.j8cuqwf78emp5a5b --discovery-token-ca-cert-hash kubectl get nodes 至此k8s集群就搭建完成了。
1、Kubernetes(k8s)架构图,如下所示: 1)、etcd的官方将它定位成一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转。 4)、Federation:提供一个可以跨集群中心多K8S统一管理功能。 5)、Prometheus:提供K8S集群的监控能力。 6)、Elk:提供 K8S 集群日志统一分析介入平台。 答:Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。 5)、Federation,提供跨可用区的集群。 6)、Fluentd-elasticasearch,提供集群日志采集、存储与查询。 18、Kubernetes架构图,如下所示: ? ---- 1、Kubernetes(k8s)集群安装。 首先,查看CentOS7内核版本及发行版本。
Kubernetes(k8s)集群安装JupyterHub以及Lab 背景 JupyterHub 为用户组带来了笔记本的强大功能。 resources/reference.html # # Chart default values: https://github.com/jupyterhub/zero-to-jupyterhub-k8s TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default kubernetes TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default kubernetes kube-dns-upstream ClusterIP 10.68.221.104 <none> 53/UDP,53/TCP 16h kube-system kubernetes-dashboard
如果您有其他想要了解的,欢迎私信联系我~ 背景介绍 使用 kubeadm 安装的 Kubernetes 集群,运行一段时间后执行 kubectl 命令突然出现以下报错: Unable to connect 集群证书已经过期(默认有效期 365 天),处理方法是对 Kubernetes 集群证书进行更新以重置有效期,本文将介绍具体处理过程。 相关概念 Kubernetes 集群证书是用于在 Kubernetes 集群中实现安全通信的关键组件,主要用于在集群的各个组件之间建立信任和进行身份验证。 Kubernetes 集群证书包括: CA(证书颁发机构)证书:用于签名其他证书,是信任链的根 API Server 证书:用于 API Server 的 TLS 认证 kubelet 证书:用于 kubelet :用于服务账户与 API Server 之间的通信 kubeadm 是 Kubernetes 集群的启动和初始化工具,它在创建集群时生成 Kubernetes 集群证书,并默认设置有效期为一年。
,这个集群要使用 Flannel 作为容器网络方案。 但是随着集群规模的扩大,mesh模式将形成一个巨大服务网格,连接数成倍增加。 "k8s-node01","kubernetes.io/os":"linux"}' creationTimestamp: 2020-06-04T07:24:40Z labels: beta.kubernetes.io : k8s-node01 kubernetes.io/os: linux name: k8s-node01 resourceVersion: "50638" uid: 16452357 集群规模多大? 是否有维护能力? 网络策略 为什么需要网络隔离?
部署 Kubernetes 集群的方式有很多种,典型的方式有下面几种: Play with Kubernetes (PWK) Docker Desktop云厂商的 k8s 服务,例如 Google Kubernetes Kubernetes 集群。 构建的 Kubernetes 集群中。 集群可以用于开发测试,但是它不能模拟多节点的 Kubernetes 集群。 ,我们要想办法将当前的爬虫项目部署到 Kubernetes 集群中。
/apt/sources.list.d/kubernetes.listdeb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial mainEOF 节点启动 kubelet使用 kubeadm 初始化# 9.133.33.133 为 master 节点 ip,需要保证工作节点可以通过此 ip 访问当 master 节点# 如果是部署标准化环境,k8s /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 glusterfs-server #yum 安装 systemctl enable 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 node2 persitent/Volumes 存储 pv (持久卷)抽象存储如nfs cephfs,glusterd,支持权限控制 pvc (持久卷申请)会消耗pv的资源 pod申请pvc作为卷来使用,这样集群只认
192.168.17.150 k8s-node-1 192.168.17.151 k8s-node-2' >> /etc/hosts 关闭三台机器上的防火墙 systemctl disable [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 /master- 加入节点(NODE执行) K8S集群node节点执行,master 节点init 成功后的命令 节点是你的工作负载(容器和 Pod 等)运行的地方。
一、集群部署准备 Kubernetes有三种安装方式: 1、通过yum进行安装 2、通过二进制文件进行安装 3、命令行工具kubeadm进行安装 kubeadm是Kubernetes官方提供的用于快速安装 Kubernetes集群的工具,致力于简化集群的安装过程,并解决Kubernetes集群的高可用问题。 安装 kubernetes 所需软件包: 链接:https://pan.baidu.com/s/1GoxSWAHkB3AVn9aRzGMjkQ 密码:az0o 二、部署kubernetes集群 2.1 这里演示的是以 K8S 1.15版本为例,具体的版本升级以你们自己实验机上安装的版本号为准!!! kubeadm提供了upgrade命令用于对kubeadm安装的Kubernetes集群进行升级,但是开始之前需要注意,虽然kubeadm的升级不会触及工作负载,但还是要在升级之前做好备份,升级过程可能会因为
之前我们在windows机器上用Minikube安装了一个单节点Kubernetes集群,这个只能当做了解k8s的练手,本篇文章我们安装一个拥有一个Master,两个Worker节点的k8s集群,作为熟悉 Kubernetes的测试集群。 配置要求 3台8核16G的机器,一个Master,两个Worker RedHat7.2 Kubernetes v1.15.1 Docker 18.09.7 安装Docker 1.卸载旧版本 $ sudo 基本配置 配置K8S的yum源 # 在 master 节点和 worker 节点都要执行 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes http://任意一个Worker节点的IP地址:32567/ 输入前一步骤中获得的 token,可进入Kuboard 集群概览页面 ?
引言 上一篇文章,我们介绍和对比了 Docker Swarm 和 Kubernetes: 容器集群管理 -- Docker Swarm vs Kubernetes 那么,功能强大却又看起来如此复杂的 整个集群的持久化数据,则由 kube-apiserver 处理后保存在 etcd 中。 2.2 Node 节点 Node 节点即 Kubernetes 的计算节点。 我们只需要执行下面两个命令就可以部署一个 Kubernetes 集群: $ kubeadm init # 创建一个 Master 节点。 接下来,我们就可以执行下面的命令创建集群了: $ sudo kubeadm init 4.2.3 拷贝配置 如果你是在当前机器上第一次启动 kubernetes 集群,你需要按照屏幕上显示的提示执行: Kubernetes 集群,下一篇文章,我们就会详细来介绍如何在这个 Kubernetes 集群中部署应用了。
本文演示k8s集群搭建步骤,并不涉及k8s基础知识,你可能对文章的一些专业词语感到默生,但没有关系,我们在后面会循序渐进地介绍k8s知识。 文章目录 一、准备环境 二、安装docker与kubeadm 三、k8s集群初始化 本次我们将部署一个主节点(master1)和两个工作节点(worker1、worker2)的集群。 /apt/doc/apt-key.gpg | apt-key add - # 添加 k8s 镜像源 cat <<EOF > /etc/apt/sources.list.d/kubernetes.list /kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config 04 初始化集群工作节点 而且,你在安装集群的过程中,最好处于一个优质的网络环境。 至此,集群搭建完毕。从下一篇文章开始我们将继续介绍k8s基础知识 end