kubernetes
任庆
坚持做正确的事
展开
-
springBoot 配置项外提结合容器化
SpringBoot的部署上,个人习惯于代码部分打入镜像,配置项以外部挂载的方式进行关联,从而进行代码和配置的解耦合。在部署不同环境的时候(例如,test、dev、staging、product)只需要一个镜像即可,只需创建对应的配置对象即可。这里的配置对象在docker上可以是文件夹,每个文件夹对应一个环境,docker run的时候通过 -v 命令进行关联,在kubernetes上可以是一个configMap对象。需要外提的配置项一般有application.porperties一族(applica原创 2020-10-12 10:31:30 · 304 阅读 · 1 评论 -
yaml 格式错误 did not find expected key
持续集成或者在k8s master节点上执行yaml脚本部署时报错。看报错信息,描述的是yaml转json失败导致。解决思路:格式是否有错,真的是yaml格式错误,可以把内容复制到http://www.yamllint.com/或者找一个yaml校验工具进行调试 如果yaml格式正确,则是逻辑上的问题,例如:k8s上对象依赖关系,是否嵌套的正确,典型案例就是volumes应该放在和containers平级的位置,不要放在任意一个container中,惯例放在最后且和containers平级。..原创 2020-09-25 14:39:29 · 49886 阅读 · 1 评论 -
kubernetes 镜像替换以及pod的重启,暂停,恢复
在k8s集群中,经常遇到需要升级镜像的需求,但是挂载的数据并不发生变化。同时又不想停止线上服务。# 升级镜像kubectl set image deployment/deploy-name containerName=newIMG:version # kubectl set image controllerType/controllerInstanceName underInstanc...原创 2020-04-15 10:46:06 · 8063 阅读 · 0 评论 -
NGINX Ingress Controller 转发路径重定向
在k8s中使用ingress的过程中,需要创建ingress对象来为Controller制定转发规则(k8s ingress相关参考),一般yaml文件为:apiVersion: extensions/v1beta1kind: Ingressmetadata: name: ing-nginx annotations: kubernetes.io/ingress.class...原创 2019-12-02 14:56:26 · 12129 阅读 · 1 评论 -
kubernetes 批量删除失败pod
查看dashboard发现很多pod状态是Evicted状态,需要批量删除这些失败了的pod。方案:kubectl get pods | grep Evicted | awk '{print$1}'| xargs kubectl delete podskubectl get pods -n kube-system | grep Evicted | awk '{print$1}'|...原创 2019-09-19 16:39:41 · 3811 阅读 · 3 评论 -
kubernetes 的 Ingress
ingress顾名思义,它是一个入口,可以作为所有服务统一的入口(实际上只是一个配置,并不是真正的logic processor),相比使用LoadBalancer类型的Service,需要占用宿主机的一个端而言,它不需要占用过多的端口,而且可以为所有服务提供一个统一的认证方式和安全策略(实际上也可以为多个服务分别指定策略)。图:首先是调用方发起请求,到指定域名 域名通过DNS解析成...原创 2019-09-09 18:04:18 · 510 阅读 · 0 评论 -
Ubuntu部署Kubernetes集群及问题解决
总计五部分:master节点部署; node节点部署并加入master; 管理工具部署; 问题解决; 常用命令master节点:1 . 关闭防火墙主要是防止master和node之间、master和客户端之间通信阻止。// 关闭防火墙sudo ufw disable2 . 关闭swap并重新加载配置因为k8s调度需要计算机器容量,因此关闭交换内存,减少计...原创 2019-08-28 17:58:29 · 1641 阅读 · 0 评论 -
kubernetes 的 DaemonSet
在部署服务时,有一类服务是需要在每台node上都启动一个的(例如,日志收集,网络存储设置等基础服务,最典型的,搭建k8s集群master节点时,需要创建一个网络管理,例如,flannel,这个应用就是以DaemonSet形式部署的)。如果在master上用部署Deployment的方式也能实现,为了保证能调度到每台node,就需要使用affinity来进行关联,需要使用IN条件来选中多个机器的la...原创 2019-07-24 15:32:50 · 394 阅读 · 0 评论 -
10分钟搞定 harbor
1、安装docker及docker-compose注:高版本(14以上)docker执行login命令,默认使用https,且harbor必须使用域名,只是用ip访问是不行的。Centos下:(docker安装部分参考自:http://www.runoob.com/docker/centos-docker-install.html)yum install -y yum-utils d...原创 2019-02-18 14:21:04 · 8971 阅读 · 2 评论 -
kubernetes 的 liveness和readiness
Liveness:作用:用于判断容器是否需要重启。场景:pod中有多个container,长时间的运行后,某个container异常了但还是running状态(例如,程序死锁)导致整体服务不可用,但是pod状态还是running状态,需要重启一下container。例如,pod中包含一个nginx container,一个business container,nginx负责接收客户请求...原创 2019-05-27 16:56:55 · 1079 阅读 · 0 评论 -
kubernetes 的 滚动升级和回滚(rollout)
产品部署完成上线之后,经常遇到需要升级服务的要求(只考虑更新镜像),以往操作流程大致如下:# 方式一:找到 master具体调度到的所有目标node,删除其对应的镜像文件# 方式二:修改 file.yaml中镜像拉取策略为Always# 删掉旧pod,并重新创建kubectl delete -f /path/file.yamlkubectl create -f /path/file...原创 2019-07-11 11:49:03 · 2634 阅读 · 0 评论 -
k8s 命令行参考
基操:缩写:# kubectl get option 缩写-namespace -n--all-namespaces -A--filename=[] -f--kustomize='' -k--label-columns -L--output='' -o--recursive -R--selector ...原创 2019-05-09 11:59:16 · 1101 阅读 · 0 评论 -
【转】Kubernetes(k8s)有状态集群服务部署与管理
由于篇幅关系,第一部分Kubernetes相关概念略过不提,本文将结合分享内容,对《Kubernetes有状态服务部署与管理》之K8S存储系统做重点阐述。在K8S运行的服务,从简单到复杂可以分成三类:无状态服务、普通有状态服务和有状态集群服务。下面分别来看K8S是如何运行这三类服务的。无状态服务,K8S使用RC(或更新的Replica Set)来保证一个服务的实例数量,如果...转载 2019-05-21 09:16:29 · 923 阅读 · 0 评论 -
kubernetes(k8s)StatefulSet 和 Deployment 区别及选择方式
访问方式:Compare Deployment & StatefulSet类型 特性 Deployment StatefulSet 是否暴露到外网 可以 一般不 请求面向的对象 serviceName 指定pod的域名 灵活性 只能通过service/serviceIp访问到k8...原创 2019-05-21 10:47:23 · 29422 阅读 · 0 评论 -
kubernetes persistentVolume 内存单位
由大到小依次:E, P, T, G, M, K, Ei, Pi, Ti, Gi, Mi, Ki.yaml样例:kind: PersistentVolumeapiVersion: v1metadata: name: test-data labels: type: data spec: #storageClassName: manual capacity: ...原创 2019-06-10 17:02:55 · 765 阅读 · 0 评论