22h hpa-metrics-server-5fd795c489-ppfcz 1/1 Running 0 22h ip-masq-agent-5d2dx -2pc5q 1/1 Running 0 22h tke-bridge-agent-cz4vr 1/1 0 22h tke-cni-agent-dswc2 1/1 Running 0 22h tke-cni-agent-gc6nr 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",
Linkerd 是完全开源的,在 Apache v2 下获得许可,是一个云原生计算基金会毕业的项目。 Linkerd 具有三个基本组件:UI、数据平面和控制平面。 Server version: unavailable 第 2 步:验证您的Kubernetes 集群 Kubernetes集群可以以许多不同的方式配置。 第 3 步:将控制平面安装到集群上 现在,您已经将 CLI 本地运行,并且已准备好运行的集群,是时候安装控制平面了。 将此表单插入然后指示 Kubernetes 将这些资源添加到您的集群中。 根据集群的互联网连接速度,控制平面完成安装需要一两分钟。 用: linkerd -n emojivoto check --proxy 问题: 当你在tke上按照官方文档部署linkerd2.11版本会存在一个问题,就是linkerd-destination的policy
部署独立集群 选择运行时组件 [4xhd914usz.png? ] 容器网络选择 单节点pod的数量限制和集群service数量限制 [873rcmxuav.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
| +--------------------+ | information_schema | | nacos | +--------------------+ 2 nacos-headless.nacos.svc.cluster.local:8848 nacos-1.nacos-headless.nacos.svc.cluster.local:8848 nacos-2. SPRING_DATASOURCE_PLATFORM #最新的版本一定要这个,nacos官方的yaml漏了这个(2.2版本,2.0版本是不需要加这个) value: "mysql" 图片 附2, /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 资源对象、支持多集群管理等等。 2. 导入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 适用于将在集群中运行大规模服务的场景,开启后不能关闭。 (我这里选择新增,在创建TKE集群时,node节点同时创建好) 计费方式:选择按量计费 Node机型:当 “Node” 选择为 “新增” 时,可选。 安全加固:默认勾选 云监控:默认勾选 自动调节:可自动创建最大节点数为2的伸缩组。(根据需求开启,我这里没有勾选) 自定义数据:可设置容器的开机启动脚本,我这里没有填写。
如果需要将TKE的信息展示给多个部门的人查看,但是又不想让他们通过控制台查看,这边可以搭建一个dashborad用来展示。 这边需要提供下证书,这个证书可以是自建证书,也可以从腾讯云上申请一个免费的1年证书 image.png image.png 购买成功后,需要审核,审核通过可以下载对应的证书和rsa key image.png 2. kubernetes-dashboard get secret | grep admin-user | awk '{print $1}') 7.修改访问的svc为lb类型提供公网访问 Dashborad会创建2个 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. yaml和卸载KubeSphere的脚本 2. 部署KubeSphere到Host集群 选择一个tke集群作为host集群部署KubeSphere,安装kubesphere-installer kubectl apply -f kubesphere-installer.yaml 部署KubeSphere到member集群 选择tke集群作为member集群部署KubeSphere,安装kubesphere-installer,安装kubesphere-installer的步骤和在
下图是基于 Kubernetes 搭建 Jenkins 集群的简单示意图。 修改jenkins.yml jenkins.yml中声明了StatefulSet、Service、Ingress,由于我们是在TKE上创建,所以ingress不要也行。 把service的type申明为loadbalancer创建公网负载均衡即可提供公网入口,并且statefulset中声明了volumeClaimTemplates,若在TKE集群中创建,会调用storageclass get pod NAME READY STATUS RESTARTS AGE jenkins-0 1/1 Running 0 2m 只要jenkins是部署在集群内的,就不用填写信息。若jenkins是部署在kubernetes外,则需要填写相关的信息。
使用 TKE 来组建 Kubernetes 集群时,会面对各种配置选项,本文将介绍几个比较重要的功能选型,给出对比与选型建议,让大家少走弯路。 Kubernetes 版本 Kubernetes 版本迭代比较快,新版本通常包含许多 bug 修复和新功能,旧版本逐渐淘汰,建议创建集群时选择当前 TKE 支持的最新版本,后续出新版本后也是可以支持 Master 进行个性化定制实现高级功能) 节点操作系统 TKE 主要支持 Ubuntu 和 CentOS 两类发行版,带 “TKE-Optimized” 后缀用的是 TKE 定制优化版的内核,其它的是 linux 创建集群时,可在集群信息界面“高级设置”中自定义 Master 组件部分启动参数: ? 2. 添加节点时,可在云服务器配置界面的“高级设置”中自定义 kubelet 部分启动参数: ? 新建集群时,可在云服务器配置界面的“节点启动配置”选项处添加节点启动脚本: ? 2.
创建TKE集群第一步就是为集群配置网络信息,大家都知道云资源都是部署在vpc网络中,但是由于TKE产品特殊性,我们这里还要用到一层虚拟的网络,就是我们的容器网络,容器网络可以通过容器路由直接通过 VPC 那也就说我们需要规划下2层网络,一层是vpc网络,一层是容器网络,为什么说需要合理的规划下呢? TKE这里提供了2中集群网络模式,一种是GlobalRouter(简称GR),还有一种是vpc-cni,GR模式的集群,pod和service是需要用到容器网络的。 cr-1 (10.0.4.0/24) subnet-gz2-cr-1 (10.0.5.0/24) subnet-gz2-cni-fixed-1 (10.0.6.0/24) subnet-gz2-gr-cni 假设每个GR模式集群每个节点运行64个pod,分配2048个service,30个节点左右,可以进行如下方式分配网段 集群1:172.18.0.0/20 集群2:172.18.16.0/20 集群3:172.18.32.0
tke集群默认每个节点会安装kubectl命令的,大家可以随便登录一个节点通过kubectl命令去访问集群,但是新建集群或者新加节点到集群的时候,会出现新节点隔一段后执行kubectl命令报错的问题,具体报错如下 HOME/.kube [root@VM-8-8-centos .kube]# cat config |grep client-certificate-data | awk -F ' ' '{print $2} 组件都无法访问,那我怎么才能获取apiserver的service,其实tke这边已经在集群创建的时候就在defalut命名空间下创建了一个名称为kubernetes的service,这个service 控制台获取kubeconfig 登录腾讯云控制台,进入容器服务,点击到集群里面,在基本信息找到kubeconfig,点击下载或者复制文件 image.png 2. 获取集群的kubernetes service ip tke集群的控制台,点击服务于路由,点击service,然后选择default命名空间,记录 kubernetes这个service的服务ip。
现在很多公司项目在腾讯云上会有多个tke集群用来区分不同的环境,比如测试是一个集群,生产又是另外一个集群,很多时候我们会用到kubectl来操作集群,一般会在客户端配置集群的kubeconfig来访问集群 现在tke集群都是用每个账号的uin生成对应的kubeconfig来通过rbac鉴权,也就说你不同集群,对应的kubeconfig的user和name是一致的,都是子账号的uin,那么这里合并kubeconfig 问题描述 1.1 准备2个集群的kubecofig 首先我们准备好2个集群的kubecofig文件,这里可以看出不同集群的kubecofig的user和name都是子账号的uin。 1.3 合并kubeconfig 下面我们来合并下2个tke集群的kubeconfig,合并后会生成$HOME/.kube/config # KUBECONFIG=b3mg1p92.config:jmdg96ew.config 2. 解决方案 那么这里有这个问题,后续要怎么合并多个tke集群的kubecofig呢?其实方案很简答,我们只要修改下集群kubeconfig的user和name区分开来即可。
但在 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 (弹性网卡方案)。 : ConfigMap metadata: name: coredns namespace: kube-system data: Corefile: |2- .:53 {
当 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. 2. 部署ceph集群 因为后续创建osd会挂载数据盘,所以我们提前在tke的节点挂载一块空的数据盘,创建集群默认会部署Ceph Dashboard,默认配置是https访问,可以配置为不使用ssl证书访问, 2 Running 0 15m rook-ceph-mgr-b-54d4fc79d7-5zgmj 2/2
使用场景 TKE 中的 Coredns 服务 IP 目前没有办法在创建集群的时候指定,默认是从客户配置的 Service CIDR 网段中分配一个随机的 IP,下面将介绍如何自定义修改 Coredns 前提条件 在配置的 service CIDR 网段中选择一个目前集群中没有被使用的 IP 集群中存量的 Pods 可以接受被重建。 \CLUSTER_DNS=\"--cluster-dns=${DNS_CLUSTER_IP}\"" /etc/kubernetes/kubelet systemctl restart kubelet 2. targetPort: 53 selector: k8s-app: kube-dns sessionAffinity: None type: ClusterIP 3.重建集群中存量已有所有
前言 本次带来的分享是在TKE集群上搭建harbor私有仓库,另外推荐腾讯云的容器镜像服务TCR TCR具备以下特性: 安全管理:支持 Docker 镜像、Helm Chart 存储分发及镜像安全扫描 (配置存储) 集群 通过TKE创建一个1.16版本的托管集群,这里不赘述了,在平台上点几下即可创建集群 托管集群意思是master、etcd由腾讯云提供,只需购买node即可,无需运维 helm 通过tke的控制面板安装helm,点击申请开通后会自动安装helm2,下发tiller、swift至集群中 配置helm client 这里还需额外配置 helm client 创建存放证书目录 mkdir -pv /etc/docker/certs.d/harbor.tke.com 2. /library/busybox imagePullSecrets: - name: harborkey 总结 通过tke 以及helm工具,我们快速的创建出一个k8s集群并通过helm
在系列文章(1)中,实现了用云原生监控采集TKE集群中节点上守护进程的监控指标。接下来,进一步描述下如何用云原生监控来采集TKE集群外组件的监控指标,比如Kong。 :网络互通 采集方案 image.png 1 云原生监控支持的监控配置入口有三个:ServiceMonitors、PodMonitors、RawJobs,其中ServiceMonitors是已k8s集群中的 2 k8s集群中的service对象,可以单独创建endpoints来关联。 endpoints对象用于填写集群外具体的采集地址。 kong-monitor subsets: - addresses: - ip: 192.0.2.42 ports: - port: 8001 name: http 2
腾讯云容器服务(Tencent Kubernetes Engine ,TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务 现在我们来新建一个托管集群 进入到容器服务界面中可以看到基础的集群信息 集群地域:下拉列表,对应不同的地域,目前TKE地域支持广州、上海、北京、中国香港。 集群ID:已创建的集群会显示在这里,点进去是详细的集群信息等,后续展现 创建集群入口 填写集群信息 集群名称:集群名 新增资源所属项目:集群内新增的云主机、负载均衡器等资源将会自动分配到该项目下具体可看链接 Kubernetes版本:目前支持1.8.13、1.10.5 集群网络:为集群内主机分配在节点网络地址范围内的 IP 地址 容器网络:为集群内容器分配在容器网络地址范围内的 IP 地址 创建中 创建完成可看到基础信息 详细信息展示 点击集群id可进入到集群内 节点信息 工作负载 deployment 服务 Service
运行时版本修改 登录TKE 控制台,点击【基本信息】->【运行时组件】编辑按钮修改运行时版本,如下图: image.png 修改完毕后,集群中新添加节点将使用新的版本运行时。 存量节点修改 ⚠️ 存量节点修改运行时建议将节点【移出】再【添加已有节点】加回集群的方式,此方式会重新安装系统并初始化节点,请自行评估风险和操作时间点。 目的是将节点上的存量 Pods 优雅迁出: image.png 待驱逐 Pods 过程完成后,点击移出节点并取消勾选“销毁节点”,这样可以不销毁按量付费的 CVM: image.png 最后一步,重新将迁出的节点加入集群 : image.png image.png 待节点添加进集群完成后,该示例节点将使用修改后的运行时版本,操作完后记得检查节点的运行时版本和状态是否正常。