2.本地集群管理环境搭建
安装好docker之后我发现一两个应用还好,如果应用一多,一个个管理起来就很麻烦,不如直接用kubernetes来管理集群
kubernetes将集群里面的机器称为node,可以是一个docker容器,也可以是一台物理机
docker for windows edge版本已经集成了kubenetes,目前只支持lxc
默认不开启,可以在设置面板的kubenetes中可以开启该功能
开启后会在Hyper-V虚拟机的MobyLinuxVM中安装kubernetes本机集群,包括 kubelet kubeadm
kubenetes自身会有一些集群系统容器运行在docker上,这些容器的镜像国内可能获取失败
打开powershell查看:
kubectl get pods -n=kube-system
在kubectl已经集成到docker for windows中,可以直接运行,是用来管理集群的命令行客户端
在kubernetes中部署的容器以pod的形式存在,默认get pods是不列出系统pod,需要添加-n来指定命名空间获取
PS G:\kubenetes> kubectl get pods -n=kube-system NAME READY STATUS RESTARTS AGE etcd-docker-for-desktop 1/1 Running 1 1h kube-apiserver-docker-for-desktop 1/1 Running 1 1h kube-controller-manager-docker-for-desktop 1/1 Running 1 1h kube-dns-86f4d74b45-ktxqw 3/3 Running 0 1h kube-proxy-qdxrg 1/1 Running 0 1h kube-scheduler-docker-for-desktop 1/1 Running 1 1h kubernetes-dashboard-7d5dcdb6d9-fqs8t 1/1 Running 0 2m
可以看到我这里全是Running,kube-dns重试了3次,我这里原因是拉取镜像失败,开启vpn后就获取到了
命令行管理工具毕竟难用,这里部署安装kubernetes-dashboard来进行图形管理
kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml kubectl proxy http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
直接跳过配置
kubernetes通过yml配置文件来声明服务,创建后会自动部署到node上,如果发现访问不了,那就是没部署成功
查看日志
kubectl logs pods/PODID -n=kube-system
容器输出
kubectl describe pods/kubernetes-dashboard-7d5dcdb6d9-fqs8t --all-namespaces
kubernetes本机集群并没有安装在docker中,所以想要修改某些配置需要修改MobyLinuxVM中的文件
可以通过docker容器来映射容器主机路径来修改这些文件
docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host alpine /bin/sh
以上命令将容器主机根目录映射到/host,并且拥有host权限,docker for windows运行在root下,所以拥有root权限
如果需要修改kubenetes启动参数
vi /host/var/lib/kubeadm/manifests/*.yaml