因为dockerhub的限制,这个工作还是有些麻烦的,在这里把过程分享给大家。
由于是本地部署并且用于学习和实验,所以使用minikube
1.安装docker
最新版本的docker方法见链接:
https://docs.docker.com/desktop/setup/install/linux/ubuntu/
我使用了比较简单的方式安装,安装的是docker的稳定版本:
sudo apt-get update sudo apt install -y -qq docker.io sudo usermod -aG docker $USER && newgrp docker sudo systemctl start docker && sudo systemctl enable docker |
touch /etc/docker/daemon.json文件
并在其中加入:
{ "registry-mirrors": [ "https://ccr.ccs.tencentyun.com", "https://docker.m.daocloud.io" ] } |
这是因为dockerhub的image访问不了了,所以只能从国内的镜像站拉,这里要注意每个镜像站包含的镜像是不一样的。
腾讯云的镜像站主要为了验证docker是否安装成功
下面的镜像站(
https://docker.m.daocloud.io)主要为了拉mysql的image,如果未来用不了了请大家自行在网上找。
daemon.json修改好以后加载并重启docker:
sudo systemctl daemon-reload sudo systemctl restart docker |
用docker info 命令查看镜像站是否保存在Registry Mirrors:下面
之后用docker run hello-world查看docker是否正常
2.安装kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && chmod +x kubectl && sudo mv kubectl /usr/local/bin/ |
这一步非常简单,安装完成后用kubectl --help查看是否安装正确
3.安装minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.46 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.46 kicbase/stable:v0.0.46 minikube start --base-image="kicbase/stable:v0.0.46" |
这里注意minikube没有办法自动从docker hub上拉 kicbase:v0.0.46这个image,所以需要手动到阿里云上拉
4.安装mysql
首先还是手动拉mysql的镜像
docker pull mysql:8.0 minikube image load mysql:8.0 |
这里要注意需要手动讲镜像导入到minikube中,因为minikube并不会直接使用本地docker环境的镜像,他的策略都是从远程去拉,那么肯定会报错,pod将启动不起来
之后创建一个简单的mysql.yaml文件,这里只是一个范例,可以使用自己的:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name:mysql-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: mysql-deployment spec: replicas: 1 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:8.0 # 或者使用 mysql:5.7 等其他版本 env: - name: MYSQL_ROOT_PASSWORD value: rootpassword # 设置 root 用户的密码 ports: - containerPort: 3306 volumeMounts: - name: mysql-storage mountPath: /var/lib/mysql volumes: - name: mysql-storage persistentVolumeClaim: claimName: mysql-pvc --- apiVersion: v1 kind: Service metadata: name: mysql-service spec: type: NodePort # 或者使用 ClusterIP,根据需要选择 selector: app: mysql ports: - port: 3306 targetPort: 3306 nodePort: 30002 # 自定义 NodePort,范围是 30000-32767 |
然后就是我们比较熟悉的命令加载这个文件:
kubectl apply -f mysql.yaml
使用kubectl get pods 命令查看pod的状态
NAME READY STATUS RESTARTS AGE
mysql-deployment-744bd8fb66-t8bzr 1/1 Running 0 43m