Centos8上搭建Docker环境以及minikube
本次分享一下如何在Centos8
上面使用Docker
,以及Docker的相关基本操作,以及使用minikube
搭建一个简单的K8s集群
。
废话不多说现在开始
1. 基础配置
这是我Centos8
虚拟机配置,因为运行minikube
至少需要2G内存所以这里最少要给4GB
的内存硬盘大小最好不要少于20GB。
用户最少有一个普通用户,因为运行minikube
是不允许root
用户运行的。
2. 配置yum源并安装docker
1. 配置yum源
首先要配置yum源
cd /etc/yum.repos.d/
mv * CentOS8.repo.bak
curl -o http://mirrors.aliyun.com/repo/Centos-8.repo
yum makecache
yum update
yum upgrade
2. 安装docker
安装docker所需依赖:
yum install -y yum-utils device-mapper-persistent-data lvm2
添加阿里云的仓库:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker:
yum -y install docker-ce
启动Docker并设置开机自启
systemctl start docker
systemctl enable docker
配置Docker仓库镜像源
[gzh@gzh-docker ~]$ cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}
没有daemon.json
的创建一个
重启服务查看是否配置成功
[gzh@gzh-docker ~]$ systemctl restart docker
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
重新启动“docker.service”需要认证。
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ====
[gzh@gzh-docker ~]$ docker info
Client: Docker Engine - Community
......
Registry Mirrors:
https://docker.mirrors.ustc.edu.cn/
Live Restore Enabled: false
3. Docker镜像操作
3.1 拉取base镜像
能称作base镜像的通常都是各种Linux发行版的Docker镜像,比如Ubuntu、Debian、CentOS等
拉取镜像之前先搜索你想要的镜像名称,然后根据需求进行拉取,这里以centos为例
[root@gzh-docker ~]# docker search centos
NAME DESCRIPTION STARS OFFICIAL
centos DEPRECATED; The official build of CentOS. 7713 [OK]
kasmweb/centos-7-desktop CentOS 7 desktop for Kasm Workspaces 43
bitnami/centos-base-buildpack Centos base compilation image 0
dokken/centos-7 CentOS 7 image for kitchen-dokken 6
dokken/centos-8 CentOS 8 image for kitchen-
...
docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
那这些base镜像是干什么呢?
Linux操作系统由内核空间和用户空间组成,对于Base镜像来说,底层直接用Host的kernel,自己只需要提供rootfs就可以了。也就是说这些基础镜像都有自己的文件系统,当他们运行的时候都会运行在一个内核上面,这也是为什么base镜像小的原因。
3.安装minikube并配置kubectl 命令自动补全
1.安装minikube
下载minikub
e命令行工具minikube-linux-amd64,重命名minikube 赋予执行权限并且移动到/usr/local/bin/
目录下
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.18.1/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
执行minikube初始化,其它参数使用默认值
我现在使用的是普通用户,如果使用root用户启动minikube的话会报错:
[root@gzh-docker gzh]# minikube start --driver=docker
😄 Centos 8.4.2105 上的 minikube v1.18.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 驱动程序
🛑 The "docker" driver should not be used with root privileges.
💡 If you are running minikube within a VM, consider using --driver=none:
📘 https://minikube.sigs.k8s.io/docs/reference/drivers/none/
❌ Exiting due to DRV_AS_ROOT: The "docker" driver should not be used with root privileges.
所以我们要切换到普通用户并且将我们的普通用户添加到docker组
里面
sudo usermod -aG docker $USER && newgrp docker
启动minikube
[gzh@gzh-docker ~]$ minikube start --driver=docker
😄 Centos 8.4.2105 上的 minikube v1.18.1
✨ 根据现有的配置文件使用 docker 驱动程序
👍 Starting control plane node minikube in cluster minikube
🔄 Restarting existing docker container for "minikube" ...
🎉 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 20.10.3 中准备 Kubernetes v1.23.8…
🔎 Verifying Kubernetes components...
▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v4 (global image repository)
🌟 Enabled addons: default-storageclass, storage-provisioner
❗ /usr/bin/kubectl is version 1.28.2, which may have incompatibilites with Kubernetes 1.23.8.
▪ Want kubectl v1.23.8? Try 'minikube kubectl -- get pods -A'
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
其他参数:
--image-mirror-country cn 将缺省利用 registry.cn-hangzhou.aliyuncs.com/google_containers 作为安装Kubernetes的容器镜像仓库 (阿里云版本可选)
--iso-url=*** 利用阿里云的镜像地址下载相应的 .iso 文件 (阿里云版本可选)
--registry-mirror=***为了拉取Docker Hub镜像,需要为 Docker daemon 配置镜像加速,参考阿里云镜像服务
--cpus=2: 为minikube虚拟机分配CPU核数,默认2个
--memory=2048mb: 为minikube虚拟机分配内存数,默认2G
--kubernetes-version=***: minikube 虚拟机将使用的 kubernetes 版本
文件会下载到.kube
和.minikube
两个文件夹里面
[gzh@gzh-docker ~]$ ls -l .kube/
总用量 4
drwxr-x---. 4 gzh gzh 35 1月 30 00:19 cache
-rw-------. 1 gzh gzh 818 1月 31 01:46 config
[gzh@gzh-docker ~]$ ls -l .minikube/
总用量 32
drwxrwxr-x. 2 gzh gzh 6 1月 30 00:07 addons
drwxrwxr-x. 5 gzh gzh 44 1月 30 00:11 cache
-rw-r--r--. 1 gzh gzh 1111 1月 30 00:15 ca.crt
-rw-------. 1 gzh gzh 1675 1月 30 00:15 ca.key
-rwxrwxr-x. 1 gzh gzh 1070 1月 31 01:46 ca.pem
-rwxrwxr-x. 1 gzh gzh 1115 1月 31 01:46 cert.pem
drwxrwxr-x. 2 gzh gzh 69 1月 30 00:10 certs
drwxrwxr-x. 2 gzh gzh 25 1月 30 00:14 config
drwxrwxr-x. 2 gzh gzh 6 1月 30 00:07 files
-rwxrwxr-x. 1 gzh gzh 1675 1月 31 01:46 key.pem
-rw-r--r--. 1 gzh gzh 29 1月 31 01:46 last_update_check
drwxr-xr-x. 2 gzh gzh 45 1月 30 00:14 logs
-rw-------. 1 gzh gzh 0 1月 30 00:10 machine_client.lock
drwxrwxr-x. 3 gzh gzh 62 1月 30 00:14 machines
drwxrwxr-x. 3 gzh gzh 22 1月 30 00:14 profiles
-rw-r--r--. 1 gzh gzh 1119 1月 30 00:15 proxy-client-ca.crt
-rw-------. 1 gzh gzh 1675 1月 30 00:15 proxy-client-ca.key
2.安装kubectl
看启动提示里面有
❗ /usr/bin/kubectl is version 1.28.2, which may have incompatibilites with Kubernetes 1.23.8.
▪ Want kubectl v1.23.8? Try 'minikube kubectl -- get pods -A'
看提示说kubectl
没有安装,可以用 minikube kubectl --
来替代
我们来安装kubectl
添加kubernetes阿里源
[gzh@gzh-docker ~]$ sudo cat /etc/yum.repos.d/Centos-8.repo
[sudo] gzh 的密码:
# CentOS-Base.repo
......
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
安装kubectl
sudo yum -y install kubectl
3.将kubectl
替换掉minikube kubectl --
命令
[gzh@gzh-docker ~]$ cat .bashrc
# .bashrc
......
alias kubectl="minikube kubectl --"
[gzh@gzh-docker ~]$ source ~/.bashrc
查看所有pod
[gzh@gzh-docker ~]$ kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-65c54cc984-znk2d 1/1 Running 1 (17m ago) 25h
kube-system etcd-minikube 1/1 Running 1 (17m ago) 25h
kube-system kube-apiserver-minikube 1/1 Running 1 (17m ago) 25h
kube-system kube-controller-manager-minikube 1/1 Running 1 (17m ago) 25h
kube-system kube-proxy-84xts 1/1 Running 1 (17m ago) 25h
kube-system kube-scheduler-minikube 1/1 Running 1 (17m ago) 25h
kube-system storage-provisioner 1/1 Running 3 (17m ago) 25h
以上等价于
[gzh@gzh-docker ~]$ minikube kubectl -- get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-65c54cc984-znk2d 1/1 Running 1 (17m ago) 25h
kube-system etcd-minikube 1/1 Running 1 (17m ago) 25h
kube-system kube-apiserver-minikube 1/1 Running 1 (17m ago) 25h
kube-system kube-controller-manager-minikube 1/1 Running 1 (17m ago) 25h
kube-system kube-proxy-84xts 1/1 Running 1 (17m ago) 25h
kube-system kube-scheduler-minikube 1/1 Running 1 (17m ago) 25h
kube-system storage-provisioner 1/1 Running 3 (16m ago) 25h
4.设置kubectl 命令自动补全
安装 bash-completion:
yum install -y bash-completion
执行 source 命令:
source /usr/share/bash-completion/bash_completion
如果想让系统中的所有用户都能拥有命令补全的功能,则执行如下命令:
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
如果只需要当前用户拥有命令自动补全功能,则执行如下命令:
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc
验证自动补全的效果(双击 Tab 键):
[gzh@gzh-docker ~]$ kubectl
alpha autoscale create exec logs rollout version
annotate certificate debug explain options run wait
api-resources cluster-info delete expose patch scale
api-versions completion describe get plugin set
apply config diff help port-forward taint
attach cordon drain kustomize proxy top
auth cp edit label replace uncordon
到这里安装基本结束了,就可以开心的完Docker了。如果安装配置过程中有什么问题可以在文章下面评论😀
- 感谢你赐予我前进的力量