Admin
使用教程,搭建基于Linux + VirtuakBox
的集群,并启动Dashboard
。
这里我选择 docker
模式(docker in docker?)
首先将普通账户加入用户组 docker
sudo usermod -aG docker $USER && newgrp docker
进一步,修改 sock
文件权限,否则后续部分命令可能无法访问 docker.sock
错误
sudo chmod a+rw /var/run/docker.sock
sudo systemctl restart docker
docker info
普通账户运行命令,创建集群:
minikube start \
--driver=docker \
--cpus 4 \
--memory 16384 \
--insecure-registry 192.168.1.111:4999
创建成功后,会在宿主机上创建一个容器 minikube
,并在容器内运行单节点K8S
另外,还会将宿主机的kubectl的配置文件,配置到这个K8S的API Server
启动 dashboard
网页,会省去很多命令操作
minikube dashboard
根据文档中,部署测试服务hello-minikube
我在这里的NodePort
类型服务测试能访问,但是LoadBalancer
类型服务测试不能访问,先不管
终端执行如下命令,并保持运行:
minikube tunnel
进入Dashboard
- 右上角加号
创建Deployment
点击Deploy
开始部署
点击左侧的发现和负载均衡
- Services
显示所有服务,稍等片刻等待nginx
行前的图标变成绿色
上述操作等效命令:
kubectl create deployment nginx --image=nginx:latest
kubectl create service nodeport nginx --tcp 8082:80
这个虚拟网络,需要 tunnel
保持运行,才能访问:
minikube tunnel
点击nginx
行的外部Endpoints
列中的地址,即可通过浏览器访问部署的网页
可以使用http://节点IP:31747
访问(不建议长用)
上述两种的访问能力都各有优缺点,参考使用端口转发来访问集群中的应用,将服务转发到宿主机
物理网卡,提供集群外访问
执行命令,保持运行:
kubectl port-forward --address 192.168.199.2,127.0.0.1 service/nginx 8082:8082
address
,默认只有127.0.0.1物理网卡IP
这样,就能通过 宿主机IP:8082
访问服务了
参考 文档 启用Ingress
minikube addons enable ingress
完成需要一段时间,可能会镜像失败,如果失败 minikube addons disable ingress
后重新来过,使用命令查看状态:
[wood@company ~]$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system ingress-nginx-admission-create-twdjw 0/1 Completed 0 46h
kube-system ingress-nginx-admission-patch-l464s 0/1 Completed 0 46h
kube-system ingress-nginx-controller-7bb4c67d67-n6njx 1/1 Running 3 46h
编写配置 example-ingress.yaml
:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /foo
backend:
serviceName: nginx
servicePort: 8082
- path: /bar
backend:
serviceName: nginx
servicePort: 8082
使用命令kubectl apply -f example-ingress.yaml
,创建 Ingress
查看创建的Ingress:
[wood@company ~]$ kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
example-ingress <none> * 192.168.99.102 80 2m39s
从测试机
,访问 http://192.168.99.102/foo
或者 http://192.168.99.102/bar
都能访问到这个服务
/foo
和 /bar
是为了以后多个服务,就能这样一起转发打开Virtualbox,在虚拟机列表应该有个minikube
,双击打开
在终端输入root
以登录,不需要密码
使用命令ifconfig
查看其ip
节点IP
一般是eth1
那个
点击界面左侧,集群
- Nodes
,从列表找到节点,点击名称打开:
节点信息里,资源信息
- 地址
即可看到节点IP