
K8S
Locutus
一切源于对计算机的热爱
展开
-
使用nginx-ingress-controller,同时配置http和https访问应用
默认情况下,如果为该应用服务的Ingress启用TLS,nginx-ingress-controller会使用308永久重定向响应,把HTTP客户端重定向到HTTPS端口443( Ingress里配置了https证书的话,默认就一定会走 https)。若还想使用http协议,则可以在NGINX配置映射中,使用全局禁用ssl-redirect: "false"。或在每个应用服务的Ingress.yaml中,添加注解nginx.ingress.kubernetes.io/ssl-redirect: "fals转载 2021-11-10 14:53:19 · 3085 阅读 · 0 评论 -
使用mizu,查看Pod之间的API访问流量
介绍一个简单但功能强大的 Kubernetes中的 API 流量查看器,可以用来查看pod之间的所有 API 通信,以帮助调试和排除故障。可以理解为TCPDump 和 Chrome Dev Tools 的结合。使用安装Mac# curl -Lo mizu https://github.com/up9inc/mizu/releases/latest/download/mizu_darwin_amd64 # chmod 755 mizulinux# curl -Lo mizu htt转载 2021-10-17 00:22:01 · 590 阅读 · 0 评论 -
Kublet PLEG不健康问题排障
1. 发现问题某个Node频繁出现“PLEG is not healthy: pleg was last seen active 3m46.752815514s ago; threshold is 3m0s”错误,频率在5-10分钟就会出现一次。使用kubectl get pods --all-namespaces,发现有一个istio-ingressgateway-6bbdd58f8c-nlgnd一直处于Terminating状态,也就是杀不死。到Node节点上,使用docker logs --tai转载 2021-07-28 17:50:59 · 2091 阅读 · 0 评论 -
1 node(s) didn‘t match node selector, 2 node(s) didn‘t find available persistent volumes to bind.
1. 发现问题PVapiVersion: v1kind: PersistentVolumemetadata: name: pv-ghost namespace: ghostspec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: pat原创 2021-07-27 15:50:38 · 2768 阅读 · 0 评论 -
迁移pod到其他节点
把节点node07-ingress上的pod,迁移到其他节点。# kubectl drain --ignore-daemonsets --delete-local-data node07-ingress转载 2021-07-23 10:40:25 · 852 阅读 · 0 评论 -
k8s pod一直处于ContainerCreating状态
发现问题pod一直处于ContainerCreating状态。// 查看指定命令空间kube-system下的pod# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGEcoredns-cd7f66fdc-572wr 0/1 ContainerCreating 0原创 2021-04-27 16:01:46 · 8889 阅读 · 0 评论 -
k8s pod一直处于pending状态
k8s pod一直处于pending状态,使用下面的命令,查看log,找出详细的错误信息。# kubectl get pod# kubectl describe pod pod_name -n kube-system# kubectl logs pod_name原创 2021-04-27 15:57:31 · 11463 阅读 · 1 评论 -
k8s启动Pod,遇到CrashLoopBackOff的解决方法
发现问题一直正常运的k8s,集群节点没问题,但启动pod出现异常,等待中CrashLoopBackOff。分析问题K8s可能出现很多种故障,但要学查看日志,排查具体原因所在。解决问题登陆此节点主机使用kubctl获取pod状态,查询异常pod名称# kubectl get podelkhost-944bcbcd4-8n9nj查看此状态pod详细情况# kubectl describe pod elkhost-944bcbcd4-8n9nj查看此pod日志# kubectl l转载 2021-04-27 09:55:58 · 2691 阅读 · 0 评论 -
pod时间时区与node主机保持一致
发现问题在安装Kubernetes集群的过程中,我并没有注意到pod的时间问题。直到在Tomcat上部署应用后,我发现pod中的时间与Node上的时间不同步。分析问题解决这个问题基本上可以有两种思路:直接修改镜像的时间设置。好处是应用部署时无需做特殊设置,但是需要手动构建Docker镜像部署应用时,单独读取主机的/etc/localtime文件。好处是创建pod时同步时区,无需修改镜像,但是每个应用都要单独设置解决问题修改镜像的时间FROM ubuntu:16.04M转载 2021-04-23 16:56:02 · 1363 阅读 · 0 评论 -
k8s删除命名空间
k8s删除命名空间kubectl delete ns xxx删除pod控制器kubectl delete ds xxx强制删除pod如果执行了2,短时间ns还是处于terminating,就强制删除pod。原创 2021-02-23 17:26:54 · 1247 阅读 · 0 评论 -
使用FreeIPA账户作为Rancher认证用户来源
1. 操作freeIPA准备Service Account在开始把FreeIPA接进Rancher之前,Rancher要求先在IPA里面建立一个Service Account来提供Rancher查询Domain下的使用者和群组,但建立Service Account的步骤无法从FreeIPA Web界面执行,必须手动把这个Service Account 加入LDAP。因此,我们首先到IPA master节点上执行下列命令:(假设 IPA domain为example.com)。# cat - <转载 2021-01-31 13:59:20 · 551 阅读 · 0 评论 -
如何解决Pod中apt/apt-get update太慢的问题
发现问题如果你的docker容器中没有vi、nano等软件,你需要使用apt-get install nano。在apt-get install之前,你需要执行apt-get update。但是在容器中执行apt-get update,更新速度太慢。分析问题apt-get update源网速太慢,需要换成国内源。解决问题在容器命令行,清空/etc/apt/sources.list文件。# echo > /etc/apt/sources.list向/etc/apt/sources.转载 2021-01-26 22:01:40 · 6833 阅读 · 1 评论 -
k8s中port、nodePort、targetPort概念的区分
1. 三种类型端口所应用的位置不同port是service的端口targetport是pod(也就是容器)的端口nodeport是容器所在node节点的端口(实质上也是通过nodeport类型的service暴露给集群节点,但port没有service类型)2. 三种类型端口的作用不同portport的主要作用是集群内其他pod访问本pod时,需要一个port,如nginx的pod访问mysql的pod,那么mysql的pod的service可以如下定义:apiVersion: v转载 2020-09-11 11:29:52 · 23076 阅读 · 1 评论 -
查看集群中开放的nodeport列表
# netstat -nlpt | grep -Po ':::\K\d+(?=.+kube-proxy)' | sort -rn | xargs -n832562 32223 32204 32171 31994 31704 31394 3111130827 30698 30261 30080 30036 30029 30002 10256原创 2020-09-11 11:15:16 · 930 阅读 · 0 评论 -
在node节点命令行执行kubectl exec,在对应pod容器内执行命令
在node节点命令行执行kubectl exec,在对应pod容器内执行命令# kubectl exec -it <podName> -c <containerName> -n <namespace> -- shell comand例如,我们在pod容器内创建一个testfile文件:# kubectl exec -it <podname> -c <container name> -n <namespace> -- touch转载 2020-09-07 18:01:14 · 3015 阅读 · 0 评论 -
Tiller pods can‘t connect to k8s apiserver,dial tcp 10.254.0.1:443: no route to host
1. 问题使用helm list查看本地安装应用时,报错# helm listError: Get https://10.254.0.1:443/api/v1/namespaces/kube-system/configmaps?labelSelector=OWNER%!D(MISSING)TILLER: dial tcp 10.254.0.1:443: no route to host使用helm version正常,但是使用helm list报错。2. 解决原因是Tiller pods原创 2020-09-04 09:43:37 · 805 阅读 · 0 评论 -
升级ingress-nginx-controller的nginx版本
https://blog.youkuaiyun.com/weixin_39961559/article/details/87935873转载 2020-09-01 10:18:42 · 920 阅读 · 0 评论 -
解决“在Pod容器中,没有sudo权限,无法安装软件和执行特定操作”的问题
问题我有一个名为jenkins-app-2843651954-4zqdp的pod,我想在这个pod上安装几个软件,我怎样才能做到这一点?我尝试使用kubectl exec -it jenkins-app-2843651954-4zqdp /bin/bash,然后,运行apt install命令,但由于用户没有sudo权限,因此我无法运行命令。解决查看pod使用什么shell# kubectl exec -it jenkins-app-2843651954-4zqdp (bash || ash ||原创 2020-08-25 09:55:03 · 1839 阅读 · 0 评论 -
kubelet启动失败 ——— Active: failed (Result: start-limit)
问题kubelet启动失败 ——— Active: failed (Result: start-limit)。# systemctl status kubelet● kubelet.service - Kubernetes Kubelet Server Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: disabled) Active: failed (Result: start-li原创 2020-08-19 17:22:52 · 9565 阅读 · 0 评论 -
remove /var/lib/kubelet/pods//volumes/kubernetes.io~downward-api/podinfo: device or resource busy
全部解挂载# umount $(df -HT | grep '/var/lib/kubelet/pods' | awk '{print $7}')一个个解挂载# umount /var/lib/kubelet/pods/fb503576-95e0-11e6-bc6f-a0369f90f4d0/volumes/kubernetes.io~downward-api/podinfo原创 2020-08-19 17:04:01 · 2317 阅读 · 0 评论 -
Kubernetes HostAliases添加其他主机别名到Pod
k8s的不同微服务之间可以通过service-name域名来相互访问,通过集群中的coreDNS来完成service-name域名解析。当我们想在Pod上增加一些域名解析时(例如宿主机的主机名),操作DNS模块也不太方便。那么k8s上有没有像linux主机那样,可以直接在/etc/hosts文件中设置域名解析呢?1. 在容器镜像中添加/etc/hosts解析(不行)很容易想到的是,我们把域名记录到容器镜像的/etc/hosts文件,这样容器运行时就可以正确解析了。然而这样是不行的,docker会管理/转载 2020-08-18 11:03:52 · 5361 阅读 · 0 评论 -
在pod中,安装软件
apt# apt update# apt install vim原创 2020-08-13 01:59:35 · 802 阅读 · 0 评论 -
k8s集群节点状态变成NotReady,SchedulingDisabled
出现问题k8s集群节点状态变成NotReady,SchedulingDisabled。# kubectl get node NAME STATUS ROLES AGE VERSIONmaster-1 NotReady &原创 2020-08-02 00:17:15 · 10179 阅读 · 0 评论 -
k8s强制删除pod
有时候pod一直在Terminating,这时,需要在命令行,强制删除pod。# kubectl delete pod xxx --force --grace-period=0原创 2020-07-16 15:30:34 · 1216 阅读 · 0 评论 -
为什么kubelet服务运行时不能打开swap?
1. 问题测试环境中某个节点NotReady了,查看节点信息,发现kubelet出错无法向API Server注册节点。# kubectl get node# kubectl describe node 10.0.0.166Conditions: Type Status LastHeartbeatTime LastTransitionTime Reason Message原创 2020-05-26 18:27:50 · 1694 阅读 · 0 评论 -
使用kubectl create 和 kubectl apply,创建资源对象的对比
如果yaml文件中的kind值为deployment,那么上面这两个命令都可以创建一个deployment,生成相应数量的pod。那二者有什么区别呢?kubectl create先删除所有现有的东西,重新根据yaml文件生成新的。所以要求yaml文件中的配置必须是完整的用同一个yaml 文件执行替换命令replace,将不会成功,fail掉kubectl apply根据y...转载 2020-01-20 17:25:01 · 4695 阅读 · 1 评论 -
Kubernetes之包管理工具krew
1. 概念krew是kubectl插件的包管理工具。借助krew,可以轻松地使用kubectl plugin:发现插件、安装和管理插件,krew的使用类似apt、dnf或者brew。对于kubectl用户:krew能帮助用户搜索、安装和管理kubectl插件对于插件开发者:krew可以帮助你在多种平台上打包和发布插件2. krew的使用kubectl krew search ...转载 2020-01-13 17:18:44 · 1095 阅读 · 1 评论 -
使用operator-sdk在Kubernetes中编写自定义控制器CRD
随着云计算技术生态的日趋完善,以及各大云计算技术厂商提供PAAS平台能力的日臻成熟,创建Kubernetes集群和在集群上部署应用变得非常容易。尽管K8s Deployment可以实现应用的滚动升级和回滚管理,但事实上应用程序的发布流程千差万别。在遵循Kubernetes的控制器模型和API编程范式前提下,从“在Kubernetes中部署代码"晋级到"使用Kubernetes编写代码”,是Kube...转载 2019-12-27 15:40:40 · 2667 阅读 · 0 评论 -
容器云之K8s自动化安装方式的选择
https://blog.youkuaiyun.com/xudawenfighting/article/details/80127229systemdhyperkube转载 2019-11-28 09:51:39 · 171 阅读 · 1 评论 -
kubernetes的二次开发
如何基于kubernetes开发自定义的Controllerkubernetes添加第三方存储(一)转载 2018-03-14 14:48:02 · 2546 阅读 · 1 评论 -
《Kubernetes与云原生应用》系列之一 ——Kubernetes的系统架构与设计理念
原文转自InfoQ 随着Docker技术的发展和广泛流行,云原生应用和容器调度管理系统也成为IT领域大热的词汇。事实上,云原生应用的思想,在Docker技术火爆之前,已经由云计算技术的领导者和分布式系统架构的推广者广泛传播,例如云原生应用的12要素早在2011年就由Heroku的工程师提出了;只不过以虚拟机技术作为云原生应用的基础实施,由于虚拟机镜像大、镜像标准不统一以及打包流程和工具不统一,业界转载 2016-11-14 15:29:33 · 2124 阅读 · 0 评论 -
修改kubernetes的service服务类型nodeport端口范围
问题在Kubernetes中创建service时,使用nodePort方式暴露服务访问端口6379时报错:The Service “mongo” is invalid: spec.ports[0].nodePort: Invalid value: 6379: provided port is not in the valid range. The range of valid ports is...原创 2019-09-16 15:19:11 · 4251 阅读 · 0 评论 -
使用ReplicationController、Replica Set、Deployment管理Pod
Pod直译是豆荚,我们可以把容器想像成豆荚里的豆子,把一个或多个关系紧密的豆子包在一起就是豆荚(一个Pod)。在k8s中我们不会直接操作容器,而是把容器包装成Pod,而对于Pod,我们该如何管理?先看下面这个场景:应用场景:假设有一个Pod正在提供线上服务,我们想想如何应对以下几个场景:1.节日活动,网站访问量突增2.遭到攻击,网站访问量突增3.运行Pod的节点发生故障第1种情况,活动前预先多启动几原创 2016-12-19 19:02:41 · 11660 阅读 · 0 评论 -
minikube系列(2):minikube无法启动dashboard的解决方法
问题在安装完单机版的kubernetes后,我们使用minkube dashboard命令会遇到以下的错误:# minikube dashboardError accessing the kubernetes dashboard ( is minikube running?): Error : Error getting kubernetes-dashboard services: services原创 2017-05-15 17:51:53 · 14745 阅读 · 1 评论 -
kubeadm 搭建 kubernetes 集群
https://mritd.me/2016/10/29/set-up-kubernetes-cluster-by-kubeadm/#section-6转载 2017-03-22 13:42:38 · 464 阅读 · 0 评论 -
kubernetes 简介: kubelet 组件功能
http://cizixs.com/2016/10/25/kubernetes-intro-kubelet转载 2017-03-20 08:20:31 · 686 阅读 · 0 评论 -
etcd集群部署
简介 Etcd是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。 ● 简单:支持 curl 方式的用户 API (HTTP+JSON) ● 安全:可选 SSL 客户端证书认证 ● 快速:单实例可达每秒1000次写操作 ● 可靠:使用 Raft 实现分布式环境: node IP OS etcd etcd0 10.1.2.61原创 2017-01-06 20:10:53 · 7477 阅读 · 1 评论 -
《Kubernetes与云原生应用》系列之四——实践案例“单节点多容器模式”
原文转自InfoQ一、K8s与容器设计模式目前K8s社区推出的容器设计模式主要分为三大类:单容器管理模式单节点多容器模式多节点多容器模式一类比一类更复杂。根据复杂性的不同,本系列文章给出不同篇幅的实践案例介绍。对于第一类,只在本文中用一小节给与介绍; 对于第二类,在本文中,针对每一种典型设计模式分一个小节给予介绍; 对于较复杂的第三类,每一种典型设计模式将用一篇文章给予介绍。二、单容器管转载 2016-11-14 17:42:00 · 1074 阅读 · 0 评论 -
《Kubernetes与云原生应用》系列之二——云原生应用的设计理念与挑战
原文转自InfoQ云原生应用的基本概念云原生应用,是指原生为在云平台上部署运行而设计开发的应用。公平的说,大多数传统的应用,不做任何改动,都是可以在云平台运行起来的,只要云平台支持这个传统应用所运行的计算机架构和操作系统。只不过这种运行模式,仅仅是把虚拟机当物理机一样使用,不能够真正利用起来云平台的能力。云原生应用与相关技术理念的关系云原生应用与云平台的关系云平台是用来部署、管理和运行SaaS云应用转载 2016-11-14 13:24:41 · 662 阅读 · 0 评论 -
《Kubernetes与云原生应用》系列之七——容器设计模式实践案例:分散收集模式
原文转自InfoQ 目前,K8s社区推出的容器设计模式主要分为三大类: 第一类,单容器管理模式第二类,单节点多容器模式 第三类,多节点多容器模式一类比一类更复杂。根据复杂性的不同,本系列文章给出不同篇幅的实践案例介绍。云计算与分布式系统是一个事物的两种解读:云计算是面子,分布式系统是里子。云计算给用户刻画出的是方便的、弹性的、自动化的、随时随地可以得到的信息处理服务,而后台,需要云转载 2016-11-22 17:00:47 · 1182 阅读 · 0 评论