Grafana-嵌入前端
Grafana-嵌入前端IntroduceGrafana能展示好看的图表,但是前端不能直接展示
Quick Startiframe模式演示使用prometheus中的grafana,K8s部署
添加配grafana置项
# 允许嵌入[security] allow_embedding = true # 允许匿名登入[auth.anonymous] enabled ...
K8s-网络模型
K8s-网络模型K8s场景网络主要有以下几种:
Container-to-Container网络
Pod-to-Pod网络
Pod-to-Service网络
Internet-to- Service网络
Container-to-Container网络虚拟机网络:
在Linux 系统中,其实本质上在network namespace通信,每一个network namespace提供逻辑的网络堆栈,创建的namespace,会被挂载到/var/run/netns
# 添加一个network namespaceip netns add ns1# 查看所有network namespaceip netns# 查看挂载点ls /var/run/netns
默认情况下,Linux所有的进程都被分配到root network namespace
在K8s网络下,所有Pod下的容器共享一个网络:
在这个network namespace下使用同一个IP和同一个端口空间
通过localhost自然也可以访问Pod下的其他容器
Pod-to-Pod的网络Pod和Pod之间的通信,其实就是 ...
Istio-初识
Istio-初识What is Istio?
Istio是一个用于服务治理的开发平台
Istio是一个Service Mesh形态的服务治理开发平台
Istio是一个Kubernetes紧密结合的适用于云原生场景的Service Mesh形态的平台
Main of Istio
自动注入:创建应用程序自动注入Sidecar代理。在K8s下创建Pod,Kube-apiserver调用管理面组件的Sidecar-Injector服务,自动修改应用程序的描述信息并注入Sidecar。在真正创建Pod,创建业务容器会在容器Pod内创建Sidecar容器
流量拦截:在Pod初始化的时候设置iptables规则,当流量到达根据iptables的规则拦截Inbound流量和Outbound流量到Sidecar
服务发现:服务发起方的Envoy调用管理面组件Pilot的服务发现接口获取目标服务的实例列表
负载均衡:服务发起方的Envoy根据配置的负载均衡策略选择服务实例,连接对应的实例地址
流量治理:Envoy从Pilot中获取配置的流量规则,在拦截到Inbound流量和Outbound流量执行治理 ...
cri-o的安装
cri-o的安装CRI-O是一个为容器运行时提供轻量级、高效和符合标准的解决方案的开源项目。它是Kubernetes使用的容器运行时接口(CRI)规范的实现之一。
安装1.关闭防火墙等#!/bin/bash# 关闭 防火墙systemctl stop firewalldsystemctl disable firewalld# 关闭 SeLinuxsetenforce 0sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config# 关闭 swapswapoff -ayes | cp /etc/fstab /etc/fstab_bakcat /etc/fstab_bak |grep -v swap > /etc/fstab# 修改 /etc/sysctl.conf# modprobe br_netfilter# 如果有配置,则修改sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g" /etc/sysctl ...
K8s-公网部署集群
K8s 公网部署集群BackGroud在公网环境下,或者需要跨局域网组成集群下。需要让Master以公网IP启动,而kubeadm init 参数启动,只支持局域网。
Deploy
获取配置文件kubead config default > k8s-init.yaml,localAPIEndpoint.advertiseAddress就是公网IP地址
最新使用 kubeadm config print init-defaults > k8s-init.yamlapiVersion: kubeadm.k8s.io/v1beta2bootstrapTokens:- groups: - system:bootstrappers:kubeadm:default-node-token token: abcdef.0123456789abcdef ttl: 24h0m0s usages: - signing - authenticationikind: InitConfigurationlocalAPIEndpoint: advertiseAddress: 121 ...
StatefulSet[实例]-Mysql集群
StatefulSet[实例]-Mysql集群Introduce基于StatefulSet搭建K8s集群中的Mysql集群
—个‘主从复制”(MaserˉSlaveReplicatjon)的MySQL集群;
有一个主节点(Master);
有多个从节点(Slave);
从节点需要能水平扩展;
所有写操作只能在主节点上执行;
读操作可以在所有节点上执行
How to work
通过XtraBackup实现MySql备份
配置从节点,复制到/var/lib/mysql,执行
CHANGE MASTER TOMASTER_HOST='$masterip';MASTER_USER='xxx';MATSER_PASSWORK='xxx';# 这个文件来资源第一个创建的xtrabackup_binlog_infoMASTER_LOG_FILE='TheMaster-bin.00001';MASTER_LOG_POS=481;
启动节点备份:
START SLAVE;
添加节点
D ...
Goland—远程Debug
Goland—远程DebugIntroduce主要是本地不能调试的代码,通过Goland远程断点调试
步骤1. 安装Gocurl https://github.com/Piwriw/k8s_example_tools/blob/master/setup-packages/go/setup-linux.sh -o setup-go.shsh setup-go.sh 1.192. 安装dlvgo install github.com/go-delve/delve/cmd/dlv@latest3. 安装gcccgo: C compiler "gcc" not found: exec: "gcc": executable file not found in $PATHyum install -y gccapt install -y gcc4. 远程服务器启动dlv
Kubeedge-解析获取Token(keadm gettoken)
Kubeedge-解析获取Token(keadm gettoken)什么是keadm gettokenleads gettoken一般用于我们接入cloudcore的token的值的获取。
如何获取token通过解析keadm gettoken源码,我们发现,其实keadm gettoken本质上就是查询下了kubeedge namespace 下的name为tokensecret 的Secret的tokendata的值
https://github.com/kubeedge/kubeedge/blob/4ab8abe101e1037415d2c641feef642ab73a1d47/keadm/cmd/keadm/app/cmd/cloud/gettoken.go#L63
这是一个Kubeedge 获取token的最简单的抽象:
package mainimport ( "context" "fmt" metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/cli ...
K8s-解析云上初始化(keadm init)
K8s-解析云上初始化(keadm init)什么是keadm initkeadm init通过keadm init可以实现初始化cloudcore。
解析keadm init过程
ExecuteInit就是真正执行init的方法,实际上是通过实现了InstallTools接口函数的方法实现的
所以InstallTools方法实现了init的进入函数
真正实现下载安装的函数是runHelmInstall
// IsKubeEdgeProcessRunning checks if the given process is running or notfunc IsKubeEdgeProcessRunning(proc string) (bool, error) { //pidof是Linux系统中用来查找正在运行进程的进程号(pid)的工具 // proc=cloudcore procRunning := fmt.Sprintf("pidof %s 2>&1", proc) cmd := NewCommand(pro ...
K8s-GC(垃圾回收)
K8s-GC(垃圾回收)什么是GC Kubernetes garbage collector(垃圾回收器)的作用是删除那些曾经有 owner,后来又不再有 owner 的对象。
通过metadata.ownerReferences可以知道Pod所属的对象
垃圾收集器如何删除从属对象当删除某个对象时,可以指定该对象的从属对象是否同时被自动删除,这种操作叫做级联删除(cascading deletion)。级联删除有两种模式:后台(background)和前台(foreground)
如果删除对象时不删除自动删除其从属对象,此时,从属对象被认为是孤儿(或孤立的 orphaned)。
Foreground级联删除在 foreground 级联删除模式下,根对象(直接被删除的对象)先进入“正在删除”(deletion in progress)状态,此时:
对象仍然可以通过 REST API 查询到(可通过 kubectl 或 kuboard 查询到)
对象的 deletionTimestamp 字段被设置
对象的 metadata.finalizers 包含值 foregroundDelet ...