背景
最近公司项目上云,需要使用 k8s、docker 。所以必须学习学习
本来有一个低配阿里云服务器,想着随便搞搞就能跑,但是是低配,低配就代表不配跑。。。
这是安装 minikube 「学习 k8s 的利器」的基本配置要求:
- 2 CPUs or more
- 2GB of free memory
- 20GB of free disk space
哦豁,买的服务器单核的确实不配。然后就只能本机 VMware 开干。
启动 minikube
我是以前就有虚拟机,然后磁盘容量不满足,所以需要调整磁盘大小,参考下面的文章
然后基本上就是安装 minikebu 了,网上随便找找,教程一大把
下载并安装 minikube
curl -LO storage.googleapis.com/minikube/re…
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube start
#如果启动失败,使用下面的命令
minikube start --force --driver=docker
minikube -h 查看 minikube 命令帮助
minikube stop 停止,启动后可通过这个命令关闭
####
minikube dashboard 启动dashboard,在k8s 中dashboard 还要自己通过helm安装,在minikube中一个命令 就可以,很方便
此时,我们想要在浏览器中访问到 minikube ,需要设置代理:
kubectl proxy --port=8001 --address='192.168.88.137' --accept-hosts='^.*' &
然后在浏览器中访问:
# 主要是:虚拟机 ip 端口 + namespace 组合访问
http://192.168.88.137:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/overview?namespace=default
kubernetes_master_address:ip/端口
namespace_name:服务名字
port_name:服务暴露的端口
比如:下面是我在本地虚拟机中新建了一个 hello-node-new:12345 的服务,然后我在浏览器中输入如下的连接,即可访问:
http://192.168.88.137:8001/api/v1/namespaces/default/services/hello-node-new:12345/proxy/
基本命令
查看所有命名空间
kubectl get ns
查看指定命名空间下的所有服务
kubectl get all -n 你的命名空间
查看指定命名空间下的所有pod
kubectl get po -n 你的namespace
查看 service
kubectl get svc
查看一个 pod 的 yaml 配置文件
kubectl get po -n kube-system(namespace) xxx(具体服务) -o yaml(输出为yaml格式)
--------------------------------------------------------
我们以上的操作在这安装了 minikube 时,因为经常更换命名空间,所以要指定 -n namespace
以下可以使用命令切换命名空间,不用每次加上 -n
git clone https://github.com/ahmetb/kubectx.git
cp kubectx/kube* /usr/local/bin/ ##把相关文件放到可执行目录里
kubens xx 切换命名空间
高级命令
进入某个 pod (类似于 docker 进入某个容器)
kubectl exec -it xxx(pod名称) -n xxx(namespace名称) /bin/bash
查看pod 在哪个节点运行:可以查看很多信息,比如在哪个node
bectl get pod -n xxx -o wide
--record:用于记录当前配置,便于回滚(要被废弃了)
kubectl apply -f xxx.yaml --record (编码最大的是当前版本):比如1,2(那么 1 是上一个版本)
查看记录(默认只保留上一个版本,展示2个‘但是第一个是’)
kubectl rollout history deployment nodejs-deployment
查看单个revision的详细信息
kubectl rollout history deployment nodejs-deployment --revision=2
回滚到具体的版本
kubectl rollout undo deployment nodejs-deployment --to-revision=1