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 123456# 添加一个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.关闭防火墙等123456789101112131415161718192021222324252627282930#!/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.i...
K8s-公网部署集群
K8s 公网部署集群BackGroud在公网环境下,或者需要跨局域网组成集群下。需要让Master以公网IP启动,而kubeadm init 参数启动,只支持局域网。 Deploy 获取配置文件kubead config default > k8s-init.yaml,localAPIEndpoint.advertiseAddress就是公网IP地址 最新使用 kubeadm config print init-defaults > k8s-init.yaml12345678910111213141516171819202122232425262728293031323334353637383940apiVersion: kubeadm.k8s.io/v1beta2bootstrapTokens:- groups: - system:bootstrappers:kubeadm:default-node-token token: abcdef.0123456789abcdef ttl: 24h0m0s usages: - signing - auth...
StatefulSet[实例]-Mysql集群
StatefulSet[实例]-Mysql集群Introduce基于StatefulSet搭建K8s集群中的Mysql集群 —个‘主从复制”(MaserˉSlaveReplicatjon)的MySQL集群; 有一个主节点(Master); 有多个从节点(Slave); 从节点需要能水平扩展; 所有写操作只能在主节点上执行; 读操作可以在所有节点上执行 How to work 通过XtraBackup实现MySql备份 配置从节点,复制到/var/lib/mysql,执行 1234567CHANGE MASTER TOMASTER_HOST='$masterip';MASTER_USER='xxx';MATSER_PASSWORK='xxx';# 这个文件来资源第一个创建的xtrabackup_binlog_infoMASTER_LOG_FILE='TheMaster-bin.00001';MASTER_LOG_POS=481; 启动节点备份: 1START SLAVE...
Goland—远程Debug
Goland—远程DebugIntroduce主要是本地不能调试的代码,通过Goland远程断点调试 步骤1234567891011121314151. 安装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的最简单的抽象: 123456789101112131415161718192021222324package mainimport ( "context" "fmt" metaV1 "k8s.io/apimachine...
K8s-解析云上初始化(keadm init)
K8s-解析云上初始化(keadm init)什么是keadm initkeadm init通过keadm init可以实现初始化cloudcore。 解析keadm init过程 ExecuteInit就是真正执行init的方法,实际上是通过实现了InstallTools接口函数的方法实现的 所以InstallTools方法实现了init的进入函数 真正实现下载安装的函数是runHelmInstall 1234567891011121314151617// 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", pr...
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 包含值 foregroundDe...
K8s[控制器]-StatefulSet
K8s[控制器]-StatefulSet什么是StatefulSetStatefulSet 顾名思义,用于管理 Stateful(有状态)的应用程序。 StatefulSet 管理 Pod 时,确保其 Pod 有一个按顺序增长的 ID。 StatefulSet 使用场景对于有如下要求的应用程序,StatefulSet 非常适用: 稳定、唯一的网络标识(dnsname) 每个Pod始终对应各自的存储路径(PersistantVolumeClaimTemplate) 按顺序地增加副本、减少副本,并在减少副本时执行清理 按顺序自动地执行滚动更新 如果一个应用程序不需要稳定的网络标识,或者不需要按顺序部署、删除、增加副本,您应该考虑使用 Deployment 这类无状态(stateless)的控制器。 StatefulSet 的限制 Pod 的存储要么由 storage class 对应的 PersistentVolume Provisioner (opens new window)提供,要么由集群管理员事先创建 删除或 scale down 一个 StatefulSet 将不会删除...




