桓楠百科网

编程知识、经典语录与百科知识分享平台

本地搭建简单的Kubernate实验环境并安装数据库

因为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
sudo install minikube-linux-amd64 /usr/local/bin/minikube

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

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言