背景

在docker中,为了尽可能缩减镜像大小,常常不会包含一些常用的工具,类似ping,curl,tcpdump等,虽然精简了镜像,但如果我们需要在容器内部测试网络联通性时,没有这些工具就非常的头疼。其实容器内部和主机之间的网络环境是互相隔离的,处于独立的命名空间下,那如果能在主机上切换命名空间,就可以在主机上以容器的网络环境进行操作,就可以利用主机上的工具,能够实现这种需求的工具就是我们今天要介绍的nsenter

使用

nsenter [options] [program [arguments]]
options:
-t, --target pid:指定被进入命名空间的目标进程的pid
-m, --mount[=file]:进入mount命令空间。如果指定了file,则进入file的命令空间
-u, --uts[=file]:进入uts命令空间。如果指定了file,则进入file的命令空间
-i, --ipc[=file]:进入ipc命令空间。如果指定了file,则进入file的命令空间
-n, --net[=file]:进入net命令空间。如果指定了file,则进入file的命令空间
-p, --pid[=file]:进入pid命令空间。如果指定了file,则进入file的命令空间
-U, --user[=file]:进入user命令空间。如果指定了file,则进入file的命令空间
-G, --setgid gid:设置运行程序的gid
-S, --setuid uid:设置运行程序的uid
-r, --root[=directory]:设置根目录
-w, --wd[=directory]:设置工作目录
如果没有给出program,则默认执行$SHELL。

Read the rest of this entry

Rancher安装

执行以下命令安装最新版本rancher

docker run --privileged -d --restart=unless-stopped -p 8080:80 -p 4443:443 rancher/rancher

导入kubernetes集群

rancher docker运行后访问http://host:4443设置密码即可进入rancher,点击导入集群选择导入现有的kubernetes集群

Read the rest of this entry

,

背景

如果你是通过rke安装kubernetes,并且rke版本在v0.2.0之前,或者通过rancher安装,并且rancher版本在Rancher v2.0.14、v2.1.9之前,默认的证书有效期是1年,这实在是个大坑,之后的版本rancher更改为10年,证书过期后对现有的服务不影响,服务依然能正常使用,但无法部署新的服务,并且api server不能提供服务,api server如果无法使用,集群基本就废了。

通过openssl工具查看证书有效期

openssl x509 -in /etc/kubernetes/ssl/kube-apiserver.pem -noout -dates
notBefore=Jan  11 10:17:38 2019 GMT
notAfter=Jan  11 10:17:39 2020 GMT

如果当前日期在notAfter之后,那么很不幸,你的证书过期了,此时kubectl命令不可用

$ kubectl get nodes
Unable to connect to the server: x509: certificate has expired or is not yet valid

Read the rest of this entry