Browsed by
月度归档: 2021年6月

kubeadm init 后master一直处于notready状态

kubeadm init 后master一直处于notready状态

閱讀本文約花費: 3 (分鐘)kubeadm安装Kubernetes,集群状态检测时,master一直处于notready状态 找问题,先查看pods状态 发现coredns一直处于pending状态,再进一步看kuberctl.services日志 看到是网络的问题,应该是fu 解决办法,换个链接 查看node状态,发现还是notready。查看日志 发现报错plugin flannel does not support config version ,修改配置文件 修改后,运行 再查看集群状态,发现master正常了,处于ready状态;但是node1节点还是处于notready状态 解决办法:去到node1,查看kubectl日志,发现还是报错no valid networks found in /etc/cni/net.d将node1中也加上cni的版本号,重新启动,即可看到集群状态变为正常 参考资料:kubeadm安装Kubernetes 1.14最佳https://www.kubernetes.org.cn/5462.htmlkubernetes安装过程中错误(kube-dns 状态一直是Pending,master节点是NotReady)https://blog.csdn.net/u013355826/article/details/82786649How to fi…

Read More Read More

面向 Kubernetes 设计误区

面向 Kubernetes 设计误区

閱讀本文約花費: 23 (分鐘)K8s 设计模式 Kubernetes 是一个具有普遍意义的容器编排工具,它提供了一套基于容器构建分布式系统的基础依赖,其意义等同于 Linux 在操作系统中的地位,可以认为是分布式的操作系统。 自定义资源 K8s 提供了 Pod、Service、Volume 等一系列基础资源定义,为了更好提供扩展性,CRD 功能是在 1.7 版本被引入。用户可以根据自己的需求添加自定义的 Kubernetes 对象资源(CRD)。值得注意的是,这里用户自己添加的 Kubernetes 对象资源都是 native 的都是一等公民,和 Kubernetes 中自带的、原生的那些 Pod、Deployment 是同样的对象资源。在 Kubernetes 的 API Server 看来,它们都是存在于 etcd 中的一等资源。同时,自定义资源和原生内置的资源一样,都可以用 kubectl  来去创建、查看,也享有 RBAC、安全功能。用户可以开发自定义控制器来感知或者操作自定义资源的变化。 Operator 在自定义资源基础上,如何实现自定义资源创建或更新时的逻辑行为,K8s Operator 提供了相应的开发框架。Operator 通过扩展 Kubernetes 定义 Custom Controller,list/watch 对应的自定义资源,在对应资源发生变…

Read More Read More

Kubernetes的三种外部访问方式:NodePort、LoadBalancer 和 Ingress

Kubernetes的三种外部访问方式:NodePort、LoadBalancer 和 Ingress

閱讀本文約花費: 7 (分鐘)【编者的话】本文分析了 NodePort,LoadBalancer 和 Ingress 这三种访问服务方式的使用方式和使用场景,指出了各自的优缺点,帮助用户基于自己的场景做出更好的决策。 最近有些同学问我 NodePort,LoadBalancer 和 Ingress 之间的区别。它们都是将集群外部流量导入到集群内的方式,只是实现方式不同。让我们看一下它们分别是如何工作的,以及你该如何选择它们。 注意:这里说的每一点都基于Google Kubernetes Engine。如果你用 minikube 或其它工具,以预置型模式(om prem)运行在其它云上,对应的操作可能有点区别。我不会太深入技术细节,如果你有兴趣了解更多,官方文档是一个非常棒的资源。 ClusterIP ClusterIP 服务是 Kubernetes 的默认服务。它给你一个集群内的服务,集群内的其它应用都可以访问该服务。集群外部无法访问它。 ClusterIP 服务的 YAML 文件类似如下: apiVersion: v1 kind: Service metadata:   name: my-internal-service selector:     app: my-app spec…

Read More Read More

声明式编程和命令式编程有什么区别?

声明式编程和命令式编程有什么区别?

閱讀本文約花費: 4 (分鐘)声明式编程和命令式编程有什么区别? (What is the difference between declarative programing language and imperative programming language? ) 作者:Jinfeng Hu链接:https://www.zhihu.com/question/22285830/answer/469177185来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 我不知道为什么这样一组概念会被提炼出来,因为通常这是一个只有在设计语言的时候才会考虑的问题。 计算机系统是分层的,也就是下层做一些支持的工作,暴露接口给上层用。注意:语言的本质是一种接口。 计算机的最下层是CPU指令,其本质就是用“变量定义+顺序执行+分支判断+循环”所表达的逻辑过程。计算机应用的最上层是实现人类社会的某种功能。所以所有计算机编码的过程,就是用逻辑表达现实的过程。层与层之间定义的借口,越接近现实的表达就叫越“声明式”(declarative),越接近计算机的执行过程就叫越“命令式”(imperative)。注意这不是绝对的概念,而是相对的概念。 当接口越是在表达“要什么”,就是越声明式;越是在表达“要怎样”,就是越命令式。SQL就是在表达要什么(数据),而不是表达怎么弄出我要的数…

Read More Read More

从年会看声明式编程(Declarative Programming)

从年会看声明式编程(Declarative Programming)

閱讀本文約花費: 9 (分鐘)React的设计贯彻了声明式编程(Declarative Programming)的思想,今天就说一说什么是所谓的声明式编程。 和声明式编程相对应的是命令式编程(Imperative Programming),大部分语言的hello world都是从命令式编程开始的。 什么是声明式编程?可以从一个现实中的例子来说明,这个例子就是年会。 举个年会的栗子? 作为我国科技公司的一个特色,每年春节前后都要举行年会,忙活了一年怎么都要热闹热闹,搞点娱乐活动,而且一定要有员工参与的娱乐活动,也就是要员工表演节目,表演节目就需要恰当的道具,所以,采购道具是年会准备中的重要一环。 每个公司准备年会节目道具的流程可能都会不一样,这里说一下我司Hulu的方法,技术公司的流程是非常技术化的,可谓声明式编程的楷模。 在Hulu,每个组都要在年会出节目,HR和各组节目负责人协调道具的采购,这个过程是这样: HR告知每一个节目负责人:“你们节目需要什么道具?告诉我,我会去买。” 然后,每个节目负责人会和自己的组员商量节目内容,最后给HR一个道具列表,之后就等着HR通知去领道具就行了。 结束了!这就是声明式编程的思想。 你可能会问:就这么简单? 回答:就这么简单,所有的采购、运输、协调,都由HR来做了。 没有对比就没有伤害,如果是用命令式编程的思想来处理,我们看看是怎样一个过程: …

Read More Read More

LDAP 中 CN, OU, DC 的含义

LDAP 中 CN, OU, DC 的含义

閱讀本文約花費: 5 (分鐘)很多人虽然会使用dsadd等命令添加用户,但是dsadd的命令说明里面并没有涉及到dc,cn,ou的含义,很多人都不明白,这里是微软的技术支持人员的回信,希望对大家有帮助。CN, OU, DC 都是 LDAP 连接服务器的端字符串中的区别名称(DN, distinguished name)LDAP连接服务器的连接字串格式为:ldap://servername/DN其中DN有三个属性,分别是CN,OU,DCLDAP是一种通讯协议,如同HTTP是一种协议一样的!在 LDAP 目录中, DC (Domain Component) CN (Common Name) OU (Organizational Unit) LDAP 目录类似于文件系统目录。 下列目录:DC=redmond,DC=wa,DC=microsoft,DC=com如果我们类比文件系统的话,可被看作如下文件路径:Com\Microsoft\Wa\Redmond 例如:CN=test,OU=developer,DC=domainname,DC=com在上面的代码中 cn=test 可能代表一个用户名,ou=developer 代表一个 active directory 中的组织单位。这句话的含义可能就是说明 test 这个对象处在domainname.com 域的 developer 组织单元中。…

Read More Read More

详谈高级程序员、架构师、技术总监、CTO从薪资到技能的区别

详谈高级程序员、架构师、技术总监、CTO从薪资到技能的区别

閱讀本文約花費: 9 (分鐘) 我希望用一篇文章完全让大家正确的理解从程序员到架构师、技术经理、技术总监、CTO的完整区别以及进阶要领。只有客观去认识,才会更加合理的找到自己的擅长点,从而更好的发展自己。 上图是典型的薪资结构图,我们先从高级程序员谈起。 高级程序员 一般是至少三年以上的工作经验,有些地方是五年以上,很多小公司或者创业公司,高级程序员覆盖工作职责比较广,基本包含部分产品经理、项目经理的工作职责以外,最主要负责核心代码编程,基本技术难点都自己解决为主。 在公司大一点的都有非常明确的职责和级别定义,以阿里外代表,P5-P6代表高级软件工程师这个级别,基本能独立负责设计和编码阶段。 其实,在国外例如google、facebook等公司,很多牛人的title都是Senior Level engineer,这一点不像在中国。 在国内,一般一个高级程序员的准确定义: 负责核心复杂功能的实现方案设计、编码实现。详细描述:能独立设计一个业务模块的能力,并且独立设计数据库表以及UML画图,利用部分设计模式以及懂得算法和效率的高质量代码。 架构师 一般能做到架构师这个称谓,工作年限至少都在5年-8年以上,具体还看每个人的学习能力和领悟能力,也有时间短的,但大部分都是个例。 之所以有架构师这个称谓,主要还是公司发展以及大了的需要,需要专注于技术的人,你也可以理解为技术专家,攻克公司技术难…

Read More Read More

为什么CTO、技术总监、架构师都不写代码,还那么强?

为什么CTO、技术总监、架构师都不写代码,还那么强?

閱讀本文約花費: 11 (分鐘)来源:技术领导力 常常会被问到这样的问题:CTO、技术总监、架构师很少写具体代码,为什么还很牛逼的样子,拿这么高工资? 其实,这个问题本身就错了。就好比问:导演、制片人为什么不懂演戏,还能指导演员,好像比演员厉害似的?其实不难理解,导演、制片人的核心能力并不是演戏,又怎么能跟演员作比较呢? 回答前面的问题,逻辑也是一样的,拿CTO、技术总监、架构师,跟程序员比写代码的能力,本身就是个错误。因为,他们的核心能力是不一样的。 CTO、技术总监、架构师的核心能力是技术判断力。简单来讲,就是判断一个项目、一个系统架构、某个技术方向,是否符合企业当前现状,是否对企业的未来产生价值。 程序员的核心能力是写代码的能力。就是做具体的代码实现。 所以CTO/技术总监/架构师,跟程序员的核心能力,是完全不一样的能力,是没法作直接比较的。 通常我们说,CTO、技术总监、架构师们很牛逼,指的是他们的技术判断力牛逼,而不是他们写代码的能力牛逼。相反,他们写代码的能力可能还比不上一个资深程序员。 但是,他们所做的技术判断,给公司带来非常高的价值。比如,阿里云创始人王坚博士,在所有人反对的时候,他坚持云计算是未来,帮助阿里提前布局云计算,为阿里成长为万亿商业帝国,立下汗马功劳。这就是技术判断力,给企业带来的巨大价值。 大家之所以都很容易混淆这几个角色,以及它们的职责,其实很重要的…

Read More Read More

技术总监7年经验——论程序员的职业发展路线

技术总监7年经验——论程序员的职业发展路线

閱讀本文約花費: 10 (分鐘)作为程序员,在开发岗位上做了几年,特别是到了30岁,这个而立之年,我们会来到一个重要的人生岔路口。就是管理和技术两个选择,一边专业路线,一边是管理路线。 在互联网的头部企业,对管理和技术是平等对待的,所以晋升会存在管理和技两个通道的 既然有了选择,就会有人纠结,不知道是选择专业路线,还是选择技术团队的管理路线。 这个选择是程序员人生中第一个大的选择,也是第一个障碍,倒不是说这个障碍是到底要不要选择管理,而更多的是对做管理的迟疑,怀疑到底能不能做好管理,做了管理之后,技术是不是就荒废了。 这种状态犹豫不决、摇摆不定的状态保持时间长了,最终会导致技术和管理都没做好,这是得不偿失的。 为了解决这个问题,有必要分析程序员职业发展的路线到底有几条,分别需要具备怎样的能力,从而做到”手中有粮,心中不慌“ 01技术 技术类上,是有两个方向:架构师和技术专家 架构师他的侧重点是在“广”上,他主要负责技术的整体和架构,在业务上,需要有很深的理解,有丰富的经验,甚至能做到“走的桥比你吃的盐还多”。在技术上,能够广泛涉略,掌握的技术知识越多,内力就越加深厚。 我觉得架构师还需要三点必备能力,其一需要有极强的执行力,能够快速的给出合理的方案,推动技术落地。其二需要有极强的判断力,能够准确的找到复杂系统的疑难问题所在,就像武林高手,一眼就看出对方的破绽。最后还需要有极强的创新…

Read More Read More

程序员、技术主管和架构师

程序员、技术主管和架构师

閱讀本文約花費: 17 (分鐘)程序员、技术主管和架构师 最近在进一步思考程序员的成长,曾经写过一篇《如何快速的成为架构师》,里面写了我对程序员主要成长阶段的定义,但在程序员从初级走向资深的过程中,会面临两个支路,一个叫「技术主管」,另一个则是「架构师」。为什么这是两条支路?因为现在回过来看,这两条路从来都不是程序员的自然成长路径,下面我们先从「技术主管」开始吧。 技术主管 技术主管,有些公司可能又叫「技术经理」,英文一般是 Tech Leader 或简称 TL。在拉姆·查兰 (Ram Charan) 那本《领导梯队》中提到一个人的工作角色中至少有百分之五十以上的时间是花费在管理事务上,那么他的角色才算是一个经理(Manager)。所以技术主管(经理)类似产品经理属于以经理命名却是非经理的角色。 「技术主管」是开发团队中的某位程序员需要对一起创建系统的整个开发团队负责时所承担的角色。通常他既要对最终交付的软件系统负责,另外也会像一个程序员一样去开发实现系统。一个技术主管的 60% ~ 70% 的时间可能花在了开发任务分解分配、开发实践、代码审核和风险识别上,而余下的 30% ~ 40% 的时间则花在为了保障系统按时交付所需的各种计划、协作、沟通、管理上。和团队管理者不同的是,技术主管的大部分管理工作都是针对具体研发任务和技术事务的。 例如:在一个开发团队中经常会碰到因为技术方案和实…

Read More Read More

程序员、架构师、技术经理、技术总监和CTO都是干什么的?

程序员、架构师、技术经理、技术总监和CTO都是干什么的?

閱讀本文約花費: 11 (分鐘)程序员   程序员,英文名coder/programmer,大家常自嘲叫码农的阶段。这个角色职责是把需求或产品实现为用户可用的软件产品。   此职位为执行级别。另外因为经验较少,一般需要求助别人,或与别人一起完(ban)成(zhuan)一个任务。   此阶段大概要经历3年,程序员的职责如下:   1、负责公司运营系统的设计与开发工作   2、运营数据处理和分析 高级程序员   高级程序员学名工程师。到了这个level,英文名可改叫做engineer或developer。此时你的功力开始增强,这与你平时的积累努力是分不开的,祝贺你~   此时的你不仅可以完成任务,开始注重代码的质量,能够写出工业级的代码。   你的经验可胜任模块级的系统设计,承担完成较为复杂的技术,能有效的自我管理,有帮助别人快速解决问题(trouble shooting)的能力。   此阶段你需要经历到7、8年左右的体验,中间要经历一段深刻自我历练的过程。   有时给人致命一击其实是心里的小蟊贼。一般人在5年前后遇到一个门槛,碰到天花板+彷徨期,或者你打心眼里不在喜欢编程,可尝试转为其它角色,如产品经理,售前售后支持等岗位,也不失为好选择。   当我们熬过这段儿,就会“山随平野尽,江入大荒流“,渐入佳境矣。   高级程序员定义软件功能、做开发计划推进和管理。可以带几个个帮手把产品规划…

Read More Read More

Scroll Up