前言
我这里就简单跟着官方教程做了下练习
参考文档:https://v1-27.docs.kubernetes.io/zh-cn/docs/tutorials/hello-minikube/
这里最重要的是,你需要提前配置好你的网络。
这个我教不了,之前发了篇帖子vmware实现科学上网审核不通过,提示【翻墙】,只有客官们自己搞定了
实操
1. docker安装
这个是前置条件,因为我这里使用的docker作为驱动
#设置云源 - docker官方
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#阿里yum源 - 国内用这个
#sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#刷新yum缓存
sudo yum makecache
#安装
yum install docker-ce docker-ce-cli containerd.io -y
#配置开机启动
systemctl start docker && systemctl enable docker.service
#查看状态
systemctl status docker
2. 创建Minikube集群
# 将当前用户加入到docker group组 - 不要使用root用户,否则会提示权限异常
sudo usermod -aG docker $USER && newgrp docker
# 下载、安装、启动minikube
minikube start --driver=docker --alsologtostderr
# 安装kubectl
sudo yum install -y kubectl
3. 打开仪表盘
# 启动一个新的终端,并保持此命令运行。
minikube dashboard
默认情况下,仪表板只能从内部 Kubernetes 虚拟网络中访问。 dashboard 命令创建一个临时代理,使仪表板可以从 Kubernetes 虚拟网络外部访问。
要停止代理,请运行 Ctrl+C 退出该进程。仪表板仍在运行中。 命令退出后,仪表板仍然在 Kubernetes 集群中运行。 你可以再次运行 dashboard 命令创建另一个代理来访问仪表板。
创建Deployment
Kubernetes Pod 是由一个或多个为了管理和联网而绑定在一起的容器构成的组。本教程中的 Pod 只有一个容器。 Kubernetes Deployment 检查 Pod 的健康状况,并在 Pod 中的容器终止的情况下重新启动新的容器。 Deployment 是管理 Pod 创建和扩展的推荐方法。
# 使用 kubectl create 命令创建管理 Pod 的 Deployment。该 Pod 根据提供的 Docker 镜像运行容器。
# 运行包含 Web 服务器的测试容器镜像
kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
# 查看 Deployment
kubectl get deployments
# 查看 Pod
kubectl get pods
# 查看集群事件
kubectl config view
5. 创建 Service
默认情况下,Pod 只能通过 Kubernetes 集群中的内部 IP 地址访问。 要使得 hello-node 容器可以从 Kubernetes 虚拟网络的外部访问,你必须将 Pod 暴露为 Kubernetes Service。
# 1.使用 kubectl expose 命令将 Pod 暴露给公网:
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
# 这里的 --type=LoadBalancer 参数表明你希望将你的 Service 暴露到集群外部。
# 测试镜像中的应用程序代码仅监听 TCP 8080 端口。 如果你用 kubectl expose 暴露了其它的端口,客户端将不能访问其它端口。
# 2.查看你创建的 Service
kubectl get services
# 3.打开一个浏览器窗口,为你的应用程序提供服务并显示应用的响应
minikube service hello-node
这个没什么可演示的了,就网页里正常打印了一个时间
6. 其他
6.1 修改服务器IP地址
nmcli con mod ens160 ipv4.addresses 192.168.86.100/24; nmcli con mod ens160 ipv4.gateway 192.168.86.2; nmcli con mod ens160 ipv4.method manual; nmcli con mod ens160 ipv4.dns “8.8.8.8”; nmcli con up ens160
6.2 网络测试
服务器是否已处于科学上网的状态
测试命令:curl -I https://www.google.com
否则一些镜像拉取不到
[weiheng@weihengminikube root]$ curl -I https://www.google.com
HTTP/2 200
content-type: text/html; charset=ISO-8859-1
content-security-policy-report-only: object-src 'none';base-uri 'self';script-src 'nonce-Wm4gmE5_Bl-kWM4PLC6ESA' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp
p3p: CP="This is not a P3P policy! See g.co/p3phelp for more info."
date: Tue, 13 Aug 2024 09:55:00 GMT
server: gws
x-xss-protection: 0
x-frame-options: SAMEORIGIN
expires: Tue, 13 Aug 2024 09:55:00 GMT
cache-control: private
set-cookie: AEC=AVYB7crRjRCQq_yjEOfw3VUlYmwbZe3YTCP42AlDYFWpHu35UMd6yCysZA; expires=Sun, 09-Feb-2025 09:55:00 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax
set-cookie: NID=516=YVFgqkZ4k-q3TTvDVAwoTjNS5EJ9vXmcF1g0VBdAW0n9QCRKBcFw5ZTwZgMogJSRv5lmTOsZ2xgwztZCSrdsc7VuLXoUxdfmJFIno3lCzUAJ60iT5w1O_dZHwF7GDcPzJa7iwp32AGuGMJAR7RVyByAJQDgLr6kVQ1_X3jLisXaPtqC9-Ovc; expires=Wed, 12-Feb-2025 09:55:00 GMT; path=/; domain=.google.com; HttpOnly
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
[weiheng@weihengminikube root]$