使用Minikube部署单节点k8s集群

他是运行kubernetes集群最简单、最快捷的途径 ,对于测试kubernets和本地开发应用非常有用。

官网:https://minikube.sigs.k8s.io/docs/

centos:CentOS Linux release 8.5.2111

必须要开启虚拟化

在这里插入图片描述

1、安装minikube

# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
setenforce 0

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

2、下载安装 kubectl

# 安装最新版:
sudo curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
sudo chmod +x kubectl
sudo mv kubectl /usr/local/bin/

# 浏览器获取最新版本:
https://storage.googleapis.com/kubernetes-release/release/stable.txt
https://storage.googleapis.com/kubernetes-release/release/v1.31.0/bin/linux/amd64/kubectl

3、安装依赖

minikube需要VirtualBox环境

下载地址:https://download.virtualbox.org/virtualbox/7.1.4/

# rpm安装方式:
wget https://download.virtualbox.org/virtualbox/7.1.4/VirtualBox-7.1-7.1.4_165100_el8-1.x86_64.rpm
sudo rpm -ivh VirtualBox-7.1-7.1.4_165100_el8-1.x86_64.rpm


# virtualbox源安装
sudo curl -o /etc/yum.repos.d/virtualbox.repo https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo
sudo dnf clean all
sudo dnf makecache
sudo dnf install VirtualBox-7.1
VBoxManage --version

# 若缺依赖:
sudo dnf install epel-release
sudo dnf install libxcb-cursor


# 安装docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker && sudo systemctl enable docker
sudo useradd -m dockeruser && sudo passwd dockeruser
sudo usermod -aG docker dockeruser && newgrp docker
su - dockeruser

4、启动minikube

# 启动一个新的 Minikube 集群,并使用 VirtualBox 创建一个虚拟机,在虚拟机中部署 Kubernetes 环境,并设置 Docker 作为容器运行时,而不是默认的 containerd。
su - dockeruser
minikube start --driver=virtualbox --container-runtime=docker

# 查看状态
minikube status

# 遇到报错:
sudo systemctl status vboxdrv
[sudo] dockeruser 的密码:
dockeruser 不在 sudoers 文件中。此事将被报告。
# 解决:
在 CentOS 8 中,wheel组的成员可以使用sudo执行命令
usermod -aG wheel dockeruser && newgrp wheel

# 遇到报错:
VBoxManage: error: Failed to create the VirtualBox object!
VBoxManage: error: Code NS_ERROR_FAILURE (0x80004005) - Operation failed (extended info not available)
VBoxManage: error: Most likely, the VirtualBox COM server is not running or failed to start.
# 解决:
reboot

在这里插入图片描述

5、启动minikube dashborad

sudo yum install xdg-utils
# 启动Minikube的仪表板
su - dockeruser
minikube dashboard  # 此命令会显示一个 URL
# 启用metrics-server插件
minikube addons enable metrics-server
minikube dashboard  # 此命令会显示一个 URL

# 如果 Kubernetes 节点无法直接从 Docker Hub 拉取镜像,您可以手动拉取镜像并将其加载到 Minikube 中。
docker pull kubernetesui/metrics-scraper:v1.0.8
docker pull docker.io/kubernetesui/dashboard:v2.7.0
minikube image load kubernetesui/metrics-scraper:v1.0.8
minikube image load kubernetesui/dashboard:v2.7.0
# 重新尝试启动 dashboard
kubectl -n kubernetes-dashboard rollout restart deployment kubernetes-dashboard
# 确认镜像是否在 Minikube 环境中
minikube ssh
docker images
# 强制使用本地镜像
kubectl -n kubernetes-dashboard get deployment kubernetes-dashboard -o yaml > dashboard-deployment.yaml
kubectl -n kubernetes-dashboard get deployment dashboard-metrics-scraper -o yaml > dashboard-metrics-scraper.yaml
修改文件,内容在最后
# 保存并应用配置文件
kubectl apply -f dashboard-deployment.yaml
kubectl apply -f dashboard-metrics-scraper.yaml
kubectl get pods -n kubernetes-dashboard   # 查看状态
minikube dashboard   # 会显示一个url,因为是纯命令行方式,所有会提示:“因HOST_BROWSER错误而退出:打开浏览器失败:exit status。”

# 将Kubernetes API代理到指定端口和地址,允许任何主机访问
nohup  kubectl proxy --port=10888 --address='192.168.10.12' --accept-hosts='^.*' > ./nohup.out &

浏览器登录:http://192.168.10.12:10888/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/workloads?namespace=default

在这里插入图片描述

6、测试小案例

# 部署:
kubectl create deployment hello-minikube --image=registry.aliyuncs.com/google_containers/echoserver:1.10
# 将该pod 暴露他的端口为8080 
kubectl expose deployment hello-minikube --type=NodePort --port=8080

# 查看状态:kubectl get pod

# 查看url:
minikube service hello-minikube --url

# 将端口转发到本机的端口,这样供给外界访问
kubectl port-forward --address 0.0.0.0 service/hello-minikube  7080:8080

浏览器访问:192.168.10.12:7080

在这里插入图片描述

7、手动创建 YAML 文件

dashboard-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
  labels:
    k8s-app: kubernetes-dashboard
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: kubernetes-dashboard
  template:
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
    spec:
      containers:
      - name: kubernetes-dashboard
        image: docker.io/kubernetesui/dashboard:v2.7.0
        ports:
        - containerPort: 9090
        args:
        - --namespace=kubernetes-dashboard
        - --enable-skip-login
        - --disable-settings-authorizer
        livenessProbe:
          httpGet:
            path: /
            port: 9090
          initialDelaySeconds: 30
          timeoutSeconds: 30
        volumeMounts:
        - mountPath: /tmp
          name: tmp-volume
      volumes:
      - name: tmp-volume
        emptyDir: {}
      serviceAccountName: kubernetes-dashboard
      nodeSelector:
        kubernetes.io/os: linux
      tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule

dashboard-metrics-scraper

apiVersion: apps/v1
kind: Deployment
metadata:
  name: dashboard-metrics-scraper
  namespace: kubernetes-dashboard
  labels:
    k8s-app: dashboard-metrics-scraper
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: dashboard-metrics-scraper
  template:
    metadata:
      labels:
        k8s-app: dashboard-metrics-scraper
    spec:
      containers:
        - name: dashboard-metrics-scraper
          image: docker.io/kubernetesui/metrics-scraper:v1.0.8
          ports:
            - containerPort: 8000
          resources:
            limits:
              cpu: 100m
              memory: 100Mi
            requests:
              cpu: 50m
              memory: 50Mi
          livenessProbe:
            httpGet:
              path: /metrics
              port: 8000
            initialDelaySeconds: 30
            timeoutSeconds: 5
          volumeMounts:
            - mountPath: /tmp
              name: tmp-volume
      volumes:
        - name: tmp-volume
          emptyDir: {}
      nodeSelector:
        kubernetes.io/os: linux
      tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule

===

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值