1、部署环境

  • • 华为云 ECS

  • • 操作系统: Linux CentOS 7.9 64 位

  • • CPU & 内存:2 核(vCPU) 4 GiB

  • • 硬盘:需要 20G

  • • 网络:需要网络,要下载、访问

  • • 容器:需要先安装 Docker, Docker 版本:24.0.4

  • • Kubernetes 版本:1.23.8

2.安装 docker 并启动

(1)移除以前 docker 相关包
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
(2)配置 yum 源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(3)安装 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io

也可以指定某个版本进行安装,例如:

# 这只是个例子
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6
(4)启动
systemctl enable docker --now
(5)配置加速

这里额外添加了 docker 的生产环境核心配置 cgroup

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://lkb2w75n.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

其中,registry-mirrors 可以换成自己的加速地址

6944556a8846bf88875cc1402fef4d4a.png
image-20230716095051511

3.安装 Minikube

(1)下载并安装 Minikube
sudo curl -LO https://storage.googleapis.com/minikube/releases/v1.29.0/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube
18be69fe3f5d2a2f4e5e73c273fae3e2.png
(2)查看 Minikube 版本
minikube version
920548a608c67ed99d328df76923ccc0.png
image-20230716085710752

4.启动 Minikube

(1)启动集群
minikube start --image-mirror-country='cn' --kubernetes-version=v1.23.8
f3d251d1dc1d90625088994a62d8a4ee.png

发现报错了,意思是不能用 root 用户运行这个命令。

我们直接加上 --force,强制执行

minikube start --force --image-mirror-country='cn' --kubernetes-version=v1.23.8
75f3c24288a4d74d591b9765e1c2c8e7.png

命令参数:

--image-mirror-country:cn 指定为国内镜像源;
 --cpus=2: 为 minikube 虚拟机分配 CPU 核数;
 --memory=2000mb: 为 minikube 虚拟机分配内存数;
 --kubernetes-version=***: 指定部署的kubernetes版本;
 --driver=docker:指定驱动,默认是 docker;
(2)验证
minikube status
daf593a21b35dac7758a05516f8b018f.png

查看版本

minikube kubectl version
243b197e51eba450916589479ef80c93.png

服务端版本和客户端版本都正常展示了!

查看 minikube 容器 (Docker)

docker ps

查看运行的全部 pod

minikube kubectl -- get pods -A
3a48eb41cb6f6b15c75ea57ee3dd8246.png

5.安装 kubectl

由于 minikube 内置的 kubectl 命令功能不全,所以最好独立安装一个 kubectl

用以下命令下载最新发行版:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

安装 kubectl:

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

查看版本的详细信息:

kubectl version --client --output=yaml
5f4ee87442b8b8671910649e592f8a1e.png

6.启动 dashboard

1.启动并显示代理地址
minikube dashboard --url

这个 URL 只能在宿主机内部访问,在宿主机之外无法直接访问,需要设置 kubectl proxy 代理或其它方式

1c876d20a21f29451c86922f2c37c9a7.png
2.设置 kubectl proxy 代理
minikube kubectl -- proxy --address='0.0.0.0'  --accept-hosts='^*$' &
50d98c45157ae320b2f716d9dfca5f02.png

需要修改 ECS 防火墙规则,允许入方向的 8001 端口通行。

在宿主机之外浏览器访问:

http://ECS公网IP:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
e43f5f09a8b25f6b1651ce7dfc8c47e6.png
image-20230716092221443
3.查看 dashboard 状态
kubectl get svc -n kubernetes-dashboard
759b40f22f7e1e7bb676814947692ed1.png

或者查看全部的 pod

kubectl get pod -A
9a1109b0f6a0a2a64720efb83d606e2c.png

2 个 kubernetes-dashboard 都是 Running 状态。

7.部署一个应用

部署一个 nginx,并通过 IP 外网访问

(1)创建 deployment
kubectl create deployment test-nginx --image=nginx:1.7.9
(2)查看
kubectl get pod,deploy
0d0c8ee9c33d3ca7ecb609c7ec61c844.png

发现 pod 和 deployment 都已经部署成功了

(3)暴漏 service 端口
kubectl expose deploy test-nginx --port=80 --type=NodePort

查看 service

kubectl get svc
ed3d554896923966ef643db104f2b93e.png

如果是 kubernetes 集群,直接访问 集群中的任意一个 IP:80 即可访问,但是我们安装的是 minikube,所以不能用这个方式,需要对 80 端口转发

(4)转发端⼝
kubectl port-forward --address 0.0.0.0 service/test-nginx 8080:80 &

为了方便区分,将创建的 service(test-nginx)80 端口转发到 8080

e2fe67bbcab52265f8eba020f271053b.png

访问 http://ECS 公网 IP:8080/

7049cb2851e75794770a707c2b222297.png

部署了一个应用后,我们回过头来看 dashboard

be0ca70243731c4ad6a6721688d99934.png

看到我们用命令部署的 nginx 相关的 pod、deployment、service 都展现出来的。

50b6d9104964f829473806cac7fc0845.gif
  • • 不懂Neo4j?没关系,一起学

  • • 不懂Neo4j?没关系,先学增删改查

  • • SpringBoot+Neo4j在社交电商中,讲述你是怎么被绑定为下线的

  • • 请别再问我什么是分布式事务

  • • 分布式事务解决方案之2PC、TCC

  • • 分布式事务解决方案之可靠消息最终一致性、最大努力通知

  • • 天天都用消息队列,却不知道为啥要用MQ,这就有点尴尬了

  • • 拜托,面试别再问我数据库的分库分表!

68bb87ac8c1d9cd4cf0cf520653b9f27.png
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐