Kubernetes
Kubernetes
bob62856
这个作者很懒,什么都没留下…
展开
-
work节点使用kubectl
在work节点mkdir .kube将master节点的文件拷贝过来scp master:/root/.kube/config .kube/原文链接:https://blog.csdn.net/u014089832/article/details/108429566转载 2022-04-30 16:43:47 · 257 阅读 · 0 评论 -
flannel源码分析--InClusterConfig
newSubnetManager创建子网管理时,通过BuildConfigFromFlags从master url或kubeconfig文件路径创建,若失败则会回调到InClusterConfig获取环境变量KUBERNETES_SERVICE_HOST和KUBERNETES_SERVICE_PORT作为host和port读取/var/run/secrets/kubernetes.io/serviceaccount/token文件作为token读取/var/run/secrets/kubernete原创 2021-03-01 14:46:07 · 401 阅读 · 0 评论 -
flannel源码分析--newSubnetManager
main函数中调用newSubnetManager创建子网管理,具体流程如下;如果命令行opts中指定了子网管理,则通过命令行中的参数调用NewSubnetManagerBuildConfigFromFlags尝试从一个master url或者kubeconfig配置文件中构建配置,它们作为集群组件的命令行标志传。如果没有配置master url和kubeconfig文件路径,会回调InClusterConfig,若失败,则会使用默认etcd配置NewNonInteractiveDefer原创 2021-02-26 15:15:00 · 165 阅读 · 0 评论 -
flannel源码分析--RegisterNetwork
main函数中RegisterNetwork会根据不同的后端类型调用不同的RegisterNetwork,这里以vxlan为例:定义cfg变量匿名结构体,并使用Unmarshal解析配置文件初始化cfg,结构体如下:struct { VNI int Port int GBP bool Learning bool DirectRouting bool}初始化vxlanDeviceAttrs结构体变量devAttrs原创 2021-02-24 18:56:45 · 135 阅读 · 0 评论 -
flannel源码分析--LookupExtIface
main函数中LookupExtIface查找网卡,主要流程如下通过ParseIP解析IP,并用net.IP存储GetInterfaceByIP,将ip传入,net.Interfaces获取所有网卡端口,遍历判断是否存在ip或者直接调用InterfaceByName获取网卡端口如果指定了正则表达式ifregex,则需要匹配,不细说查找到网卡设备,通过iface结构体保存type Interface struct { Index int // positive i原创 2021-02-25 19:11:11 · 97 阅读 · 0 评论 -
flannel源码分析--handleSubnetEvents
当main进程启动后端后,会触发handleSubnetEvents处理事件新建vxlanRoute路由,用作流量封包,结构如下:netlink.Route{ LinkIndex: nw.dev.link.Attrs().Index, Scope: netlink.SCOPE_UNIVERSE, Dst: sn.ToIPNet(), Gw: sn.IP.ToIP(),}新建directRoute路由,若远程主机在一个子网内,则不需要走vxlan..原创 2021-02-24 20:26:09 · 114 阅读 · 0 评论 -
flannel源码分析--main
1、initinit函数:进行flannelFlags的初始化,有etcd、iface(网卡)、iface-regex(接口匹配正则)、subnetFile(子网配置)、public-ip(外部访问IP)、subnet-lease-renew-margin(租约)、ip-masq(ip伪装,SANT)、kube-subnet-mgr(subnet api)、kube-api-url(api server url)、kubeconfig-file(kube配置文件)、healthz(healthz地址访问)原创 2021-02-24 17:31:56 · 282 阅读 · 0 评论 -
flannel源码分析--WatchLeases
在main函数run后端之后,会创建协程调用WatchLeases,如下:for循环中轮询,调用kube.go中对manager接口的实现,接口如下:type kubeSubnetManager struct { annotations annotations client clientset.Interface nodeName string nodeStore listers.NodeLister nodeController cache.C原创 2021-02-24 21:10:59 · 109 阅读 · 0 评论 -
1 node(s) had taints that the pod didn‘t tolerate
kubernetes增加污点,达到pod是否能在做节点运行master node参与工作负载 (只在主节点执行)使用kubeadm初始化的集群,出于安全考虑Pod不会被调度到Master Node上,也就是说Master Node不参与工作负载。这里搭建的是测试环境可以使用下面的命令使Master Node参与工作负载:k8s是master节点的hostname允许master节点部署pod,使用命令如下:kubectl taint nodes --all node-role.kubernete转载 2021-08-01 11:58:34 · 660 阅读 · 0 评论 -
k8s中service类型
Services 和 PodsKubernetesPods是有生命周期的。他们可以被创建,而且销毁不会再启动。 如果您使用Deployment来运行您的应用程序,则它可以动态创建和销毁 Pod。一个Kubernetes的Service是一种抽象,它定义了一组Pods的逻辑集合和一个用于访问它们的策略 - 有的时候被称之为微服务。一个Service的目标Pod集合通常是由Label Selector 来决定的(下面有讲一个没有选择器的Service 有什么用处)。举个例子,想象一个处理图片的后端运行了三转载 2021-08-01 10:19:18 · 429 阅读 · 0 评论 -
k8s进入pod运行
如何进入kubernetes的一个pod呢,其实和进入docker的一个容器相似:进入docker容器 :docker exec -ti <your-container-name> /bin/sh进入pod:kubectl exec -ti <your-pod-name> -n <your-namespace> -- /bin/sh...原创 2021-07-28 11:25:57 · 10676 阅读 · 0 评论 -
k8s中几种port介绍
1、三个类型端口所应用位置的不同port是service的的端口targetport是pod也就是容器的端口nodeport是容器所在宿主机的端口(实质上也是通过service暴露给了宿主机,而port却没有)2、在作用上portport的主要作用是集群内其他pod访问本pod的时候,需要的一个port,如nginx的pod访问mysql的pod,那么mysql的pod的service可以如下定义,由此可以这样理解,port是service的port,nginx访问service的33306转载 2021-07-27 12:26:15 · 2705 阅读 · 0 评论 -
k8s常用命令
kubectl get pods -o widekubectl describe pod [pod name]kubectl get namespaceskubectl logs [pos name]kubectl exec [pod name] envkubectl exec -ti [pod name] bashkubectl get serviceskubectl describe service [service name]kubectl get endpointskubectl.原创 2021-03-26 10:54:17 · 171 阅读 · 0 评论 -
k8s集群搭建教程(centos k8s搭建)
系统:CentOS 7.8内核:3.10.0一、Master、Node节点都要安装Docker1、 卸载原来的dockersudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docke原创 2021-02-05 11:57:48 · 650 阅读 · 0 评论