![](https://img-blog.csdnimg.cn/d61cf7bdf9654f45804d047d69ad6238.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Kubernetes
文章平均质量分 87
k8s 相关总结记录
elihe2011
Golang, Python, Docker, K8S
展开
-
K8S MetalLB LoadBalancer
metallb loadbalancer kubernetes BGP openwrt原创 2023-08-11 15:41:38 · 1530 阅读 · 2 评论 -
K8S 网络策略
1. 网络策略NetworkPolicy 是一种以应用为中心的结构,允许你设置如何允许 Pod 与网络上的各类网络 “实体” 通信,在 IP/Port (L3/L4) 层面控制网络流量,用于隔离应用以减少攻击面。Pod 之间能否通信,可通过如下三个组合进行确认:其他被允许的 Pods (例如:Pod 无法限制对自身的访问)被允许的 namespaceIP CIDR (例如:与Pod运行所在节点的节点的通信总是被允许的)支持的网络插件:CalicoCanalCiliumKube-ro原创 2022-03-15 20:24:21 · 1668 阅读 · 0 评论 -
K8S Calico
1. 概述Calico是一个基于 BGP 的纯三层网络方案。它在每个计算节点都利用 Linux kernel 实现了一个高效的虚拟路由器 vRouter 来进行数据转发。每个 vRouter 都通过 BGP 协议将本节点上运行容器的路由信息向整个 Calico 网络广播,并自动设置到达其他节点的路由转发规则。Calico 保证所有容器之间的数据流量都通过 IP 路由的方式完成互联互通。Calico 节点组网可以直接利用数据中心的网络结构 (L2/L3),不需要额外的 NAT,隧道或者 Overlay 网原创 2022-02-22 19:11:49 · 648 阅读 · 0 评论 -
K8S Core-DNS
1. Kube-dns1.1 概述KubeDNS 由三部分构成:kube-dns:核心组件KubeDNS:依赖 client-go 中的 informer 机制,监听 Service 和 Endpoint 的变化情况,并将相关信息更新到 SkyDNS 中SkyDNS:负责 DNS 解析,监听在 10053 端口,同时也监听在 10055 端口提供 metrics 服务dnsmasq:区分 Domain 是集群内部还是外部,给外部域名提供上游解析,内部域名发往10053端口,并将解析原创 2022-02-21 17:05:42 · 1489 阅读 · 0 评论 -
TDEngine 集群安装 (K8S)
1. 构建镜像1.1 entrypoint.sh#!/bin/bashset +eulimit -c unlimitedsysctl -w kernel.core_pattern=/corefile/core-%e-%pif [ "x$TZ" != "x" ]; then ln -sf /usr/share/zoneinfo/$TZ /etc/localtimefiif [ "$TAOS_FQDN" = "" ]; then echo "TAOS_FQDN not se原创 2022-02-15 17:27:26 · 2321 阅读 · 0 评论 -
K8S Flannel
1. 简介Flannel 由CoreOS开发,用于解决docker集群跨主机通讯的覆盖网络(overlay network),它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不同的ip;让所有的容器认为大家在同一个直连的网络,底层通过UDP/VxLAN/Host-GW等进行报文的封装和转发。实现原理:集群中的不同节点上,创建的Pod具有全集群唯一的虚拟IP地址。建立一个覆盖网络(overlay network),通过这个覆盖网络,将数据包原封不动的传递到目标容器。原创 2022-02-15 16:41:37 · 3479 阅读 · 0 评论 -
K8S 网络CNI
1. 简介CNI: 容器网络接口(Container Network Interface):由Google和Core OS主导制定的容器网络标准,它仅仅是一个接口,具体的功能由各个网络插件自己去实现:创建容器网络空间(network namespace)将网络接口(interface)放到对应的网络空间为网络接口分配IP等容器删除时,回收网络资源CNI不仅定义了接口规范,同时也提供了一些内置的标准实现,以及libcni这样的“胶水层”,大大降低了容器运行时与网络插件的接入门槛注意:Doc原创 2022-02-14 16:04:41 · 2653 阅读 · 0 评论 -
MySQL8.0 集群安装 (K8S)
尝试了很多版本的mysql镜像,都存在这样那样的的问题。原始需求中,需要同时支持x86_64(AMD64)和aarch64(ARM64V8),最后找到Oracle官方出品的MySQL-Server 8.0镜像包,作为基础镜像包,并在其基础上做一些定制。当然还存在一些问题,比如my.cnf通过configmap定制等等,后续慢慢优化补充。1. 构建镜像1.1 重写 my.cnf[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock原创 2022-02-08 16:25:05 · 2855 阅读 · 1 评论 -
K8S Flannel
1. 简介flannel是CoreOS提供用于解决Dokcer集群跨主机通讯的覆盖网络工具。它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不同的ip;让所有的容器认为大家在同一个直连的网络,底层通过UDP/VxLAN等进行报文的封装和转发。Flannel 是一种“覆盖网络(overlay network)”,也就是将TCP数据包装在另一种网络包里面进行路由转发和通信,目前已经支持udp、vxlan、host-gw、aws-vpc、gce和alloc路由等数据转发方式,默认的原创 2021-12-28 15:17:23 · 741 阅读 · 0 评论 -
K8S Label 和 Selector
1.Label标签(labels):附加到 k8s 对象上的键值对。用于指定对用户有意义且相关的对象的标识属性。示例标签:"release" : "stable", "release" : "canary""environment" : "dev", "environment" : "qa", "environment" : "production""tier" : "frontend", "tier" : "backend", "tier" : "cache""partition" : "c原创 2021-12-27 11:23:38 · 2411 阅读 · 0 评论 -
K8S 安全认证
1. 安全机制1.1 认证 (Authentication)1.1.1 认证方式HTTP Token:Authorization: Bearer $TOKENHTTP Basic: Authorization: Basic $(base64encode USERNAME:PASSWORD),HTTPS: 基于CA根证书签名的客户端身份认证方式(推荐)证书颁发:手动签发:通过k8s集群的根 ca 进行签发 HTTPS 证书自动签发:kubelet 首次访问 API Serv原创 2021-12-27 10:52:01 · 3920 阅读 · 0 评论 -
K8S Service 总结
1. 概念Service 是一个 L4 (TCP/UDP/SCTP) Load Balancer,它通过kube-proxy,使用 DNAT 将入站流量重定向到后端 Pod中。通过创建 Service, 可以为一组功能相同的容器提供一个统一的入口,并将请求均衡负载发送到后端的各个容器上通过 Label Selector ,实现 SVC 与容器组关联负载均衡算法默认使用 RR (Round-Robin 轮询调度)亲和性:通过service.spec.sessionAffinity = Client原创 2021-12-27 10:02:44 · 679 阅读 · 2 评论 -
K8S kubectl命令总结
1. 创建 Pod# kubectl runkubectl run nginx --image=nginx --port=80kubectl run -it busybox --rm=true --image=busybox:1.28.4 -- /bin/sh2. 暴露端口# kubectl exposekubectl expose pod nginx --type=NodePort --port=8000 --target-port=80Port configurations for原创 2021-12-27 09:21:18 · 978 阅读 · 0 评论 -
K8S 存储管理
1. 卷Kubernetes 中卷的本质是目录,给 pod 中的容器使用,至于卷的类型,它不关心。它解决的问题:容器磁盘上的文件生命周期是短暂的,容器重启后,之前新增的文件将丢失,即以干净的初始状态启动pod 中多个容器可能需要共享文件生命周期:容器重启,volume 数据还在Pod重启,volume 数据可能丢失常见的 volume 类型:emptyDir: 初始内容为空的卷hostPath: 挂载宿主机文件或目录nfs: 挂载 NFS 卷cephfs:挂载 CephFS原创 2021-12-23 19:51:05 · 984 阅读 · 0 评论 -
K8S 配置管理
1. ConfigMap用途:应用配置管理,实现配置数据和应用程序代码分离典型场景:替换环境变量替换配置文件热更新:挂载的 ENV 不会同步更新挂载的 Volume 延迟更新 (10s左右)1.1 创建配置# 使用字面值创建kubectl create configmap mysql-config --from-literal=db.host=192.168.3.100 --from-literal=db.port=3306# 通过文件创建kubectl create co原创 2021-12-23 19:08:30 · 1136 阅读 · 0 评论 -
K8S 资源控制器
1. 概述kubernetes 控制器会监听资源的 创建/更新/删除 事件,并触发 Reconcile 函数作为响应。整个调整过程被称作 “Reconcile Loop”(调谐循环) 或者 “Sync Loop“(同步循环)Reconcile 是一个使用资源对象的命名空间和资源对象名称来调用的函数,使得资源对象的实际状态与 资源清单中定义的状态保持一致。调用完成后,Reconcile 会将资源对象的状态更新为当前实际状态。for { desired := getDesiredState() c原创 2021-12-23 14:39:47 · 2280 阅读 · 0 评论 -
K8S Pod概述
1. 基本概念Pod 是 kubernetes 的最基本调度单元Pod 只是个逻辑概念,真正起作用的是 Linux 容器的 Namespace 和 Cgroup,Pod 本质上一个共享某些资源的容器组。Infra 容器:在 Pod 中共享同一个 Network Namespace 和 Volume2. 生命周期1)kubectl --> apiserver --> CRI --> kubelet 环境初始化2)启动Pause容器: 初始化网络和数据卷。其镜像由汇编写成原创 2021-12-23 13:30:56 · 964 阅读 · 0 评论 -
K8S 核心组件
1. API-Server1.1 核心功能核心功能:资源操作入口提供集群管理的 REST API 接口,包括认证授权、准入控制、数据校验以及集群状态变更等其他模块之间的数据交互和通信的枢纽。只有 ApiServer 能直接操作 Etcd,其他模块均需要通过它来查询或修改数据 1.2 集群接入1.2.1 集群配置$ kubectl config viewapiVersion: v1clusters:- cluster: certificate-authority-data:原创 2021-12-22 19:18:05 · 264 阅读 · 0 评论 -
K8S 基础概念
1. 概述Kubernetes,又称为 k8s(首字母为 k、首字母与尾字母之间有 8 个字符、尾字母为 s,所以简称 k8s)或者简称为 “kube” ,是一种可自动实施 Linux 容器 操作的开源平台。它可以帮助用户省去应用容器化过程的许多手动部署和扩展操作。也就是说,您可以将运行 Linux 容器的多组主机聚集在一起,由 Kubernetes 帮助您轻松高效地管理这些集群。而且,这些集群可跨 公共云、私有云或混合云部署主机。因此,对于要求快速扩展的云原生应用而言,Kubernetes 是理想的托管原创 2021-12-22 09:58:14 · 632 阅读 · 0 评论 -
K8S 集群调度
1. 集群调度k8s 调度器 scheduler,它以独立的程序允许,启动后和一直和 APIServer 连接,获取 PodSpec.NodeName 为空的 pod, 然后将其 binding 调度到合适的的节点上。需考虑如下问题:公平: 如何确保每个节点都被分配资源高利用率:集群资源最大化被使用效率:调度性能要好,能够快速完成大批量的 pod 调度灵活:允许用户个性化调度需求2. 调度过程总结:预选 + 优选2.1 Predicate 预选作用:首先过滤掉不满足条件的节点过程:如原创 2021-12-21 19:49:26 · 695 阅读 · 0 评论 -
Kafka 集群安装 (K8S)
1. 构建镜像1.1 entrypoint.sh#!/bin/bashNODE_ID=${HOSTNAME:6}LISTENERS="CONTROLLER://:9093,PLAINTEXT://0.0.0.0:9092,EXTERNAL://0.0.0.0:$((30090 + $NODE_ID))"ADVERTISED_LISTENERS="PLAINTEXT://kafka-$NODE_ID.$SERVICE.$NAMESPACE.svc.cluster.local:9092,EXTERN原创 2021-12-10 15:56:17 · 2186 阅读 · 1 评论 -
Kubernetes 集群安装(kubadm) 单控制节点
1. 准备工作角色IP组件k8s-master192.168.80.100kube-apiserver,kube-controller-manager,kube-scheduler,docker, etcdk8s-node01192.168.80.101kubelet,kube-proxy,docker,etcdk8s-node02192.168.80.102kubelet,kube-proxy,docker,etcddocker 版本:docker-c原创 2021-12-10 15:38:35 · 1576 阅读 · 0 评论 -
K8S 核心组件
1. kube-apiserver1.1 核心功能核心功能:资源操作入口提供集群管理的 REST API 接口,包括认证授权、准入控制、数据校验以及集群状态变更等其他模块之间的数据交互和通信的枢纽。只有 ApiServer 能直接操作 Etcd,其他模块均需要通过它来查询或修改数据1.2 集群接入1.2.1 集群配置$ kubectl config viewapiVersion: v1clusters:- cluster: certificate-authority-dat原创 2021-07-13 14:24:41 · 491 阅读 · 0 评论 -
K8S 二进制安装
K8S 二进制安装1. 环境准备1.1 安装规划1.2 系统设置2. 安装 docker3. TLS 证书3.1 证书工具3.2 证书归类3.3 CA 证书3.4 etcd 证书3.5 kube-apiserver 证书3.6 kube-controller-manager 证书3.8 kube-scheduler 证书3.9 admin 证书3.10 kube-proxy 证书3.11 证书信息3.12 分发证书4. 安装 etcd4.1 节点 etcd-14.2 其他节点4.3 启动5. Master原创 2021-06-11 15:56:29 · 1001 阅读 · 2 评论