minikube学习

140 阅读3分钟

最近把自己一个小玩意儿用docker部署到服务器后,开始尝试了解kubernetes,但是看了一眼阿里云k8s的收费情况,作为学生党当然是选择白嫖。现阶段只是了解学习的阶段,所以选择使用minikube来学习了解k8s。参考文档

Kubernetes 集群

Kubernetes 协调一个高可用计算机集群,每个计算机作为独立单元互相连接工作。 一个 Kubernetes 集群包含两种类型的资源:

  • Master 调度整个集群
    Master节点负责管理整个集群,控制工作节点。
  • Nodes 负责运行应用
    Node是一个虚拟机或者物理机,作为一个工作节点。它在 Kubernetes 集群中充当工作机器的角色,应该具有Kubelet:管理 Node 而且是 Node 与 Master 通信的代理以及用于处理容器操作的工具。
    image.png Master 管理集群,Node 用于托管正在运行的应用。

Deployment (部署)

创建 Kubernetes Deployment 配置,Deployment 指挥 Kubernetes 如何创建和更新应用程序的实例。通过修改Deployment文件来控制kubernetes来创建或是修改Pod。个人理解类似于dockerfile,表示应该如何创建Pods。
相关命令

# 查看 deployment 
kubectl get deployment
# 创建命令,可以指定镜像版本
kubectl create deployment hello-node --image=registry.k8s.io/echoserver:1.4
# 也可以通过pod.yaml来部署Pod
kubectl apply -f .\pod.yaml
# 删除deployment 
kubectl delete deployment hello-minikube

Pods

kubernetes调度、管理的最小单位,一个Pod里面可以包含一个或多个容器,每个 Pod 有自己的虚拟IP。是运行一个应用程序的最小单元。

image.png 相关命令

# 查看Pods
kubectl get pods 
# 通过命令行运行
kubectl run testapp --image=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1
# 如何重启一个Pods,因为并没有重启命令,是通过删除之后再次重新生成Pods来达到重启效果。
kubectl delete pod hello-minikube 

Service

Kubernetes 中的服务(Service)是一种抽象概念,它定义了 Pod 的逻辑集和访问 Pod 的协议。简单来说就是通过Service来暴露服务,对集群外部提供端口。不会因为Pod的增减而改变,拥有唯一IP,提供负载均衡功能,可以自动分配流量至不同的Pod中。并且可以通过给Pod打上label(标签),用来给不同的Pod进行分类。
相关命令

# 将一个服务暴露至80端口
kubectl expose deployment hello-minikube --type=LoadBalancer --port=8080
# 查看创建的services,
kubectl get services
# 在集群外部可以使用这个命令访问
minikube service hello-node
# 如果部署了LoadBalancer(负载均衡器),就可以通过EXTERNAL-IP(外部IP)来访问服务
kubectl create deployment balanced --image=docker.io/nginx:1.23
kubectl expose deployment balanced --type=LoadBalancer --port=80
# 启动另一个窗口中,启动隧道以为“平衡”部署创建可路由 IP:
minikube tunnel
# 获取LoadBalancer的外部IP
kubectl get services balanced

伸缩扩展服务

# 方法一:通过修改replicas参数来设置Deployment的副本数。
# 进入 Pod 容器终端, -c container-name 可以指定进入哪个容器。 
kubectl exec -it pod-name -- bash 
# 伸缩扩展副本,设置为5个Pod
kubectl scale deployment test-k8s --replicas=5
# 方法二:通过K9S:一个基于curses的全屏终端UI管理工具,可以监控kubernetes集群并进行交互。

image.png 除了快速伸缩拓展副本,并且还可以进行滚动更新功能,以及快速回退版本等,最直观的感受就是非常方便了。