kubernetes
大鹏blog
把自己遇到的问题记录下来,方便自己,也方便他人!
展开
-
k8s: rs的滚动更新
ReplicationController rolling update实现了pod的滚动更新 strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate.spec.strategy.rollingUpdate.maxSurge 表示Scale Up新的ReplicaSet时,按照比例计算出允许的MaxSurge.spec.strategy.rollingUpd原创 2021-12-23 08:49:07 · 716 阅读 · 0 评论 -
kubernetes:Unable to connect to the server: x509
背景:Unable to connect to the server: x509: certificate is valid for 10.96.0.1, 10.0.1.76, not 119.28.78.191报错原因:Connection error: Get https://119.28.78.191:6443/api/v1/namespaces/default/pods?limit=500: x509: certificate is valid for 10.96.0.1, 10.0.1.7原创 2021-04-16 15:08:16 · 3679 阅读 · 0 评论 -
helm :helm3 添加 repo 仓库
helm3添加仓库helm repo add --username=pf --password=password myrepo https://demo.goharbor.io/chartrepo/helmcharts原创 2021-04-15 15:40:08 · 2639 阅读 · 0 评论 -
kubernetes : 取消lable
kubectl label namespaces XXX keyps:kubectl label namespaces kube-node-lease istio.io/rev-原创 2021-03-16 11:55:25 · 411 阅读 · 0 评论 -
kubernetes : cncf 项目代码搜索
cncf社区近期添加了一个非常好用的能力,项目代码全局搜索能力看看官方的说明:CNCF目前有一套非常强大的开发工具,可以让贡献者的工作更轻松。从特定于项目的工作流工具到通用的项目级监视工具,有许多工具可以帮助开发人员完成日常工作。我能想到的一个非常有价值的工具就是代码搜索CodeSearch正在成为开发人员工作流程中的一个重要工具,因为它使代码导航更容易、更容易访问和更快(通过浏览器)。当有多个存储库彼此之间有依赖关系时,它的重要性就更加复杂了(就像CNCF的情况一样)。它还可以很容易地理解哪些rep原创 2020-10-12 15:54:59 · 296 阅读 · 0 评论 -
kubernetes :list & watch 理解
参考资料:找到两篇比较好的文章https://juejin.im/post/6844903661689110535添加链接描述https://www.kubernetes.org.cn/3567.html添加链接描述原创 2020-10-10 14:56:44 · 1050 阅读 · 0 评论 -
kubernetes : client-go 使用demo
背景使用 client-go与k8s交互前提k8s能外网访问,本地pc有kubeconfig文件代码package getResourceimport ( "flag" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/klog" "os" "path/filepath" "time" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd")fun原创 2020-10-10 11:09:03 · 1085 阅读 · 0 评论 -
kubernetes:源码编译
1.golang环境搭建安装包下载三个地址任选 https://dl.google.com/go https://storage.googleapis.com/golang http://www.golangtc.com/static/go环境变量设置export GOROOT=/usr/local/goexport PATH=$PATH:$GOROOT/binexport GOPATH=/data/goexport PATH=$PATH:$GOPATHexport GOPRO原创 2020-05-21 17:31:45 · 461 阅读 · 0 评论 -
kubernetes: coredns故障 /etc/coredns/Corefile问题
现象 coredns挂掉查看日志报错/etc/coredns/Corefile:3 -Error during parsing: Unknow driective ‘ready’解决办法:找到 coredns 挂载 Corefile的cmkubectl describe pod/XXX -oyaml即可查看corefile文件发现第三行是个ready删除ready 即可恢复环境kubectl edit cm/coredns -n kube-system -oyaml原创 2020-05-14 19:20:01 · 6858 阅读 · 0 评论 -
kubernetes:使用 kubectl patch 更新 API 对象
背景:对于已经发布的服务。如何做到在线更新呢?总结有这么几种办法:kubectl annotate, kubectl edit, kubectl replace, kubectl scale, 和 kubectl apply。本文介绍 kubectl patch的办法比如创建一个如下的podapiVersion: apps/v1 # for versions before 1.9.0 ...原创 2020-04-09 15:54:59 · 1689 阅读 · 0 评论 -
kubernetes:cs接口废弃,怎么来查看集群状态
kubernetes 在1.16版本的时候cs接口算是正式废弃掉了,表现如下bash-5.0# kubectl get csNAME AGEcontroller-manager <unknown>scheduler <unknown>etcd-2 <unknown>...原创 2020-03-13 21:54:07 · 1208 阅读 · 4 评论 -
kubernetes: 修改node 角色
新安装的kubernetes环境有时候node节点的 roles会缺失,我们可以手动添加上去root@k8s-master:~# kubectl get nodesNAME STATUS ROLES AGE VERSIONk8s-master Ready master 50d v1.16.7k8s-node1 ...原创 2020-03-11 14:18:55 · 4039 阅读 · 0 评论 -
kubernetes: hpa实践
环境信息本文的实验环境是k3sENV:#[root@k8s-1 ~]# kubectl get nodes -o wide 确保metrics-server运行正常hpa配置apiVersion: autoscaling/v2beta1kind: HorizontalPodAutoscalermetadata: name: pod-hpaspec: scaleT...原创 2020-03-10 13:29:46 · 553 阅读 · 0 评论 -
kubernetes:五步法定位 service问题
kuberbetes的网络设计该要总结,它是K8S服务的基础:pod中的容器共享相同的网络空间和相同的IP。所有pod都可以通过IP与其他pod通信。每个节点都可以看到所有pod,反之亦然。pod可以看到所有服务。如下图位于pod 1中的容器B可以直接将容器A寻址为localhost。容器B可以通过其IP直接寻址pod 2(kubectl get pod-o wide)。我...原创 2020-03-10 07:24:53 · 866 阅读 · 0 评论 -
kubernetes:静态pod
什么是静态Pod静态Pod是由kubectl进行管理的仅存于特定Node上的Pod。他们不能通过API Server管理,无法与ReplicationController、Deployment或者DaemonSet进行关联,并且kubelet也无法对他们进行健康检查。静态Pod总是由kubectl进行创建,并且总是在kubelet所在的Node上运行。创建Pod有两种方式:配置文件或HTTP方...原创 2020-03-09 18:28:34 · 269 阅读 · 0 评论 -
linux: 单网卡添加多个ip
背景:有时候需要给单个网卡添加多个ip地址方法:当前网卡信息# ifconfigeth0 Link encap:Ethernet HWaddr 2A:2E:BE:CF:8C:DC inet addr:192.168.99.159 Bcast:192.168.99.255 Mask:255.255.255.0 inet6 addr...原创 2020-02-19 23:02:22 · 321 阅读 · 0 评论 -
kubernetes: pod重启前的日志查看
背景:pod重启会杀掉容器,如果要追踪问题原因, kuberctl logs 看到的是当前的容器日志,那怎么查看杀掉前的容器日志呢?知识点:我们看一下 logs字命令[root@myserver ~]# kubectl logs -hPrint the logs for a container in a pod or specified resource. If the pod has...原创 2020-02-19 22:50:04 · 23627 阅读 · 0 评论 -
kubernetes: kubectl create与kubectl apply的区别
背景:创建一个k8s资源的时候可以使用 kubectl create 也可以使用 kubectl apply,到底有什么区别呢?分析:1.官方解释kubectl create和kubectl apply命令之间存在细微差别。kubectl create命令可创建新资源。 因此,如果再次运行该命令,则会抛出错误,因为资源名称在名称空间中应该是唯一的。kubectl get podsN...原创 2020-02-19 21:29:41 · 25797 阅读 · 5 评论 -
kubernetes:Critical Pod
怎么表示一个pod 是 Critical Pod规则1:Enable Feature Gate ExperimentalCriticaPodAnnotation必须隶属于kube-system namespace;必须加上Annotation scheduler.alpha.kubernetes.io/critical-pod=""规则2:Enable Feature Gate Exp...原创 2019-12-27 16:42:46 · 358 阅读 · 0 评论 -
kubernetes:驱逐node上所有pod
背景:有时候我们要对一个node节点进行维修,升级,需要重启开关机,那怎么才能做到应用不影响呢?技术:我们可以使用 命令操作kubectl drain <node name>官方文档:https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/https://kubernetes.io/do...原创 2019-12-27 15:52:07 · 5784 阅读 · 4 评论 -
kubernetes :2019 容器云概况
2019年接近尾声, 容器云市场,特别是k8s有什么表现呢?可以看看本文K8s容器云业内近况1.概况目前公有云厂商基本都推出了 kubernetes service服务 , 针对各个行业在推解决方案,典型的像 AWS,Azure ,阿里云 ,灵雀云 容器编排技术也从以前的厂家自研到k8s走向统一。 私有云厂商以国内的为主,青云的kuebrsphere ,rancherlab ,kubeope...原创 2019-12-24 15:08:37 · 805 阅读 · 0 评论 -
kubernetes: 调度器和调度过程
背景 :本文介绍k8s调度的原理 方法与实践,后续会有部分的源码分析说明 本文所有的源码都是基于1.17版本参考资料:https://www.cnblogs.com/xzkzzz/p/9963511.html 感谢作者,总结的非常到位官方文档 ,调度章节https://kubernetes.io/docs/concepts/scheduling/kube-scheduler/sche...原创 2019-12-19 11:18:05 · 707 阅读 · 0 评论 -
kubernetest:部署rancher 管理 k8s集群
背景:本文介绍部署rancher,用来管理k8sdocker run -d --name rancher-server -v /root/rancher/data:/var/lib/rancher -p 9080:80 -p 9443:443 --restart=unless-stopped rancher/rancher:stable容器启动之后web浏览器 使用 IP:9080访问服...原创 2019-12-16 16:24:06 · 661 阅读 · 0 评论 -
kubernetes:ingress体验
背景:对于k8s对外暴露 服务的方式有 nodeport ,loadbalance ,ingress本文使用 nginx-ingress体验对外暴露服务实验1.部署nginx-controller使用helm chart1.helm repo add bitnami https://charts.bitnami.com/bitnami2.helm search nginx-ing...原创 2019-12-04 16:11:03 · 171 阅读 · 0 评论 -
kubernetes:有状态服务,无状态服务
背景:我们经常听到部署服务的时候是有状态的还是无状态的,那么到底这两种服务该怎么区分呢?具体怎么用呢?知识点:**无状态应用(Stateless Application)**是指应用不会在会话中保存下次会话所需要的客户端数据。每一个会话都像首次执行一样,不会依赖之前的数据进行响应。**有状态的应用(Stateful Application)**是指应用会在会话中保存客户端的数据,并在客户端下......原创 2019-12-03 10:16:42 · 8390 阅读 · 0 评论 -
kubernetes:apiserver service 10.96.0.1
背景:我们的k8s 服务中有一个比较特别的service ,如下:这个service有什么用?做什么的的?describe 看一下 描述可以看到 这个service 分配给了 apiserver ,后端的endpoint 也是三台master的地址,看到这里就清楚了 , 10.96.0.1这个ip对应的服务就是作为整个集群的入口服务的。...原创 2019-11-08 15:16:11 · 2393 阅读 · 2 评论 -
kubernetes: headless service
背景:有时候我们创建的服务不想走 负载均衡,想直接通过 pod-ip 链接后端, 怎么办呢, 使用headless service接可以解决。1.什么是headless serviceheadless service 是将service的发布文件中的clusterip=none ,不让其获取clusterip , DNS解析的时候直接走pod2.实验部署podapiVersion: ...原创 2019-11-07 15:13:30 · 14110 阅读 · 3 评论 -
kubernetes: postStart , preStop
容器的生命周期事件挂接处理函数。Kubernetes 支持 postStart 和 preStop 事件。 当一个容器启动后,Kubernetes 将立即发送 postStart 事件;在容器被终结之前, Kubernetes 将发送一个 preStop 事件。背景:应用容器启动之后如果要做点配置之类的 ,可以使用postStartpods/lifecycle-events.yaml a...原创 2019-10-25 11:35:08 · 4667 阅读 · 0 评论 -
kubernetes: Init 容器
什么是Init 容器POD能够具有多个容器,应用运行在容器里面,但是它也可能有一个或多个先于应用容器启动的 Init 容器。Init 容器与普通的容器非常像,除了如下两点:它们总是运行到完成。每个都必须在下一个启动之前成功完成。如果 Pod 的 Init 容器失败,Kubernetes 会不断地重启该 Pod,直到 Init 容器成功为止。然而,如果 Pod 对应的 restartPol...原创 2019-10-25 10:15:07 · 305 阅读 · 0 评论 -
kubernetes:存活探针,就绪探针,启动探针
本文主要介绍 Liveness, Readiness Startup 三种类型的探针Liveness 探针许多长时间运行的应用程序最终会过渡到断开的状态,除非重新启动,否则无法恢复。kubernetes提供活性探针来检测和修复这种情况。如下 将创建一个pod,该pod运行基于k8s.gcr.io/busybox映像的容器。pods/probe/exec-liveness.yaml a...原创 2019-10-25 09:55:26 · 2736 阅读 · 0 评论 -
kubernetes: 服务发现
什么是服务发现:服务发现有三个角色,服务提供者、服务消费者和服务中介。服务中介是联系服务提供者和服务消费者的桥梁。服务提供者将自己提供的服务地址注册到服务中介,服务消费者从服务中介那里查找自己想要的服务的地址,然后享受这个服务。服务中介提供多个服务,每个服务对应多个服务提供者。服务中介就是一个字典,字典里有很多key/value键值对,key是服务名称,value是服务提供者的地址列表。服务注...原创 2019-10-12 17:12:30 · 1150 阅读 · 0 评论 -
kubernetes: Failed to pull image...rpc error: code = Canceled desc = context canceled
背景:部署deployment服务之后,pod拉起失败, describe 显示code = Canceled desc = context canceled分析:1.查看harbor,排除网络问题2.服务器上可以 docker pull ,排除image问题3.查看pull image policy 为 IfNotPresent 排除镜像策略问题4.查看 pod日志,code = ...原创 2019-09-03 15:34:45 · 43580 阅读 · 5 评论 -
kubernetes:ingress 发布的 loadbanlence service 一直 pending
背景:使用helm部署 ingress的时候 ,ingress-control pod 一直起不来,查看service 发现nginx-ingress-controller 服务是LoadBalancer 类型,一直pending问题原因:查看了官方文档,自己搭建的k8s集群 (公有云环境除外),是没有LB能力的解决办法:GitHub上面有一个项目https://github....原创 2019-08-13 08:00:28 · 6097 阅读 · 0 评论 -
kubernetes: CNI解读
参考资料:https://cizixs.com/2017/05/23/container-network-cni/https://thenewstack.io/container-networking-landscape-cni-coreos-cnm-docker/https://murat1985.github.io/kubernetes/cni/2016/05/14/netns-and-...原创 2019-08-15 15:59:13 · 1946 阅读 · 0 评论 -
kubenetes:基于DNS的Kubernetes服务发现规范
背景:kubenetes可以使用环境变量,DNS做服务发现,解析,本文介绍DNS方式的服务发现规范kubenetes默认提供的是 Kube-DNS ,实际环境中使用的可能是core-dns尝试性翻译了一下,感觉没有英文贴切,作为一个备注文档,协助自己理解吧。1 - Schema VersionThis document describes version 1.0.1 of the sch...原创 2019-08-15 11:38:57 · 516 阅读 · 0 评论 -
kubernetes:imagePullPolicy 详解
背景:创建pod的时候报错,显示container image is not present with pull policy of nerver分析1.查看了创建pod的yml ,看到imagePullPolicy: Never2.看上图日志发现 pod调度到了work02节点,去work02上查看没有要用的image ,而imagePullPolicy: Never 是只使用本地...原创 2019-08-23 17:03:47 · 13200 阅读 · 7 评论 -
kubenetes:部署kubeapps
背景:我们要基于helm chart给kubenetes集群搭建一套应用商店选择:参考的方案有rancher kubeapps对比之后我们选择了kubeapps项目地址https://github.com/kubeapps/kubeappshttps://kubeapps.com/图片展示:部署:前提安装好helmhelm repo add bitnami http...原创 2019-08-08 16:42:15 · 625 阅读 · 0 评论 -
kubernetes:The connection to the server localhost:8080 was refused - did you specify the right host
背景描述:使用kuberadm搭建的集群环境,work节点 使用 kubectl查询资源报错原因:kubeadm搭建完环境之后会删除work节点上的admin.conf的认证配置文件,如果需要在work节点上使用kubectl查询资源,需要将master节点的admin.conf 拷贝到work节点解决办法:1.拷贝admin.conf至work2.设置环境变量之后就可以使用了...原创 2019-08-08 16:00:23 · 6878 阅读 · 6 评论 -
Kubernetes:部署nginx服务
创建 deployment 模版文件cat nginx-deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment labels: app: nginxspec: replicas: 3 selector: matchLabels: app...原创 2019-07-25 15:18:30 · 6806 阅读 · 1 评论 -
Kubernetes:集群网络,安全与存储
k8s的3个网络1.node网络 ,宿主机的网络2.pod网络 pod共享上下文,共享进程通信 ,localhost通信,共享namespace3.service网络 服务发现负载均衡pod网络设计的三个考虑:1.所有pod间应该无需NAT直接能通信2.所有集群与所有pod 可以在 无需NAT的情况下直接通信3.容器自身的地址和其他pod看到它的地址是同一个地址每一个pod都有一...原创 2019-07-24 17:42:12 · 1019 阅读 · 0 评论