Kubernetes
容器编排系统
唐僧爱程序
无。
展开
-
kubectl滚动更新资源
rolloutManage the rollout of a resource. Valid resource types include: * deployments * daemonsets * statefulsetsExamples: # Rollback to the previous deployment kubectl rollout undo deployment/abc # Check the rollout status of a da原创 2021-06-24 14:54:22 · 305 阅读 · 0 评论 -
k3s停止命令
暂停k3s命令节点csnode-1 master节点systemctl stop k3ssystemctl disable k3sk3s-killall.shdocker ps -a|grep -v CONTAINER|awk '{print $1}'|xargs docker stopdocker ps -a|grep -v CONTAINER|awk '{print $1}'|xargs docker rmsystemctl stop dockersystemctl disable原创 2021-06-23 16:15:36 · 3560 阅读 · 0 评论 -
k8s pod之间DNS解析问题:Temporary failure in name resolution
问题之前k8s网络运行正常,一段时间后,前端pod无法通过域名访问后端pod,ping提示错误:Temporary failure in name resolution如果看思路请顺序阅读如果看结论,请跳过排查过程排查排查过程查看coredns是否正常运行# kubectl get po -n kube-system|grep corednscoredns-85dc89d45b-b9gtq 1/1 Running 0 5原创 2021-04-14 16:04:07 · 3359 阅读 · 0 评论 -
kubectl top查看资源占用
需要安装metric server,一般部署在kube-system空间查看node资源使用[root@master1 ~]# kubectl top node master1NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% master1 165m 9% 4653Mi 66% 查看pod资源[root@master1 ~]# kubectl top pod --all-na原创 2021-03-30 10:41:25 · 4022 阅读 · 0 评论 -
排查Kubernetes容器不断连接MySQL,导致MySQL连接数饱和的问题->k8s抓包
1.检查MySQL连接数多的IP邮件收到监控报警,MySQL连接数过多,导致MySQL主机内存超载,达到98.45%mysql [(none)]> show processlist;发现同一个IP通过很多端口连接,但都是sleep状态如 1.2.3.4:48866连接检查MySQL客户端主机的连接切换到1.2.3.4主机netstat -anp|grep 48866发现没有记录,应该是1.2.3.4主机连接MySQL主机不成功,重新换了端口继续连接,直接抓白tcpdump -i原创 2021-03-26 14:42:32 · 642 阅读 · 0 评论 -
Kubernetes面试之Deployment和Statefulset区别
Deployment适合场景无状态的应用特点1.pod之间没有顺序2.所有pod共享存储3.pod名字包含随机数字4.service都有ClusterIP,可以负载均衡StatefulSet适合场景有状态的应用特点1.部署、扩展、更新、删除都要有顺序2.每个pod都有自己存储,所以都用volumeClaimTemplates,为每个pod都生成一个自己的存储,保存自己的状态3.pod名字始终是固定的4.service没有ClusterIP,是headles原创 2020-08-21 11:05:58 · 6714 阅读 · 0 评论 -
Kubernetes面试之ready探针和live探针区别
ready探针作用表示应用可以接收请求更多ReadinessProbe探测失败,则容器的Ready将为False,控制器将此Pod的Endpoint从对应的service的Endpoint列表中移除,从此不再将任何请求调度此Pod上,直到下次探测成功。通过使用Readiness探针,Kubernetes能够等待应用程序完全启动,然后才允许服务将流量发送到新副本。live探针更多表示引用正常运行,没有发生故障参考链接K8s探针...原创 2020-08-21 11:02:58 · 315 阅读 · 0 评论 -
指定k8s的namespace和label key,获得对应namespace的pod名称、pod宿主机、宿主机标签
#!/bin/sh# $1 is namespace namepod=`kubectl get po -n $1 -o wide |awk '{print $1,$7}'|grep -v NODE`# $2 is label keynodelabels=`kubectl get node -L hanclouds.com|grep -v NAME|awk '{print $1,$6}'`echo ""|awk -v pod="$pod" -v nodelabels="$nodelabels"原创 2020-08-14 16:05:28 · 907 阅读 · 0 评论 -
访问k3s集群的配置文件位置和一些修改
k8s配置文件位置/etc/kubernetes/admin.confk3s配置文件位置/etc/rancher/k3s.k3s.yaml改变配置文件的服务器地址如果不是集群主机访问集群,就需要修改配置文件的server字段,只需将server的IP改成master的主机IP即可。...原创 2020-08-14 15:41:02 · 3111 阅读 · 0 评论 -
Rancher是如何实现查看Pod日志?
Rancher由多个组件组成rkt: Rancher用于安装k8s的工具ui: Rancher web ui的后台,nodejs编写更多组件的详细列表见:https://github.com/rancher/rancher/blob/master/vendor.confRancher通过websocket与容器的日志建立连接我们可以通过Rancher web ui查看容器日志,按F12得到websocket的连接地址、路径和参数,如图分析Rancher ui的源码,并通过路由router原创 2020-08-06 09:38:36 · 7649 阅读 · 1 评论 -
kubespray部署k8s version 1.0
一、部署原理基于vagrant和virtualbox,通过kubespray项目,控制ansible,部署高可用的k8s集群。二、部署环境1.部署拓扑2.部署软硬件硬件:物理机 CPU:Double CPU,14 core,2 threads per core,CPU Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz内存:64G软件:CentOS 7:kernel 3.10.0-327.22.2.el7.x86_64vagrant:原创 2020-08-05 20:47:59 · 483 阅读 · 0 评论 -
Kubernetes HA
背景由于当前测试开发环境中,单master的Kubernetes集群存在单点故障,为提升集群的可用性,需要对集群做高可用配置方案1.Kubernetes高可用主要分两个方面:第一,Kubernetes matser高可用kube-apisever无状态,天生可用于分布式高可用kube-controller-manager打开--leader-elect=true,形成只有一个leader可用,其他实例standbykube-scheduler同上第二,Kubernetes etcd原创 2020-08-05 20:41:16 · 179 阅读 · 0 评论 -
runc的编译安装
安装epel库yum search epelyum install epepl-xxx -y安装golangyum install go验证golanggo version配置go环境变量vi ~/.bash_profile添加如下内容:export PATHexport GOROOT=/usr/lib/golangexport GOPATH=$HOME/goexport PATH=$PATH:$GOROOT/bin让环境变量生效:source ~/.ba.原创 2020-08-05 20:35:40 · 1224 阅读 · 0 评论 -
ansible的安装与使用+kubespray部署k8s
-安装epel库# yum -y install epel-release安装pip,python3自带pip3# yum -y install python-pip# 升级pippip install --upgrade pip# 检查版本pip --versionpip 19.0.3 from /usr/lib/python2.7/site-packages/pip (python 2.7)通过pip安装ansible等必须工具# pip install ansible原创 2020-08-05 20:31:34 · 378 阅读 · 0 评论 -
2020-08-05 docker占用磁盘情况和清理
查看磁盘占用情况方式一docker system df -v方式二cd /var/lib/containers/du -sh *清理磁盘占用docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。docker system prune -a命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了...原创 2020-08-05 20:21:38 · 162 阅读 · 0 评论 -
2020-08-05 Kubernetes调皮的时区问题
修改CentOS的时区 立即生效本以为打开PodPreset万事大吉,马上吃鸡!结果是我想多了,系统时区咋还在西四区,一查西四区:西四区的国家有:智利、巴西、加拿大(东部的一部分)。我咋跑这么远了,不会废话,做正事。尝试N种方法:1.修改TZ环境变量,source一波,当前session生效,重开session,然并卵,现在又不能重启查看,是否可以生效2.执行tzselect,立即生效,重启哦豁3.ntpdate+硬件同步命令hwclock --systohc,太麻烦,因为感觉不是时间问题,原创 2020-08-05 10:33:50 · 217 阅读 · 0 评论 -
harbor切换主机,ip地址改变,需要对应的修改harbor配置
错误harbor切换主机不同的ip地址,需要对应的修改harbor配置,否则出现以下错误:Error response from daemon: Get http://192.168.1.111/v2/library/kube-scheduler/manifests/v1.13.3: Get http://192.168.1.110/service/token?scope=repository%3Alibrary%2Fkube-scheduler%3Apull&service=harbor-re原创 2020-07-30 16:14:43 · 3986 阅读 · 2 评论 -
k8s中emptydir、hostpath、localvolume的区别
应用场景特殊使用场景需求,如需要个临时存储空间,运行cAdvisor需要能访问到node节点/sys/fs/cgroup的数据,做本机单节点的k8s环境功能测试等等。容器集群只是做小规模部署,满足开发测试、集成测试需求。作为分布式存储服务的一种补充手段,比如我在一台node主机上插了块SSD,准备给某个容器吃小灶。目前主流的两个容器集群存储解决方案是ceph和glusterfs,二者都是典型的网络分布式存储,所有的数据读、写都是对磁盘IO和网络IO的考验,所以部署存储集群时至少要使用万兆的光纤网卡原创 2020-07-30 16:09:22 · 1383 阅读 · 0 评论 -
问题:[PLEG is not healthy: pleg was last seen active 3m46.303313348s ago; threshold is ...
现象k8s node ready 和 not ready重复出现分析某个deployment terminating无法完成,导致pleg一直不健康,kubelet有重启机制,开始ready,健康检查不通过认为自己not ready,从而状态重复切换解决把一直terminating的deployment删了,容器删不掉,重启了docker,删除,然后就没有not ready,只是在重启docker的时候,同时启动太多容器,太耗费cpu,导致kubelet短暂not ready参考链接原创 2020-07-30 16:07:53 · 1837 阅读 · 0 评论 -
强制删除pod
# kubectl delete pod xxx -n yyy --force --grace-period=0原创 2020-07-30 16:01:54 · 348 阅读 · 0 评论 -
Kubernetes删除一直Terminating状态的namespace
方法一方法一:# kubectl delete ns xxx --grace-period=0 --force方法二方法二:# kubectl edit ns xxx{ "kind": "Namespace", "apiVersion": "v1", "metadata": { "name": "xxx", "selfLink": "/api/v1/namespaces/openshift", "uid": "0a659原创 2020-07-30 16:00:52 · 373 阅读 · 0 评论 -
问题:虚拟机cpu增高,导致假死
分析Jul 24 19:15:58 node6 kernel: NMI watchdog: BUG: soft lockup - CPU#7 stuck for 23s! [runc:[1:CHILD]:16073]runc导致的软死锁查看kdump的日志定位更细致的错误:/var/crash/ 没有任何内容原因机架虚拟机内核版本太低:[root@node6 log]# uname -r3.10.0-862.el7.x86_64 阿里云虚拟机内核版本没有这样问题:3.10.0-957.原创 2020-07-30 15:57:50 · 976 阅读 · 0 评论 -
k8s、dockershim、containershim、容器运行时的关系
kubelet---/run/dockershim.sock[grpc]--- --->dockershim[cni,适配不同容器rkt,docker] | | | | | |原创 2020-07-30 15:54:26 · 850 阅读 · 0 评论 -
K8s容器的资源单位理解
CPU1 core = 1000 milli core1m相当于物理机的一个超线程小数位精确到0.01,即最小精度不能小于1mMemory整数 128974848字节定点整数 129e6字节M 1000进制 129M字节Mi 1024进制 123Mi字节链接官网容器资源解释...原创 2020-07-27 15:13:37 · 1344 阅读 · 2 评论 -
k8s容器的命名规则
k8s版本Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:05:50Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}Serv.原创 2020-07-27 15:09:01 · 2418 阅读 · 0 评论 -
ansible的安装与使用
# 安装epel库# yum -y install epel-release# 安装pip,python3自带pip3# yum -y install python-pip# 升级pippip install --upgrade pip# 检查版本pip --versionpip 19.0.3 from /usr/lib/python2.7/site-packages/pip (p...原创 2019-03-18 15:02:45 · 129 阅读 · 0 评论 -
Kubernetes部署ceph故障记录
1.现象:The keyring does not match the existing keyring in /var/lib/rook/mon-d/data/keyring. You may need to delete the contents of dataDirHostPath on thehost from a previous deployment.问题:keyring不一致导致...原创 2019-01-08 16:03:44 · 526 阅读 · 0 评论