Docker 安装和配置

卸载较旧的 Docker 版本称为 docker 或 docker-engine

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

添加docker仓库源地址(阿里云)

sudo dnf install -y yum-utils

sudo yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker(默认安装最新版本),并设置开机自启动。

sudo yum install docker-ce docker-ce-cli containerd.io -y

sudo systemctl enable docker –now

将当前用户添加到docker组,以避免每次使用Docker时都需要使用sudo

sudo groupadd docker

sudo usermod -aG docker $USER

docker 配置(可选)

sudo vi /etc/docker/daemon.json

1{
2    "registry-mirrors":[
3        "https://registry.docker-cn.com",
4        "https://hub-mirror.c.163.com",
5        "https://docker.mirrors.ustc.edu.cn"
6    ],
7    "exec-opts": ["native.cgroupdriver=systemd"],
8    "data-root": "/home/zhangcong/dev/docker"
9}

注意:

registry-mirrors:配置为国内源

data-root:修改默认存储位置;先停止服务,然后把/var/lib/docker移动到修改后的目录,再创建软链接,最后启动服务

sudo systemctl stop docker

sudo mv /var/lib/docker /home/zhangcong/dev/

sudo ln -s /home/zhangcong/dev/docker /var/lib/docker

sudo systemctl start docker

查看启动详情

docker info

k8s的安装和配置

安装 minikube:

 1# 下载地址:
 2# Intel x86_64
 3root@lenovo-e47-1no6e7d:/data/downloads/k8s# curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
 4
 5# Apple arm64
 6root@lenovo-e47-1no6e7d:/data/downloads/k8s# curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64
 7
 8# 设置文件可执行
 9root@lenovo-e47-1no6e7d:/data/downloads/k8s# chmod +x minikube-linux-arm64
10
11# 安装到bin目录
12root@lenovo-e47-1no6e7d:/data/downloads/k8s# install minikube-linux-amd64 /usr/local/bin/minikube
13# 或者:
14root@lenovo-e47-1no6e7d:/data/downloads/k8s# ln -s /data/downloads/k8s/minikube-linux-amd64 /usr/local/bin/minikube
15
16# 查看版本
17root@lenovo-e47-1no6e7d:/data/downloads/k8s# minikube version
18minikube version: v1.32.0
19commit: 8220a6eb95f0a4d75f7f2d7b14cef975f050512d

安装 kubectl

 1# 下载 kubectl
 2# 后面启动minikube时,指定了k8s的版本参数为v1.23.8;所以建议也下载v1.23.8的kubectl
 3root@lenovo-e47-1no6e7d:/data/downloads/k8s# curl -LO "https://dl.k8s.io/release/v1.23.8/bin/linux/amd64/kubectl"
 4# 或者下载最新的kubectl,但是不知道会不会有什么问题
 5root@lenovo-e47-1no6e7d:/data/downloads/k8s# curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
 6
 7# 设置文件可执行
 8root@lenovo-e47-1no6e7d:/data/downloads/k8s# chmod +x kubectl
 9
10# 安装到bin目录
11root@lenovo-e47-1no6e7d:/data/downloads/k8s# ln -s /data/downloads/k8s/kubectl /usr/local/bin/kubectl
12
13# 查看版本
14root@lenovo-e47-1no6e7d:/data/downloads/k8s# kubectl version --client
15Client Version: v1.28.3
16Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3

使用 minikube 创建并运行 k8s

注意:此处要以普通用户运行(还需要配置docker用户组;上面的docker安装中有具体操作)否则报错:Exiting due to DRV_AS_ROOT: The “docker” driver should not be used with root privileges.

 1[zhangcong@master dev]$ minikube start --driver='docker' --kubernetes-version=v1.23.8 --image-mirror-country='cn'
 2* Almalinux 9.3 上的 minikube v1.32.0
 3* 根据用户配置使用 docker 驱动程序
 4* 正在使用镜像存储库 registry.cn-hangzhou.aliyuncs.com/google_containers
 5* 使用具有 root 权限的 Docker 驱动程序
 6* 正在集群 minikube 中启动控制平面节点 minikube
 7* 正在拉取基础镜像 ...
 8    > index.docker.io/kicbase/sta...:  453.90 MiB / 453.90 MiB  100.00% 4.50 Mi
 9! minikube was unable to download registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.42, but successfully downloaded docker.io/kicbase/stable:v0.0.42 as a fallback image
10* Creating docker container (CPUs=2, Memory=3800MB) ...
11    > kubectl.sha256:  64 B / 64 B [-------------------------] 100.00% ? p/s 0s
12    > kubeadm.sha256:  64 B / 64 B [-------------------------] 100.00% ? p/s 0s
13    > kubelet:  118.78 MiB / 118.78 MiB [------------] 100.00% 6.45 MiB p/s 19s                                                                                                          
14  - 正在生成证书和密钥...
15  - 正在启动控制平面...
16  - 配置 RBAC 规则 ...
17  - 正在使用镜像 registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
18* 正在验证 Kubernetes 组件...
19* 启用插件: storage-provisioner, default-storageclass
20
21! /usr/local/bin/kubectl 的版本为 1.29.0,可能与 Kubernetes 1.23.8 不兼容。
22  - 想要使用 kubectl v1.23.8 吗?尝试使用 'minikube kubectl -- get pods -A' 命令
23* 完成!kubectl 现在已配置,默认使用"minikube"集群和"default"命名空间

image-mirror-country 为指定使用国内源:registry.cn-hangzhou.aliyuncs.com/google_containers

kubernetes-version 指定部署的版本(最新版兼容性坑比较多,所以选择低版本)

如果安装还有报错,请删除已有的k8s:

1zhangcong@lenovo-e47-1no6e7d:~$ minikube delete
2# 删除所有本地k8s和配置文件
3zhangcong@lenovo-e47-1no6e7d:~$ minikube delete --all

再重新执行上面的安装操作。

其他操作:

 1# 启动k8s(前提是前面已经安装了k8s;否则就直接安装最新版本的k8s,然后启动)
 2zhangcong@lenovo-e47-1no6e7d:~$ minikube start
 3
 4# 进入到K8S的机器中
 5zhangcong@lenovo-e47-1no6e7d:~$ minikube ssh
 6
 7# 查看K8S状态
 8zhangcong@lenovo-e47-1no6e7d:~$ minikube status
 9
10# 停止集群
11zhangcong@lenovo-e47-1no6e7d:~$ minikube stop

访问 kubernetes-dashboard

1zhangcong@lenovo-e47-1no6e7d:~$ minikube dashboard --url
2🤔  正在验证 dashboard 运行情况 ...
3🚀  正在启动代理...
4🤔  正在验证 proxy 运行状况 ...
5http://127.0.0.1:37351/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

此时,可以在本机浏览器中输入上面的地址访问dashboard。

为了能在其他客户机访问dashboard,需要在minikube的Linux上添加外部访问代理:

1zhangcong@lenovo-e47-1no6e7d:~$ kubectl proxy --address='0.0.0.0' --port=8000 --accept-hosts='^*$'
2Starting to serve on [::]:8000

此处,address、port均为minikube所在机器的IP和端口。

设置后,在其他客户机可以通过浏览器 http://192.168.0.91:8000/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ 访问。

注意:minikube dashboard 和 kubectl proxy 都会占用一个终端连接,如果要后台运行,使用nohup …… &

查看集群状态(如下表示启动成功):

 1zhangcong@lenovo-e47-1no6e7d:~$ kubectl get po -A
 2NAMESPACE              NAME                                         READY   STATUS    RESTARTS        AGE
 3kube-system            coredns-65c54cc984-lk9z9                     1/1     Running   2 (4h37m ago)   24h
 4kube-system            etcd-minikube                                1/1     Running   2 (4h37m ago)   24h
 5kube-system            kube-apiserver-minikube                      1/1     Running   2 (4h37m ago)   24h
 6kube-system            kube-controller-manager-minikube             1/1     Running   2 (4h37m ago)   24h
 7kube-system            kube-proxy-hldmb                             1/1     Running   2 (4h37m ago)   24h
 8kube-system            kube-scheduler-minikube                      1/1     Running   2 (4h37m ago)   24h
 9kube-system            storage-provisioner                          1/1     Running   5 (4h8m ago)    24h
10kubernetes-dashboard   dashboard-metrics-scraper-7db978b848-6njgz   1/1     Running   0               4h8m
11kubernetes-dashboard   kubernetes-dashboard-6f4c897964-pp4rk        1/1     Running   0               4h8m

查看minikube的 ip

1zhangcong@lenovo-e47-1no6e7d:~$ minikube ip
2192.168.49.2