Kubernetes 滚动升级

run test deploy [root@k8s-master ~]# kubectl run --image=nginx --port=80 --replicas=2 test-nginx scale replica [root@k8s-master ~]# kubectl scale --replicas=1 deploy/test-nginx [root@k8s-master ~]# kubectl get deploy NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE busybox 2 2 2 2 39d busybox1 1 1 1 1 39d test-nginx 1 1 1 1 2h update image [root@k8s-master ~]# kubectl set image deploy/test-nginx test-nginx=nginx:alpine 查看升级历史 [root@k8s-master ~]# kubectl rollout history deploy/test-nginx deployments "test-nginx" REVISION CHANGE-CAUSE 1 <none> 2 <none> 回顾至上次版本 [root@k8s-master ~]# kubectl rollout undo deploy/test-nginx [root@k8s-master ~]# kubectl rollout history deploy/test-nginx deployments "test-nginx" REVISION CHANGE-CAUSE 2 <none> 3 <none> 回滚至指定版本 [root@k8s-master ~]# kubectl rolloutundo deployment/lykops-dpm --to-revision=2……

阅读全文

K8s容器一直重启问题排查

问题 昨天有个客户反馈服务不可访问,查看服务日志发现dns无法解析,通过kubectl查看kube-dns 这个pod一直在重启,客户只反馈了这一个问题,如图: 过了一会后发现kube-dns灾厄已经恢复,但是kube-flannel这个pod又开始一直重启。 根据自己以往的经验还以为是……

阅读全文

Kubernetes Eviction Manager工作机制分析

摘要 为了极限的压榨资源,很多时候Kubernetes集群会运行一些Best-Effort Task,这样就会存在资源超配的情况,Kubernetes是如何控制Node上资源的使用,在压榨资源使用的同时又能保证Node的稳定性?本文就为你介绍其背后运行机制。我的下一篇博文,会对Kub……

阅读全文

Kubernetes的使用技巧

1. bash针对kubectl命令的自动补充 这可能是在使用Kubernetes过程中最容易做的事,但它也是其中一个最有用的。要添加自动补充功能,如果使用bash,只需执行以下命令: echo "source <(kubectl completion bash)" >> ~/.bashrc 它将添加自动补全命令到你的.bashrc文件。因此每个你打开的shell窗口都支持该功能……

阅读全文

K8S的 QoS策略

QoS k8s中对容器的资源分配有三种策略: Guaranteed 。该策略下,pod.spec.containers[].resources中会存在cpu或memory的request和limit。顾名思义是该容器对资源的最低要求和最高使用量限制。如果我们配置了limit,没有配置request,默认会以……

阅读全文

K8s的一次路由故障

问题 今天有个客户三台master上有两台的kube-dns一直起不来,如图: 排查 查看pod的日志: 看到报错后首先想到的就是rount有问题,然后通过查看路由发现,有问题的两台机器多了一条路由: 通过以下命令查看本机应该对应的flannel的路由: [root@node-dev-3 ~]# cat /run/flannel/subnet.env FLANNEL_NETWORK=10.5.0.0/16 FLANNEL_SUBNET=10.5.2.1/24 FLANNEL_MTU=1450 FLANNEL_IPMASQ=true 解决方法 删除多余的路……

阅读全文

Hung_task_timeout_secs参数

问题 客户有一台服务器,安装了VMW软件做了虚拟化,在其上搭建了一台readhat虚拟机,起初给的内存为16G,在添加了12G的内存后,将虚拟机的内存调整到了20G 调整完后主机这边就一直报错: Nov 5 13:05:41 RedHat5 kernel: INFO: task oracle:22439 blocked for more than 120 seconds. Nov 5 13:05:41 RedHat5 kernel: “echo 0 > /proc/sys/kernel/hu……

阅读全文

K8S的pod内获取变量的值错误

问题 今天遇到一个问题,就是用shell脚本从k8s的pod内获取变量,然后再进行赋值或字符拼接时,结果发现总是不对,但是通过自定义的变量没有问题 以下为问题复现: [root@cloud-cn-master-1 ~]# cc=`kubectl exec -it -n nginx-system nginx-df4b995c5-98w66 -c nginx-01 env | grep SYS_ADMIN_USERNAME | awk -F"=" '{print $2}'` [root@cloud-cn-master-1 ~]# echo $cc sysadmin [root@cloud-cn-master-1 ~]# echo $cc"abcde" :abcdein [root@cloud-cn-master-1 ~]# [root@cloud-cn-master-1 ~]# dd=test [root@cloud-cn-master-1 ~]# echo $dd test [root@cloud-cn-master-1 ~]# echo $dd":abcde" test:abcde [root@cloud-cn-master-1 ~]# 经过反复排查,结果发现取出的……

阅读全文

DNS介绍

DNS解析全过程 客户机提出域名解析请求,并将该请求发送给本地的域名服务器。 当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。 如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给……

阅读全文

Linux:配置iptables使内网虚拟机访问公网

问题 当公网ip地址不够用的时候,或者出于安全目的,虚拟机使用纯内网ip,然后通过nat转发出去,是一个典型的虚拟化网络环境。 解决方法 打开宿主机的内核转发: echo 1 > /proc/sys/net/ipv4/ip_forward 配置nat iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o br0 -j SNAT --to 外网ip 然后虚拟机网关配置宿主机内网ip,就可以上网了。 注意点: 1 宿主机虚拟机之间的……

阅读全文