由于公司有运维,很多工作只用动嘴就行。最近折腾区块链,k8s也是比较重要的一环,正好把流程也跑一遍免得生疏了。
由于家里没有服务器,只用台式机win10,前面刚好装了docker和vm,就在win下搞吧
一.环境准备
打开cmd或者pwoershell(以管理员身份运行,后面没说都同理,避免出现权限问题)
- 1.choco安装, choco是win的包管理软件
@"%SystemRoot%/System32/WindowsPowerShell/v1.0/powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin"
- 2.安装minikube
Minikube是一个快速搭建单节点Kubenetes集群的工具,方便本地单机测试k8s
choco install minikube
二.minikube启动一个集群
minikube start --vm-driver=virtualbox --image-mirror-country cn --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.7.0.iso --image-repository=registry.aliyuncs.com/google_containers --memory 3072
如果出现错误,需要执行 minikube delete 删除缓存后再重新执行
可以看到,minikube start主要做了这些事:
创建了名为minikube的虚拟机,并在虚拟机中安装了Docker容器运行时。(实际就是Docker-machine)
下载了Kubeadm与Kubelet工具
通过Kubeadm部署Kubernetes集群
进行各组件间访问授权、健康检查等工作
在用户操作系统安装并配置kubectl,并将运行的集群变量设置为了minkube
这里说下,--registry-mirror 和 --image-repository请加上,因为minikube 需要下载一些工具,拉取docker镜像也比较大,不加的话,出发你的梯子很6,否则就慢慢等个几天吧。--memory 需要加上,之前默认2048M内存是报了内存不足,中断了的。
并且c盘一定要留够空间,下载的镜像有点多,到时候你进虚拟机看就知道了
三.查看集群信息
不出意外安装好了的话就可以用了,如果有错误,请确认docker是否安装,Oracle VM VirtualBox是否安装正常能使用,win版本是否不支持等等。实在搞不定的请准备一台linux主机(非虚拟机)
//命令查看当前的配置
kubectl config view
//确认Kubernetes集群节点信息
kubectl get node -o wide
先运行个面版找点成就感
minikube dashboard
有兴趣深入研究的可以看:https://www.kubernetes.org.cn/k8s
四.部署个网站试试
//测试创建个goweb项目
kubectl run goweb --image=lingtony/goweb --port=8000 --replicas=2
//查看创建的对象
kubectl get deployment
//查看pod
kubectl get pod
// 创建svc,通过Nodeport方式暴露服务
kubectl expose deployment goweb --name=gowebsvc --port=80 --target-port=8000 --type=NodePort
//获取goweb的url
minikube service gowebsvc --url
//访问,地址和端口改成自己的
http://192.168.99.103:31331/info
//或者curl
curl "$(minikube service gowebsvc --url)/info"
//上面访问的返回的hostname有时候回不一样,和kubectl get pod里面的一致,说明已经负载到2台上了
//运行控制台
minikube dashboard
//在deployment里面找到goweb,点击右边三个点,弹出菜单中点击Scale,可以动态升降运行容器达到负载
五.其他命令
//进入虚拟机
minikube ssh
//删除pod
kubectl get pod
kubectl delete pod <NAME>
kubectl get deployment
kubectl delete deployment <NAME>
kubectl get svc
kubectl delete <NAME>
//至此删除完pod
当然如果你熟悉了里面的操作和原理,各大云平台,像阿里或者腾讯就使用更简单了,都做成傻瓜式的了。比自己折腾简单很多。