- 环境准备
我是在本地windows系统中安装了vmware,vmware中安装了centos7虚拟机,虚拟机中安装了docker环境。docker版本为 Docker version 23.0.1
docker 安装链接:https://docs.docker.com/engine/install/centos/
- 安装kubectl
curl -Lo kubectl "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \
&& chmod +x kubectl && sudo mv kubectl /usr/local/bin/
- 安装minikube
# 阿里云镜像
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.23.1/minikube-linux-amd64 \
&& chmod +x minikube && sudo mv minikube /usr/local/bin/
或者
#官方二进制包下载
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
- 创建用户
需要创建一个用户,然后将其添加到 docker 组,不然minikube启动会报错:Exiting due to DRV_AS_ROOT: The “docker” driver should not be used with root privileges.
[root@localhost ~]# grep docker /etc/group
docker:x:994:
[root@localhost ~]# adduser -g 994 -c "Docker" docker
[root@localhost ~]# id docker
uid=1000(docker) gid=994(docker) groups=994(docker)
- 启动minikube
将用户切换到docker: su - docker
minikube start \
--image-mirror-country=cn --registry-mirror="https://registry.docker-cn.com,https://docker.mirrors.ustc.edu.cn" \
--insecure-registry="registry.netkiller.cn"
[docker@localhost ~]$ minikube start \
> --image-mirror-country=cn --registry-mirror="https://registry.docker-cn.com,https://docker.mirrors.ustc.edu.cn" \
> --insecure-registry="registry.netkiller.cn"
* Centos 7.9.2009 上的 minikube v1.23.1
* minikube 1.28.0 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.28.0
* To disable this notice, run: 'minikube config set WantUpdateNotification false'
* 自动选择 docker 驱动
* 正在使用镜像存储库 registry.cn-hangzhou.aliyuncs.com/google_containers
* Starting control plane node minikube in cluster minikube
* Pulling base image ...
! The image 'registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.8.4' was not found; unable to add it to cache.
> registry.cn-hangzhou.aliyun...: 355.40 MiB / 355.40 MiB 100.00% 1.24 MiB
* Creating docker container (CPUs=2, Memory=2200MB) ...
* 正在 Docker 20.10.8 中准备 Kubernetes v1.22.1…
X Unable to load cached images: loading cached images: stat /home/docker/.minikube/cache/images/registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns_v1.8.4: no such file or directory
> kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
> kubelet.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
> kubeadm.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
> kubeadm: 43.71 MiB / 43.71 MiB [-------------] 100.00% 825.10 KiB p/s 54s
> kubectl: 44.73 MiB / 44.73 MiB [------------] 100.00% 691.02 KiB p/s 1m6s
> kubelet: 146.25 MiB / 146.25 MiB [-----------] 100.00% 1.40 MiB p/s 1m45s
- Generating certificates and keys ...
- Booting up control plane ...
- Configuring RBAC rules ...
* Verifying Kubernetes components...
- Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
* Enabled addons: storage-provisioner, default-storageclass
! /usr/local/bin/kubectl is version 1.26.2, which may have incompatibilites with Kubernetes 1.22.1.
- Want kubectl v1.22.1? Try 'minikube kubectl -- get pods -A'
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
- 启动dashboard
minikube dashboard
启动成功后如下图:
[docker@localhost ~]$ minikube dashboard
* 正在开启 dashboard ...
- Using image registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper:v1.0.7
- Using image registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard:v2.3.1
* 正在验证 dashboard 运行情况 ...
* Launching proxy ...
* 正在验证 proxy 运行状况 ...
* Opening http://127.0.0.1:33470/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
http://127.0.0.1:33470/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
- 设置访问方式
因为我是本地Windows电脑装了vmware workstation, 在vmware上装的centos7虚拟机,centos7中安装了docker环境,默认是无法从windows上访问。所以我想设置在我windows系统里访问这个dashboard。
nohup kubectl proxy --port=33470 --address='192.168.136.128' --accept-hosts='^.*' > ./nohup.out &
ps:33470 端口为dashboard开启后的端口,address为centos7虚拟机地址。如果centos7的防火墙是开启状态,请将此端口配置,开启。
firewall-cmd --zone=public --add-port=33470/tcp --permanent
firewall-cmd --reload
- 访问dashboard
http://192.168.136.128:33470/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/overview?namespace=default
- 部署应用(nginx)
创建deployment:
kubectl create deployment hello-world --image=nginx:1.7.9 --port=80
查看deployment、service,pod
现在宿主机中访问这个服务,需要添加端口转发。
kubectl port-forward --address 0.0.0.0 service/hello-wrold 8080:80
这样虚拟机中的8080端口映射到minikube中的80端口,如果虚拟机设置了防火墙,则添加8080的端口规则,这样在宿主机中就可以通过虚拟机的ip和端口访问了。