0 22h tke-cni-agent-dswc2 1/1 Running 0 22h tke-cni-agent-gc6nr 0 22h tke-cni-agent-kzdrw 1/1 Running 0 22h tke-cni-agent-mz8w9 k8s官网 l7-lb-controller 腾讯云lb控制器 service-controller tke-bridge-agent cni服务 tke-cni-agent cni服务 查看cni挂载到目录到文件 cd /etc/cni/net.d/ cat multus/tke-bridge.conf { "cniVersion": "0.1.0", "name": "tke-bridge", ,tke-cni-agent 这几个服务是daemonset,所有的节点都有的服务 查看cni的配置 cd /etc/cni/net.d/ cat tke-bridge.conf { "cniVersion
部署独立集群 选择运行时组件 [4xhd914usz.png? 创建集群后还可以更改配置吗?... ... master节点选择独立部署,Master&Etcd 配置的数量至少3台,worker节点至少一台。 在机型,宽带,系统方面master和worker节点的配置可以灵活的选择 信息确认创建集群 [初始化] 配置访问k8s的信息 查看集群凭证 -> 集群的信息 -> 集群api信息 -> 外网访问 -> -tke.9 172.27.16.5 Ready <none> 5h48m v1.16.3-tke.9 172.27.16.7 Ready master 5h49m v1.16.3-tke.9 查看初始化生成的安全组规则 0.0.0.0/0 TCP:30000-32768 kubelb-internet 网络出口 172.27.0.0/16 UTP/TCP:30000
ConfigMap metadata: name: nacos-cm namespace: default data: mysql.host: "172.18.253.36" #如果是K8S集群内数据库 #端口 mysql.user: "nacos" #用户 mysql.password: "nacos" #用户密码 2,创建nacos-headless 用于集群之间的链接 qcloud-app: nacos-mysql serviceName: "" template: metadata: annotations: eks.tke.cloud.tencent.com /retain-ip: "true" #EKS集群需要,TKE集群不需要这个 eks.tke.cloud.tencent.com/root-cbs-size: "20" #EKS集群需要 ,TKE集群不需要这个 labels: k8s-app: nacos-mysql qcloud-app: nacos-mysql spec:
OpenLens 是 Lens 的开源版本,是一个 Kubernetes 集群管理工具,可以帮助用户更好地管理和监控 Kubernetes 集群。 OpenLens 能够提供与 Lens 类似的功能,包括可视化集群状态、监控集群健康状况、管理 Kubernetes 资源对象、支持多集群管理等等。 导入tke集群tke集群开启apiserver的公网访问,然后控制台复制下kubeconfig点击File--->Add Cluster,将复制的kubeconfig粘贴上去,点击Add Clusters 操作tke集群资源点击Catalog,然后点击集群,就可以进入对应集群,也可以点击Add to Hotbar添加到左侧的显示栏,这样可以快速登陆pod,已经查看pod日志新建资源其他使用说明可以参考官网文档
在熟悉了TKE CVM容器集群的业务优势,现在我们来正式创建TKE CVM集群。 1.创建私有云网络。 2.创建容器集群。 2.创建容器集群 图片.png 图片.png 图片.png 图片.png 在容器服务中,点击集群,点击新建,跳转到创建集群的界面,填写集群信息。 集群名称:要创建的集群的名称。 (这里我选择centos7.2) 集群描述:填写集群的相关信息,该信息将显示在集群信息页面。 高级设置:可设置 ipvs。ipvs 适用于将在集群中运行大规模服务的场景,开启后不能关闭。 (我这里选择托管) Node:Node 配置的是集群运行服务真正使用的工作节点。您可以在创建集群时购置云服务器作为 Node 节点,也可以在集群创建完成后再添加 Node 节点。 (我这里选择新增,在创建TKE集群时,node节点同时创建好) 计费方式:选择按量计费 Node机型:当 “Node” 选择为 “新增” 时,可选。
如果需要将TKE的信息展示给多个部门的人查看,但是又不想让他们通过控制台查看,这边可以搭建一个dashborad用来展示。 HTTPS" name: dashboard-ingress namespace: kubernetes-dashboard spec: rules: - host: example.tke.niewx.cn serviceName: kubernetes-dashboard servicePort: 443 path: / tls: - hosts: - example.tke.niewx.cn
KubeSphere的多集群管理架构如下,只能有一个 H 集群存在,而多个 M 集群可以同时存在。在多集群架构中,H 集群和 M 集群之间的网络可以直接连接,或者通过代理连接。 M 集群之间的网络可以设置在完全隔离的环境中。 下面我们来实践下KubeSphere来管理多个tke集群。 1. 部署KubeSphere到Host集群 选择一个tke集群作为host集群部署KubeSphere,安装kubesphere-installer kubectl apply -f kubesphere-installer.yaml 部署KubeSphere到member集群 选择tke集群作为member集群部署KubeSphere,安装kubesphere-installer,安装kubesphere-installer的步骤和在 KubeSphere控制台添加member集群 我们登录host集群的KubeSphere控制台,根据日志提供的登录账号密码登录,会显示有一个默认的host集群 image.png 点击添加集群,并填写集群的相关信息
集群来搭建符合需求的 CI/CD 流程,然而传统的 Jenkins Slave 一主多从方式会存在一些痛点,比如:主 Master 发生单点故障时,整个流程都不可用了;每个 Slave 的配置环境不一样 下图是基于 Kubernetes 搭建 Jenkins 集群的简单示意图。 ls jenkins.yml service-account.yml 2.修改jenkins.yml jenkins.yml中声明了StatefulSet、Service、Ingress,由于我们是在TKE 把service的type申明为loadbalancer创建公网负载均衡即可提供公网入口,并且statefulset中声明了volumeClaimTemplates,若在TKE集群中创建,会调用storageclass 只要jenkins是部署在集群内的,就不用填写信息。若jenkins是部署在kubernetes外,则需要填写相关的信息。
创建TKE集群第一步就是为集群配置网络信息,大家都知道云资源都是部署在vpc网络中,但是由于TKE产品特殊性,我们这里还要用到一层虚拟的网络,就是我们的容器网络,容器网络可以通过容器路由直接通过 VPC 因为在vpc下可能不止一个集群,每个集群的网段cidr都是不能冲突的,集群有可能还需要和idc或其他vpc互通,这里通常是云联网或者对等连接,云联网和对等连接里面的路由也都是不能冲突的。 TKE这里提供了2中集群网络模式,一种是GlobalRouter(简称GR),还有一种是vpc-cni,GR模式的集群,pod和service是需要用到容器网络的。 ) 假设每个集群service大概有2048个,可以进行如下方式配置网段 A集群service网段:172.16.0.0/23 B集群service网段:172.16.2.0/23 C集群service 假设每个GR模式集群每个节点运行64个pod,分配2048个service,30个节点左右,可以进行如下方式分配网段 集群1:172.18.0.0/20 集群2:172.18.16.0/20 集群3:172.18.32.0
作者陈鹏,腾讯工程师,负责腾讯云 TKE 的售中、售后的技术支持,根据客户需求输出合理技术方案与最佳实践,为客户业务保驾护航。 使用 TKE 来组建 Kubernetes 集群时,会面对各种配置选项,本文将介绍几个比较重要的功能选型,给出对比与选型建议,让大家少走弯路。 Kubernetes 版本 Kubernetes 版本迭代比较快,新版本通常包含许多 bug 修复和新功能,旧版本逐渐淘汰,建议创建集群时选择当前 TKE 支持的最新版本,后续出新版本后也是可以支持 Master 进行个性化定制实现高级功能) 节点操作系统 TKE 主要支持 Ubuntu 和 CentOS 两类发行版,带 “TKE-Optimized” 后缀用的是 TKE 定制优化版的内核,其它的是 linux //github.com/Tencent/TencentOS-kernel 选型建议: 推荐 “TKE-Optimized”,稳定性和技术支持都比较好 如果需要更高版本内核,选非 “TKE-Optimized
tke集群默认每个节点会安装kubectl命令的,大家可以随便登录一个节点通过kubectl命令去访问集群,但是新建集群或者新加节点到集群的时候,会出现新节点隔一段后执行kubectl命令报错的问题,具体报错如下 因为在节点上执行kubectl是在集群内访问apiserver,这里我们可以直接用apiserver对应的ClusterIP类型的service来访问到后端的apiserver,很多人都是托管集群,master 组件都无法访问,那我怎么才能获取apiserver的service,其实tke这边已经在集群创建的时候就在defalut命名空间下创建了一个名称为kubernetes的service,这个service 是可以直接访问到集群的apiserver的。 获取集群的kubernetes service ip tke集群的控制台,点击服务于路由,点击service,然后选择default命名空间,记录 kubernetes这个service的服务ip。
现在很多公司项目在腾讯云上会有多个tke集群用来区分不同的环境,比如测试是一个集群,生产又是另外一个集群,很多时候我们会用到kubectl来操作集群,一般会在客户端配置集群的kubeconfig来访问集群 当我们的集群有多个时候,就需要合并多个集群kubeconfig,然后用context来切换不同集群。 现在tke集群都是用每个账号的uin生成对应的kubeconfig来通过rbac鉴权,也就说你不同集群,对应的kubeconfig的user和name是一致的,都是子账号的uin,那么这里合并kubeconfig 1.3 合并kubeconfig 下面我们来合并下2个tke集群的kubeconfig,合并后会生成$HOME/.kube/config # KUBECONFIG=b3mg1p92.config:jmdg96ew.config 解决方案 那么这里有这个问题,后续要怎么合并多个tke集群的kubecofig呢?其实方案很简答,我们只要修改下集群kubeconfig的user和name区分开来即可。
Ceph 节点、网络和 Ceph 存储集群。 当 Ceph 存储集群设定为有2个副本时,至少需要2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本,但你可以调整副本数)。 下面我们来介绍下如何利用rook搭建ceph集群,然后pod通过pvc的方式挂载到ceph存储上。 本次测试环境: tke集群:1.18.4 docker:19.03.8 rook:1.9.2 1. 部署ceph集群 因为后续创建osd会挂载数据盘,所以我们提前在tke的节点挂载一块空的数据盘,创建集群默认会部署Ceph Dashboard,默认配置是https访问,可以配置为不使用ssl证书访问, ingress.class: nginx-intranet name: ceph-ingress namespace: rook-ceph spec: rules: - host: ceph.tke.niewx.cn
但在 TKE 的 ipvs 模式下,client 访问 CLB IP 的包会真正到 CLB,所以如果在 ipvs 模式下 Pod 访问本集群 LoadBalancer 类型 Service 的 CLB 那为什么 TKE 的 ipvs 模式不是用原生 K8S 那样的转发逻辑呢(不经过 LB,直接转发到后端 pod)? 为了解决这个问题,TKE 的修复策略是:ipvs 模式不绑 EXTERNAL-IP 到 kube-ipvs0 。 TKE 通常用的 Global Router 网络模式(网桥方案),还有一种是 VPC-CNI (弹性网卡方案)。 一般来讲,访问集群内的服务避免访问本集群的 CLB,因为服务本身在集群内部,从 CLB 绕一圈不仅会增加网络链路的长度,还会引发回环问题。
使用场景 TKE 中的 Coredns 服务 IP 目前没有办法在创建集群的时候指定,默认是从客户配置的 Service CIDR 网段中分配一个随机的 IP,下面将介绍如何自定义修改 Coredns 前提条件 在配置的 service CIDR 网段中选择一个目前集群中没有被使用的 IP 集群中存量的 Pods 可以接受被重建。 targetPort: 53 selector: k8s-app: kube-dns sessionAffinity: None type: ClusterIP 3.重建集群中存量已有所有
前言 本次带来的分享是在TKE集群上搭建harbor私有仓库,另外推荐腾讯云的容器镜像服务TCR TCR具备以下特性: 安全管理:支持 Docker 镜像、Helm Chart 存储分发及镜像安全扫描 极速部署:支持具有上千节点的大规模容器集群并发拉取 GB 级大镜像,可保障容器业务的极速部署。 (配置存储) 集群 通过TKE创建一个1.16版本的托管集群,这里不赘述了,在平台上点几下即可创建集群 托管集群意思是master、etcd由腾讯云提供,只需购买node即可,无需运维 helm 通过tke的控制面板安装helm,点击申请开通后会自动安装helm2,下发tiller、swift至集群中 配置helm client 这里还需额外配置 helm client /library/busybox imagePullSecrets: - name: harborkey 总结 通过tke 以及helm工具,我们快速的创建出一个k8s集群并通过helm
腾讯云容器服务(Tencent Kubernetes Engine ,TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务 现在我们来新建一个托管集群 进入到容器服务界面中可以看到基础的集群信息 集群地域:下拉列表,对应不同的地域,目前TKE地域支持广州、上海、北京、中国香港。 集群ID:已创建的集群会显示在这里,点进去是详细的集群信息等,后续展现 创建集群入口 填写集群信息 集群名称:集群名 新增资源所属项目:集群内新增的云主机、负载均衡器等资源将会自动分配到该项目下具体可看链接 Kubernetes版本:目前支持1.8.13、1.10.5 集群网络:为集群内主机分配在节点网络地址范围内的 IP 地址 容器网络:为集群内容器分配在容器网络地址范围内的 IP 地址 创建中 创建完成可看到基础信息 详细信息展示 点击集群id可进入到集群内 节点信息 工作负载 deployment 服务 Service
这是因为您没有在集群上安装控制平面。别担心,我们会尽快解决这个问题的。 Server version: unavailable 第 2 步:验证您的Kubernetes 集群 Kubernetes集群可以以许多不同的方式配置。 第 3 步:将控制平面安装到集群上 现在,您已经将 CLI 本地运行,并且已准备好运行的集群,是时候安装控制平面了。 将此表单插入然后指示 Kubernetes 将这些资源添加到您的集群中。 根据集群的互联网连接速度,控制平面完成安装需要一两分钟。 用: linkerd -n emojivoto check --proxy 问题: 当你在tke上按照官方文档部署linkerd2.11版本会存在一个问题,就是linkerd-destination的policy
运行时版本修改 登录TKE 控制台,点击【基本信息】->【运行时组件】编辑按钮修改运行时版本,如下图: image.png 修改完毕后,集群中新添加节点将使用新的版本运行时。 存量节点修改 ⚠️ 存量节点修改运行时建议将节点【移出】再【添加已有节点】加回集群的方式,此方式会重新安装系统并初始化节点,请自行评估风险和操作时间点。 目的是将节点上的存量 Pods 优雅迁出: image.png 待驱逐 Pods 过程完成后,点击移出节点并取消勾选“销毁节点”,这样可以不销毁按量付费的 CVM: image.png 最后一步,重新将迁出的节点加入集群 : image.png image.png 待节点添加进集群完成后,该示例节点将使用修改后的运行时版本,操作完后记得检查节点的运行时版本和状态是否正常。
TKE CVM集群类型 TKE CVM容器集群支持以下两种类型: 托管集群(Master、Etcd 腾讯云容器服务管理) 独立部署集群(Master、Etcd 采用用户自有主机搭建) 备注:托管集群和独立部署集群可以参考 :《集群概述》 业务架构 1.业务在物理机上的架构 2.业务在CVM上的架构 3.业务在TKE CVM容器集群上的架构 4.TKE CVM容器集群业务优势 1. 业务在TKE CVM容器集群上的架构 图片.png TKE 采用兼容标准的 Kubernetes 集群,包含以下组件: Master:用于管控集群的管理面节点。 Etcd:保持整个集群的状态信息。 TKE CVM容器集群业务优势 1.业务交付周期短:只需制作好业务镜像,容器基于业务镜像在秒级内启动,且可动态快速设置实例数量,相对物理机和CVM等业务交付和机器数量变更,极大的节省了交付周期。 2.业务半自动化:可通过TKE配置管理功能,快速变更pod下的容器批量配置,实现业务的自动化。