k8s简单介绍
k8s是什么?
它是用来解决容器部署,调度,伸缩等基础的功能的软件
k8s的优点?
- 易学:轻量级,简单,容易理解
- 便携:支持公有云,私有云,混合云,以及多种云平台
- 可拓展:模块化,可插拔,支持钩子,可任意组合
- 自修复:自动重调度,自动重启,自动复制
docker中部署k8s架构
基本概念
- 节点( Node ):一个节点是一个运行 Kubernetes 中的主机。
- 容器组( Pod ):一个 Pod 对应于由若干容器组成的一个容器组,同个组内的容器共享一个存储卷(volume)。
- 容器组生命周期( pos-states ):包含所有容器状态集合,包括容器组状态类型,容器组生命周期,事件,重启策略,以及 replication controllers。
- Replication Controllers:主要负责指定数量的 pod 在同一时间一起运行。
- 服务( services ):一个 Kubernetes 服务是容器组逻辑的高级抽象,同时也对外提供访问容器组的策略。
- 卷( volumes ):一个卷就是一个目录,容器对其有访问权限。
- 标签( labels ):标签是用来连接一组对象的,比如容器组。标签可以被用来组织和选择子对象。
- 接口权限( accessing_the_api ):端口,IP 地址和代理的防火墙规则。
- web 界面( ux ):用户可以通过 web 界面操作 Kubernetes。
- 命令行操作( cli ): kubecfg 命令
##我们先把k8s跑起来在说,部署参考:https://www.cnblogs.com/python-cat/p/10831419.html
=============================================================================
部署一个应用
kubectl run nginx \ --image=ghd493630393/nginx:v1 \ --port=80
这里我们通过kubectl run部署了一个应用,命名为kubernetes-bootcamp ,如图1-6 所示。
Docker 镜像通过-- image 指定。
一port 设置应用对外服务的端口。
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead. deployment.apps/kubernetes-bootcamp created
这里Deployment 是Kubernetes 的术语,可以理解为应用。Kubermetes 还有一个重要术语Pod 。Pod 是容器的集合,通常会将紧密相关的一组容器放到一个Pod 中,同一个Pod 中的所有容器共享IP 地址和Port 空间,也就
是说它们在一个network namespace 中。Pod 是Kubermetes 调度的最小单位,同- Pod 中的容器始终被一起调度。通过 kubectl get pods来查看pod信息
[root@k8s-master opt]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-77d48d9dc5-kghmh 1/1 Running 0 20h
nginx-test-n828d 1/1 Running 0 5d18h
nginx-test-pmtfm 1/1 Running 0 5d18h
访问应用
默认情况下,所有Pod 只能在集群内部访问。对于上面这个例子,要访问应用只能直接访问容器的8080 端口。为了能够从外部访问应用,我们需要将容器的8080 端口映射到节点的端口。
#将nginx暴露到外网
[root@k8s-master ~]# kubectl expose nginx \ > --type="NodePort" \ > --port 80
#查看映射到外网的端口(可以看到外网端口是31833)
[root@k8s-master opt]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 101d
kubernetes-bootcamp NodePort 10.1.58.198 <none> 8080:30187/TCP 24h
nginx NodePort 10.1.150.252 <none> 80:31833/TCP 18h
nginx-test-n828d ClusterIP 10.1.221.205 <none> 80/TCP 5d18h
You have new mail in /var/spool/mail/root
#外网访问的话需要通过node节点IP来访问,查看这个svc在哪个k8s集群节点上
#kubectl describe pod nginx-77d48d9dc5-kghmh
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端