在 Ubuntu 22.04 LTS 上安装 Docker, Minikube 和 kubectl

2024-06-10 渥太华微生活

1713677690296.png

Kubernetes 已成为部署、管理和扩展容器化应用程序的首选容器编排平台。

在本文中,我们将完成在 Ubuntu 上设置开发环境以及使用 kubectl、Docker 和 Minikube 开始使用 Kubernetes 的过程。


1. 更新系统并安装依赖

更新Ubuntu系统,并安装相关的依赖包:

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl


2. 安装 Docker

Docker 是一个流行的平台,用于在容器中构建、运送和运行应用程序。

在 Ubuntu 上安装 Docker:

sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker

检查是否安装成功。

docker version

2024-06-10_102550.jpg


3. 安装 Minikube

Minikube 是一款工具,可让您在本地运行 Kubernetes 集群以进行开发和测试。

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

检查是否安装成功。

minikube version

minikube version: v1.33.1
commit: 5883c09216182566a63dff4c326a6fc9ed2982ff


4安装 kubectl

Kubectl 是用于与 Kubernetes 集群交互的命令行工具。

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl

下载 kubectl 后,设置 kubectl 二进制文件的可执行权限并将其移动到路径 /usr/local/bin。

chmod +x kubectl
sudo mv kubectl /usr/local/bin/

检查是否安装成功。

kubectl version

Client Version: v1.30.1
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3


5使用 Docker 驱动程序启动 Minikube

使用 Docker 驱动程序启动 Minikube 集群:

minikube start --driver=docker

检查是否安装成功。

minikube status

2024-06-10_110436.jpg

kubectl cluster-info

2024-06-10_110515.jpg

kubectl config view

2024-06-10_111029.jpg

kubectl get nodes

2024-06-10_110632.jpg

kubectl get pods

2024-06-10_111222.jpg


6. 管理 Minikube 插件 (Managing Minikube Addons)

插件是 minikube 集群的附加功能,默认情况下,在 minikube 安装期间仅启用几个插件。

要列出 minikube 的插件,请运行以下命令。

minikube addons list

2024-06-10_112757.jpg

启用 Ingress 控制器插件:

minikube addons enable ingress

2024-06-10_113345.jpg


7部署应用测试整体安装

1) 通过命令行方式部署应用:

a) 部署一个简单的 Nginx Web 服务器:

kubectl create deployment my-nginx --image=nginx:latest

检查结果

kubectl get deployment

2024-06-10_112121.jpg

kubectl get pods

2024-06-10_112200.jpg

b) 创建服务:

创建一个 NodePort 服务:

kubectl expose deployment my-nginx --port=80 --type=NodePort

检查结果:

kubectl get services

2024-06-10_113835.jpg

使用以下命令获取您的服务网址:

minikube service my-nginx

2024-06-10_114614.jpg

c) 访问网址检查结果:

curl http://192.168.49.2:31595

2024-06-10_114904.jpg

2) 通过YAML文件方式部署应用:

a) 创建部署文件:

deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx-container
        image: nginx
        ports:
        - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 80

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  ingressClassName: nginx
  rules:
  - host: domain.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: my-service
            port:
              number: 8080

b) 修改hosts文件添加域名:

找到主机名:

# find your hostname
hostname

修改/etc/hosts文件,添加这一行:

192.168.49.2    domain.com    YOURHOSTNAME

c) 使用下面命令部署pod, service和ingress:

kubectl apply -f deployment.yaml

检查结果:

kubectl get deployment
NAME            READY   UP-TO-DATE   AVAILABLE   AGE
my-deployment   1/1     1            1           49s
kubectl get pod
NAME                            READY   STATUS    RESTARTS   AGE
my-deployment-59fc6ffbf-s7lp7   1/1     Running   0          52s

kubectl get service
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP    29m
my-service   ClusterIP   10.101.193.98   <none>        8080/TCP   118s
kubectl get ingress
NAME         CLASS   HOSTS        ADDRESS        PORTS   AGE
my-ingress   nginx   domain.com   192.168.49.2   80      23m

c) 访问网址检查结果:

# 如果没有在ingress中设置host,就用IP访问 
curl http://192.168.49.2
# 如果在ingress中设置host,就用域名访问
curl http://domain.com

2024-06-10_114904.jpg


8. 管理 Minikube 集群

1) 停止 minikube

minikube stop

2) 删除 minikube

minikube delete

3) 启动 minikube

minikube start

4) 使用自定义资源(如 8 GB RM 和 4 CPU)启动 minikube

minikube config set cpus 4
minikube config set memory 8192
minikube delete
minikube start

5) 删除 docker

// check docker is installed or not
dpkg -l | grep -i docker

// remove volume , network , container and image files
sudo docker volume prune -f
sudo docker network prune -f
sudo docker container prune -f
sudo docker image prune -a

// remove docker
sudo apt purge docker
or
sudo apt remove docker

// remove dependency packages related to docker
sudo apt autoremove
sudo apt autoclean

编者注:新闻取自各大新闻媒体,新闻内容并不代表本网立场!文字和图片来自网络,版权归原作者所有。如有侵权,请速联系小编,立即删除。

1799
全部评论 (1)
Bettina 发表评论于:2025-06-09 18:08:31
Many thanks, I value this! casino en ligne You said it fantastically! casino en ligne You explained this adequately. casino en ligne fiable Regards, Lots of information. casino en ligne fiable Superb info, With thanks! casino en ligne francais Regards, An abundance of write ups! casino en ligne Appreciate it! A good amount of advice. casino en ligne Really many of amazing tips. casino en ligne fiable Nicely put, Regards! casino en ligne fiable Nicely voiced of course! ! casino en ligne
展开快速发表评论
二维码 | 渥太华微生活

科技专栏

缩略图 | axios 介绍和使用

axios 介绍和使用

2024-06-04 500