Hyper-v搭建KoolShare路由器给k8s集群代理
背景k8s需要用到科学上网,以前的做法是在宿主机搭建一个代理,虚拟机通过代理上网,如果新增一个虚拟机就要配置,相对比较麻烦。更好的是k8s集群一个网络,通过一个路由器代理实现科学上网,新增虚拟机只需要加入这个网络即可。 实现方式Hyper-v和LEDE固件(KoolShare改版) 本身k8s集群就是搭建在windows上,而且Hyper-v相对VMware比较轻量,操作也便捷。 实现原理路由器路由器网线插口分两种,一种是WAN口一般只有一个,一种是LAN口有若干个。WAN口用来接入网络,一般连接网络猫或者交换机,LAN口用来设备接入,连接电脑或者服务器。 LEDELinux嵌入式开发环境项目(Linux Embedded Development Environment,LEDE),是路由器固件项目OpenWRT的一个复刻分支项目,并继承原来OpenWRT的开发目标。2018年1月 LEDE 和 OpenWRT 正式宣布合并,合并后的项目使用...
V2Ray服务搭建
V2RayV2Ray是近几年兴起的科学上网技术,采用新的协议,因功能强大,能有效抵抗墙的干扰而广受好评。V2Ray安装部署及流量伪装请参考:V2Ray教程 和 V2Ray高级技巧:流量伪装。 V2Ray 是 Project V 下的一个工具。Project V 是一个包含一系列构建特定网络环境工具的项目,而 V2Ray 属于最核心的一个。官方中介绍Project V 提供了单一的内核和多种界面操作方式。内核(V2Ray)用于实际的网络交互、路由等针对网络数据的处理,而外围的用户界面程序提供了方便直接的操作流程。不过从时间上来说,先有 V2Ray 才有 Project V。 如果还是不理解,那么简单地说,V2Ray 是一个与 Shadowsocks 类似的代理软件,可以用来科学上网(翻墙)学习国外先进科学技术。 SSR也有V2Ray插件 V2Ray优势: 更完善的协议 :V2Ray 使用了新的自行研发的 VMess 协议,改正了 Shadowsocks 一些已有的缺点,更难被墙检测到 更强大的性能 :网络性能更好,具体数据可以看 V2Ray 官方博客 更丰富的功能...
异步编程模型(APM)
前言最近改了个老项目,当初异步是用APM写的,于是重温了下APM 你知道APM吗APM即异步编程模型的简写(Asynchronous Programming Model),写代码的时候或者查看.NET的类库的时候肯定会经常看到和使用以BeginXXX和EndXXX类似的方法,其实你在使用这些方法的时候,你就再使用异步编程模型来编写程序。对于给定XXX同步操作,异步版本的就是BeginXXX和EndXXX,BeginXXX启动操作,EdnXXX获取操作结果,此时如果操作未完成,则阻塞线程等待,变成同步方法。 异步模型从.NET1.0开始就支持的异步编程模型,整个过程是围绕IAsyncResult对象进行的,异步操作通过Begin操作和End操作这两个方法实现。 IAsyncResult对象存储有关异步操作的信息。 12345678910111213141516171819public interface IAsyncResult{ bool IsCompleted { get; } WaitHandle...
Visual Studio 2019使用Source Link调试源码
背景最开始在开发java的时候,eclipse可以直接调试源码,但是在微软开源前,基本上没办法调试源码,完全靠ReSharper反编译来调试。后来微软开源了.NetCore,在看.NetCore源码的时候发现测试项目用到了Source Link。于是好奇心驱使点进链接一看才知道是用于源码调试的工具,果断开整。 Source LinkSource Link是一种为二进制文件提供无关语言和源代码控制的调试系统。目的是为任何基于Nuget构建项目的用户提供几乎无感的源码调试。微软开发并维护。Source Link是一组用于描述可嵌入到符号、二进制文件和包中的源代码控制元数据的包和规范。官网链接:https://github.com/dotnet/sourcelink SourceLink当前支持的源码来源 Github Azure DevOps(VSTS) TFS Gitlab Bitbucket 如何在Visual Studio 2019中使用Source LinkVisual Studio 17 15.3以上版本中已经支持了Source Link,Visual Studio...
Git子模块管理
子模块(Submodules)大型项目都是按照子模块开发,子模块又是单独git管理,如果分成多个仓库合并的时候又很麻烦,放一个仓库又会频繁提交冲突,子模块命令就很好解决这个问题,多个git子模块仓库管理,统一组成项目仓库 Git命令Initgit submodule add <repository> <path> 添加子模块 git submodule init 初始化子模块 Clone递归方式克隆整个项目,会克隆所有子模块 git clone <repository> --recursive 如果项目已存克隆,可以执行初始化子模块 git submodule update --init Update当项目执行git pull并不会自动同步更新子模块,需要更新所有子模块,保持与项目子模块commit id一致 git submodule update 更新所有子模块,保持与项目远端同步 git submodule update --remote 更新指定子模块,保持与项目远端同步 git submodule update --remote...
AspNetCore管道机制
Middleware理解Applicationbuilder维护着一个中间件集合 1private readonly IList<Func<RequestDelegate, RequestDelegate>> _components = new List<Func<RequestDelegate, RequestDelegate>>(); 本质都是是往ApplicationBuilder对象的_components成员里添加中间件Func<RequestDelegate, RequestDelegate> 123public delegate Task RequestDelegate(HttpContext context);private readonly IList<Func<RequestDelegate, RequestDelegate>>...
Linux下source命令详解
source命令用法source FileName 通常用”.“来替代 source命令作用 在当前bash环境下读取并执行FileName中的命令 功能:使当前shell读入路径为filepath的shell文件并依次执行文件中的所有语句,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。例如,当我们修改了/etc/profile文件,并想让它立刻生效,而不用重新登录,就可以使用source命令,如source /etc/profile。 source命令(从 C Shell 而来)是bash shell的内置命令。点命令(.),就是个点符号(从Bourne...
Kubernetes集群-Kubernetes部署
kube-proxy开启ipvs的前置条件 加载netfilter模块 1[root@k8s-master-01 ~]# modprobe br_netfilter 添加配置文件 123456789101112131415[root@k8s-master-01 ~]# cat > /etc/sysconfig/modules/ipvs.modules <<EOF#!/bin/bashmodprobe -- ip_vsmodprobe -- ip_vs_rrmodprobe -- ip_vs_wrrmodprobe -- ip_vs_shmodprobe -- nf_conntrack_ipv4EOF 赋予权限并引导 12345[root@k8s-master-01 ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules[root@k8s-master-01 ~]# bash...
Kubernetes集群-node节点配置
修改主机名1[root@k8s-master-01 ~]# hostnamectl set-hostname xxx 修改hosts文件vim /etc/hosts1234567[root@k8s-master-01 ~]# vim /etc/hosts127.0.0.1 k8s-master-01 k8s-master-01127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6172.18.98.3 k8s-master-01172.18.98.4 k8s-node-01172.18.98.5 k8s-node-02 将写好的hosts文件拷贝到其他节点1[root@k8s-master-01 ~]# scp /etc/hosts ...
Vagrant初体验
介绍VagrantVagrant 就是为了方便的实现虚拟化环境而设计的,使用Ruby开发,基于VirtualBox等虚拟机管理软件的接口,提供了一个可配置、轻量级的便携式虚拟开发环境。使用Vagrant可以很方便的就建立起来一个虚拟环境,而且可以模拟多台虚拟机,这样我们平时还可以在开发机模拟分布式系统。 Vagrant还会创建一些共享文件夹,用来给你在主机和虚拟机之间共享代码用。这样就使得我们可以在主机上写程序,然后在虚拟机中运行。如此一来团队之间就可以共享相同的开发环境,就不会再出现类似“只有你的环境才会出现的bug”这样的事情。 团队新员工加入,常常会遇到花一天甚至更多时间来从头搭建完整的开发环境,而有了Vagrant,只需要直接将已经打包好的package(里面包括开发工具,代码库,配置好的服务器等)拿过来就可以工作了,这对于提升工作效率非常有帮助。 Vagrant不仅可以用来作为个人的虚拟开发环境工具,而且特别适合团队使用,它使得我们虚拟化环境变得如此的简单,只要一个简单的命令就可以开启虚拟之路。 VirtualBoxVirtualBox...