Mac下,通过minikube实现简单的发布和访问

k8s架构

在这里插入图片描述

Master节点构成
master节点相当于大脑。 

在这里插入图片描述

Worker节点
  • container runtime:k8s不直接和容器对接,而是通过container runtime来做处理,当镜像没有的时候会去拉取,然后缓存在本地。
  • kube-proxy:管理service网络,pod的ip是瞬息万变的,为了屏蔽pod ip的变化,所以引入了service的概念,并且在调用的时候进行负载均衡

在这里插入图片描述

发布流程

在这里插入图片描述

  • 发布命令,创建一个副本,通知ControllerManager
  • ControllerManager会比较当前环境和预发布的环境,是否一致,创建pod
  • 通知Scheduler
  • Scheduler会把pod调度到可用的节点上,通知节点上的Kubelet
  • Kubelet指示ContainerRuntime去拉取镜像,运行镜像
总体架构

在这里插入图片描述

组件

在这里插入图片描述

启动minikube

appledeMacBook-Pro:~ apple$ minikube start
😄  Darwin 10.13.6 上的 minikube v1.16.0
✨  根据现有的配置文件使用 hyperkit 驱动程序
👍  Starting control plane node minikube in cluster minikube
🔄  Restarting existing hyperkit VM for "minikube" ...
🎉  minikube 1.18.1 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.18.1
💡  To disable this notice, run: 'minikube config set WantUpdateNotification false'

🐳  正在 Docker 20.10.0 中准备 Kubernetes v1.20.0…
🔎  Verifying Kubernetes components...
🌟  Enabled addons: default-storageclass, storage-provisioner, dashboard

❗  /usr/local/bin/kubectl is version 1.16.6-beta.0, which may have incompatibilites with Kubernetes 1.20.0.
    ▪ Want kubectl v1.20.0? Try 'minikube kubectl -- get pods -A'
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
appledeMacBook-Pro:~ apple$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
timeToStop: Nonexistent

appledeMacBook-Pro:~ apple$ kubectl version --client
Client Version: version.Info{Major:"1", Minor:"16+", GitVersion:"v1.16.6-beta.0", GitCommit:"e7f962ba86f4ce7033828210ca3556393c377bcc", GitTreeState:"clean", BuildDate:"2020-01-15T08:26:26Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"darwin/amd64"}
appledeMacBook-Pro:~ apple$ kubectl config current-context
minikube
appledeMacBook-Pro:~ apple$ 
appledeMacBook-Pro:~ apple$ kubectl get no
NAME       STATUS   ROLES                  AGE    VERSION
minikube   Ready    control-plane,master   110d   v1.20.0
appledeMacBook-Pro:~ apple$ kubectl version
Client Version: version.Info{Major:"1", Minor:"16+", GitVersion:"v1.16.6-beta.0", GitCommit:"e7f962ba86f4ce7033828210ca3556393c377bcc", GitTreeState:"clean", BuildDate:"2020-01-15T08:26:26Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:51:19Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
appledeMacBook-Pro:~ apple$ 
appledeMacBook-Pro:~ apple$ kubectl cluster-info # 集群信息
Kubernetes master is running at https://192.168.64.2:8443
KubeDNS is running at https://192.168.64.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
appledeMacBook-Pro:~ apple$ 

Pod

在这里插入图片描述
一般一个Pod 里面住着一个容器

创建一个pod(以rabbitmq为例)
先定义pod的yaml文件
apiVersion: v1
kind: Pod
metadata:
  name: rabbitmq-pod
spec:
  containers:
    - name: rabbitmq-container
      image: rabbitmq:management
创建pod
appledeMacBook-Pro:k8s apple$ kubectl get pods
NAME        READY   STATUS              RESTARTS   AGE
rabbitmq-pod   1/1     Running   0          9s

appledeMacBook-Pro:k8s apple$ kubectl describe pod rabbitmq-pod #可查看pod详细信息,包括pod创建的一个流程,通过事件查看

网络访问

创建完成后,通过地址访问不到。我们得创建Service。

Service

创建Service
apiVersion: v1
kind: Service
metadata:
  name: rabbitmq-svc
spec:
  ports:
    - name: rabbitmq-dashboard-http
      port: 15672 # 暴露出来的地址
      targetPort: 15672 # 应用真实的地址, 可以不写,默认和port一致
      nodePort: 31035 #在本地开启31035的端口 将service暴露出来
  selector:
    app: rabbitmq #路由选择,标签为rabbitmq的应用 所以得修改pod上发布物yaml,将其打上标签
  type: NodePort  
修改pod的yaml,加上标签,可以路由过来
apiVersion: v1
kind: Pod
metadata:
  name: rabbitmq-pod
  labels:  # 打标签
    app: rabbitmq #用于service路由到这里
spec:
  containers:
    - name: rabbitmq-container
      image: rabbitmq:management

在这里插入图片描述

访问

输入<minikube.ip>:31035随即访问成功。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值