十分钟带你了解Kubernetes,三条命令搭建集群nginx服务
文章目录Kubernetes(k8s)概念k8s集群架构Kubernetes 组件安装Kubernetes安装minikube在k8s上部署nginx服务参考链接Kubernetes(k8s)概念K8S就是Kubernetes,Kubernetes首字母为K,末尾为s,中间一共有8个字母,所以简称K8s。它是一个为容器化应用提供集群部署和管理的开源工具,由 Google 开发。通过k8s可以通过配
Kubernetes(k8s)概念
K8S就是Kubernetes,Kubernetes首字母为K,末尾为s,中间一共有8个字母,所以简称K8s。
它是一个为容器化应用提供集群部署和管理的开源工具,由 Google 开发。通过k8s可以通过配置文件轻松管理上千台机器。
k8s的部署配置文件和docker的dockerfile很类似,其内容描述了整个部署过程。
k8s集群架构
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
2.下载minikube.exe,虽然官网给了安装教程,但是用这种方式安装的minikube有bug,搞了一天没搞出来,最后用github上的一次实验成功。
官网
https://minikube.sigs.k8s.io/docs/start/
github
https://github.com/kubernetes/minikube/releases
3.启动minikube,命令要在安装的目录执行。
启动集群,先拉取镜像.\minikube.exe start
,拉取到kicbase镜像,并且开启了一个minikube容器。
查看集群中有哪些节点kubectl get node
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
会自动打开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/BV1Tg411P7EB
、 https://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_ROOT
, https://blog.51cto.com/u_15127660/4527743
更多推荐
所有评论(0)