首先安装docker
docker配置文件需要加cgroup配置 否则报错
/etc/docker/daemon.json
{
"exec-opts":["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
关闭swap
swapoff -a
#修改文件
vim /etc/fstab
#注释掉
# /dev/mapper/centos-swap swap
#确认swap已经关闭 swap 都是0说明关闭
free -m
然后安装minikub 可参考官网安装方式
https://minikube.sigs.k8s.io/docs/drivers/docker/
#官方下载安装
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
#阿里镜像下载 建议使用此地址 minikube相关镜像源也会改成国内地址
curl -LO https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.23.1/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
#设置驱动器
minikube config set driver docker
#运行 注意 默认方式我尝试失败 选用下边方式成功
minikube start --driver=docker
#指定kubernetes版本方式启动成功
minikube start --image-mirror-country='cn' --force --kubernetes-version=v1.23.1
#推荐使用:指定国内镜像源 下载镜像更快一些
minikube start --image-mirror-country='cn' --force --kubernetes-version=v1.23.1 --registry-mirror="https://docker.mirrors.ustc.edu.cn"
#查看是否安装成功
minikube status
#停止minikube服务
minikube stop
测试:
minikube kubectl -- get pods -A
环境变量中添加alias 可以使用kubectl
cd ~
vim .bashrc
#添加如下内容并保存
alias kubectl="minikube kubectl --"
#生效
source .bashrc
#测试
kubectl get pods -A
常用命令
#查看插件列表
minikube addons list
#安装插件dashboard
minikube addons enable dashboard
#查看连接
minikube dashboard --url
#进入minikube虚拟机 root密码应该与宿主机root密码一致(臆测)
minikube ssh
#获取ip
minikube ip
#宿主机目录影射虚拟机(亲测不好使报错未找到解决办法)
#&,表示命令在后台运行。minikube虚拟机重启后,挂载文件夹消失,即挂载是一次性的
minikube mount /path/to/HOST_MOUNT_DIRECTORY:/path/to/VM_MOUNT_DIRECTORY &
#另一种往minikube里传文件方式 scp 会提示minikube root密码 即为宿主机root密码
scp ./file.tar root@192.168.49.2:/mnt/
#开启metrics-server 指标监控
minikube addons enable metrics-server
#查看性能指标
k top node
k top pod
#开启LoadBalancer 和Ingress 以便暴露内部服务的访问
minikube addons enable metallb
minikube addons enable ingress
由于使用虚拟机安装minikube 可以暴露内部端口服务 让宿主机可以访问 以暴露dashboard为例
#查看dashboard信息
k describe pod kubernetes-dashboard-6ddd477f4f-pw6hp -n kubernetes-dashboard
#获取tags 跟端口
Labels: k8s-app=kubernetes-dashboard
Port: 9090/TCP
#把要创建的service所有的信息放进一个yaml文件中,kubernetes-dashboard-nodeport-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard-nodeport-svc
namespace: kubernetes-dashboard
labels:
addonmanager.kubernetes.io/mode: Reconcile
k8s-app: kubernetes-dashboard
kubernetes.io/minikube-addons: dashboard
spec:
selector:
k8s-app: kubernetes-dashboard
type: NodePort
ports:
- protocol: TCP
port: 9090
targetPort: 9090
nodePort: 30000
#创建服务
kubectl apply -f kubernetes-dashboard-nodeport-svc.yaml
#查看服务
minikube service kubernetes-dashboard-b5wang --namespace=kubernetes-dashboard
#使用goprox代理宿主机即可访问
proxy tcp -p ":8939" -T tcp -P "192.168.49.2:30000"
另一种暴露端口方式:
#暴露pod到宿主机方式 宿主机端口8090 pod端口80 如不指定--address 则是127.0.0.1
kubectl port-forward temp-chart-6d4cf56db6-rsxhr 8090:80 --address 10.0.8.101
#暴露service方式 将本地端口9800映射到svc的9100端口node-exporter为服务名称,如果不指定address则默认为127.0.0.1的地址
kubectl -n monitoring port-forward svc/node-exporter 9800:9100 --address 10.0.8.101
安装过程中遇到的问题:
如果报错
[root@localhost bin]# minikube start --driver=docker
* Centos 7.9.2009 上的 minikube v1.28.0
* 根据用户配置使用 docker 驱动程序
* The "docker" driver should not be used with root privileges. If you wish to continue as root, use --force.
* If you are running minikube within a VM, consider using --driver=none:
* https://minikube.sigs.k8s.io/docs/reference/drivers/none/
X Exiting due to DRV_AS_ROOT: The "docker" driver should not be used with root privileges.
解决方式:
minikube start --force --driver=docker
解决start下载镜像慢
#先执行
minikube delete
#再执行
minikube start --force --image-mirror-country='cn'
报错:
W1110 15:13:38.345629 3653 initconfiguration.go:119] Usage of CRI endpoints without URL scheme is deprecated and can cause kubelet errors in the future. Automatically prepending scheme "unix" to the "criSocket" with value "/var/run/cri-dockerd.sock". Please update your configuration!
[WARNING FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables does not exist
[WARNING Swap]: swap is enabled; production deployments should disable swap unless testing the NodeSwap feature gate of the kubelet
[WARNING SystemVerification]: failed to parse kernel config: unable to load kernel module: "configs", output: "modprobe: FATAL: Module configs not found in directory /lib/modules/3.10.0-1160.el7.x86_64\n", err: exit status 1
[WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
error execution phase wait-control-plane: couldn't initialize a Kubernetes cluster
To see the stack trace of this error execute with --v=5 or higher
使用此方法解决 原因是版本问题 默认用kubernetes最新版本 支持不好
minikube start --image-mirror-country='cn' --force --kubernetes-version=v1.23.1
删除minikube重装
#停止服务
minikube stop
#删除程序即可
rm -rf /usr/local/bin/minikube