Kubernetes(k8s)概念

K8S就是Kubernetes,Kubernetes首字母为K,末尾为s,中间一共有8个字母,所以简称K8s。

它是一个为容器化应用提供集群部署和管理的开源工具,由 Google 开发。通过k8s可以通过配置文件轻松管理上千台机器。

k8s的部署配置文件和docker的dockerfile很类似,其内容描述了整个部署过程。

k8s集群架构

a

master

主节点,控制平台,不需要很高性能,不跑任务,通常一个就行了,也可以开多个主节点来提高集群可用度。

worker

工作节点,可以是虚拟机或物理计算机,任务都在这里跑,机器性能需要好点;通常都有很多个,可以不断加机器扩大集群;每个工作节点由主节点管理。

Pod

K8S 调度、管理的最小单位,一个 Pod 可以包含一个或多个容器,每个 Pod 有自己的虚拟IP。一个工作节点可以有多个 pod,主节点会考量负载自动调度 pod 到哪个节点运行。

Kubernetes 组件

kube-apiserver API 服务器,公开了 Kubernetes API
etcd 键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库
kube-scheduler 调度 Pod 到哪个节点运行
kube-controller 集群控制器
cloud-controller 与云服务商交互

安装Kubernetes

  • minikube
    只是一个 K8S 集群模拟器,只有一个节点的集群,只为测试用,master 和 worker 都在一起

  • 零环境安装

    至少需要两台机器,分别是主节点和工作节点,搭建环境较为麻烦。参考https://k8s.easydoc.net/docs/dRiQjyTY/28366845/6GiNOzyZ/nd7yOvdY

安装minikube

1.需要docker的支持,先运行起来docker

a

2.下载minikube.exe,虽然官网给了安装教程,但是用这种方式安装的minikube有bug,搞了一天没搞出来,最后用github上的一次实验成功。

官网https://minikube.sigs.k8s.io/docs/start/

githubhttps://github.com/kubernetes/minikube/releases

3.启动minikube,命令要在安装的目录执行。

启动集群,先拉取镜像.\minikube.exe start,拉取到kicbase镜像,并且开启了一个minikube容器。

a

查看集群中有哪些节点kubectl get node

a

minikube.exe相关命令操作

# 启动集群
.\minikube.exe start
# 查看节点。kubectl 是一个用来跟 K8S 集群进行交互的命令行工具
kubectl get node
# 停止集群
.\minikube.exe stop
# 清空集群
.\minikube.exe delete --all
# 安装集群可视化 Web UI 控制台
minikube dashboard
# 在浏览器自动打开应用
minikube sercive 服务的名字

kubectl相关命令操作

# 查看服务
kubectl get service
# 查看服务详情
kubectl describe service 服务详情 
# 查看pod
kubectl get pod -o wide
# 查看部署情况
kubectl get deployment
# 查看pod日志
kubectl logs/pod名字
# 根据配置文件进行部署
kubectl apply -f 文件名
# 删除
kubectl delete -f 文件名
# 进入指定pod容器
kubectl exec -it pod名字 -- bash

在k8s上部署nginx服务

在minikube.exe start之后,运行如下命令

# 创建一个部署,使用镜像nginx:latest 部署名称为hello-nginx
kubectl create deployment hello-nginx --image=nginx:latest

# 查看部署列表
kubectl get deployments
 
# 查看pods列表
kubectl get pods
 
# 查看时间
kubectl get events
 
# 查看集群配置
kubectl config view
 
# 导出一个部署的应用 80是容器对外暴露的端口,会被分配一个随机端口以供访问
kubectl expose deployment hello-nginx --type=NodePort --port=80
 
# 列出hello-nginx的信息 自动打开浏览器
minikube service hello-nginx

a

会自动打开http://127.0.0.1/60610

猜测192.168.49.2是容器的ip,但是宿主机cmd中ipconfig没有49.2这个网段,所以只是猜测。

也可以设置端口转发

kubectl port-forward service/hello-nginx 70:80

这样就可以访问http://127.0.0.1/70来打开web服务了。


当控制的节点较多时,需要采用配置文件的方式进行部署,下面只是一个简单的部署两个pod的配置文件。(没有做过实验)

编辑一个yaml格式的文件,内容如下

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world
spec:
  selector:
    matchLabels:
      run: hello-example 
  replicas: 2
  template:
    metadata:
      labels:
        run: hello-example
    spec:
      containers:
        - name: hello-world
          image: nginx:latest

进行部署

kubectl apply -f xxx.yaml

参考链接

1、minikube官网https://minikube.sigs.k8s.io/docs/start/

2、kubernetes教程https://www.bilibili.com/video/BV1Tg411P7EBhttps://k8s.easydoc.net/docs/dRiQjyTY/28366845/6GiNOzyZ/9EX8Cp45

3、实验参考https://blog.csdn.net/u014636124/article/details/105145674/https://fizzz.blog.csdn.net/article/details/108062725

4、ubuntu下报错Exiting due to DRV_AS_ROOThttps://blog.51cto.com/u_15127660/4527743

Logo

开源、云原生的融合云平台

更多推荐