Hot For Coding
Kubernetes如何升级

kubernetes

Kubernetes集群升级非常简单,但如果你要升级的版本是一个末位数为0的请慎重,比如你要从v1.15.5升级到v1.16.0。我之前盲目升级导致目前一直有两个坑一个没有填好

  • 升级后CronJob的Pod不会自动清理,升级之前自动保留最后三个,即使设置了successfulJobsHistoryLimit: 3也无效,发现跟我入坑的还有不少人
  • 升级后跑Gitlab-Runner时容器总是经常command terminated with exit code 137,升级之前从来没有这个问题,开issue Gitlab团队的人回复目前这个问题无解,尝试给足够多的Resources来减少这种问题的出现,但仍然还是不能完全避免

...

READ ALL

Crontab默认编辑器修改

在新系统中初次使用crontab时会询问默认打开编辑器选项,不小心就选了默认的nano,由于要修改的内容也简单所以就想简单使用nano完成任务就好。结果实在是不习惯,使用了多年的vi之后很难适应别的editor,没办法只好想办法把默认的editor改回vim。

有两种方式可以改

通过环境变量

环境变量可以设置VISUALEDITOR,两个任何一个都可以,如我想在编辑crontab时使用vim打开可以这么做

VISUAL=vim crontab -e  

或者也可以这样

EDITOR=vim crontab -e  

...

READ ALL

vim粘贴代码缩进问题

vim

原因

很长时间以来,我以vim做为我的主要编辑器在Linux下写程序,但vim设置了smartindent之后通过终端SecureCRT连接Linux使用vim时每次粘贴代码缩进都会出现下一行代码的起始位置在上一行代码的末尾处,依此类推,你粘贴的行数越多,就越明显,如:

源片段:

resources:
  limits:
    memory: 4096Mi
    cpu: 300m
  requests:
    memory: 128Mi
    cpu: 100m

...

READ ALL

NodeJS请求431 Request Header Fields Too Large 错误

nodejs

公司使用verdaccio-gitlab搭建了私有的NPM Registry,并使用Gitlab服务做授权,一直运行稳定。

直到最近升级了NodeJS版本之后,陆续发现有一些问题:

  • 固定一部分用户在请求packages接口时总是400错误
  • 部分用户不受影响

从问题上分析,大概判断是跟用户数据相关引发的错误,但verdaccio-gitlab这个包只给出了400错误,很不好确定具体错误。于是直接在测试环境启动了一个Verdaccio然后发现其实有问题的那一部分用户状态码其实是431 Request Header Fields Too Large,意思就是请求头太大。

...

READ ALL

修复Docker错误 no space left on device

docker

我使用的是Mac电脑,我习惯在我电脑上Build镜像之后在推送到私有Registry。

然而,今天我正要构建一个镜像时出现了错误

no space left on device

提示空间不够了。Docker使用分层存储技术很大程度上避免了空间浪费,但日积月累的也会有爆满的时候,就像垃圾桶一样,堆满了自然无法容纳更多的垃圾。Mac上安装了Docker程序之后默认占用磁盘空间为64GB,所以要解决空间不够的问题可以从两方面下手

调大磁盘空间

点开图标,在下拉菜单中选择Preferences...,在弹开的界面顶部中选择Disk菜单

...

READ ALL

Debian9 UFW防火墙

ufw

之前一直都在使用iptables好多年,因为它是系统基础的一部分,很多Linux发行版本都适用它。可每次需要添加端口删除端口的时候都需要重新查询手册,虽然功能很强大,但太复杂了。

今天我们要介绍的是一款非常简单容易上手的防火墙UFW,英文名: Uncomplicated Firewall,中文名应该叫简单防火墙。它其实底层还是使用了iptables,它基于iptables封装了一些非常日常易用的命令。

安装

使用Debian自带的包管理工具apt就可以安装

sudo apt install ufw -y

...

READ ALL

一切从简 - 新改版

废了很多精力终于改版结束,上一次Python改版至今已有六年,本次改版有很多想法都是基于这些年的对个人博客系统的逐渐深入认识,最后得出本次改版的目的一切从简

无数据库

之前一直使用关系型数据库MySQL做为数据存储引擎,由于个人文章数量不太多所以没有遇到性能瓶颈问题,虽然在设计表的时候做了很多查询优化。使用数据库会有以下几个问题:

  • 在线编辑器: 通常需要搭建一个HTML在线编辑工具编写内容,然后通过程序往数据库读写,但这种在线编辑器经常在贴代码的时候不太好处理,浏览器的性能还是有限的,页面卡死崩溃内容丢失就有发生过
  • 需要部署: 虽然现在部署一个MySQL有很多方式可以非常容易做到,但我认为能不用就不用
  • 更好维护: 不用担心数据库挂了影响使用,也不需要总是关心MySQL日志异常或者慢查询

...

READ ALL

WebAssembly简单试用例子

webassembly

WebAssembly自从提出,就一直被火热关注,前端性能至少有了一个解决方案,我们试着写一个小例子。

安装环境

以Mac系统为例子

  • 安装cmake brew install cmake
  • 安装Python 2.7.X brew install python2
  • 安装GCC (Mac自带)
  • 安装Git (Mac自带)

校验环境

确认git, pythoncmake命令可以用

cmake

# cmake --version
cmake version 3.10.1
 
CMake suite maintained and supported by Kitware (kitware.com/cmake).
@Nicholas-MBP ➜ WebAssembly 

...

READ ALL

Vue如何直接调用Component里的方法

有时候,我们需要在另一个A Component里直接调用B Component里的方法,但Vue的Component和我们平常写的JavaScript module不一样,不能简单的通过import后就直接调用,下面是我找到的一种方法,目前测试可用

AComponent.vue

<template>
  <div>
    <b-component ref="BComponent"></b-component>
  </div>
</template>
 
<script>
import BComponent from './BComponent'
 
export default {
  name: 'A',
 
  data () {
  },
 
  components: {
    BComponent
  },
 
  methods: {
    callACompoentFunction () {
      this.$refs.BComponent.sayHi()
    }
  }
}
</script>
 
<style scoped>
</style>

...

READ ALL

bz2解压失败

解压bz2压缩包时提示错误:

[root@test01 e2e]# tar -jxf test.tar.bz2 
tar (child): bzip2: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

看错误就知道bzip2系统不支持,安装所需的处理包,如CentOS下执行

...

READ ALL