admin管理员组文章数量:1033770
Kubernetes(k8s)
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
我们上小节介绍kubevirt的安装和用一个案例来演示了创建一个虚拟机,今天我们就来详细介绍如何把自己的业务封装在虚拟机里面,然后使用Kubernetes来进行调度。
1.准备一个qcow2镜像
这个镜像我们是在里面放置一个Nginx服务,然后开机启动,没有数据盘,因为核心目的是让我们学会做把虚拟机里面的业务放到Kubernetes集群里面进行使用。需要把虚拟机里面的IP配置成DHCP,否则这个虚拟机启动以后网络无法联通。如果对虚拟机的不熟悉,可以翻看我的历史文章:KVM虚拟化。
2.构建成容器镜像
代码语言:javascript代码运行次数:0运行复制# 使用空镜像(仅包含磁盘文件)
FROM scratch
# 添加虚拟机磁盘文件到 /disk 目录(固定路径)
ADD kubevirt-nginx.qcow2 /disk/
为了方便测试,我这里是在Docker环境进行构建的。下图的时间是0,是因为我已经跑过多次,这里使用缓存。qcow2文件需要提前给755权限。
3.创建kubevirt
这里只配置了一个系统盘,也没有初始化配置,机器的密码使用镜像自带的密码。
代码语言:javascript代码运行次数:0运行复制apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: nginx-vm
spec:
running: true # 创建后自动启动
template:
metadata:
labels:
kubevirt.io/domain: nginx-vm
spec:
domain:
devices:
disks:
- name: rootdisk
disk:
bus: virtio # 磁盘总线类型
resources:
requests:
memory: 1Gi
cpu: 1
volumes:
- name: rootdisk
containerDisk:
image: 192.168.31.43:5000/kubevirt-nginx:latest # 引用容器镜像
path: /disk/kube-virt-nginx.qcow2 # 镜像内磁盘路径
4.查看虚拟机
下图是qcow2镜像使用手工配置IP和Pod分配的地址无法不一致,是不能使用的错误示范。这个也是为什么上面提到的虚拟机需要是DHCP的原因。
下图则是把qcow2镜像改成dhcp方式这样容器虚拟机的ip保持一致,这样这个虚拟机或者说Pod就可以和其他Pod一样正常提供服务。
5.测试虚拟机
代码语言:javascript代码运行次数:0运行复制#这里是请求虚拟机里面的nginx服务
[root@master01 ~]# curl -o /dev/null -s -w \"%{http_code}\n"
200
[root@master01 ~]#
测试虚拟机(Pod)的ssh和磁盘。
6.总结
1.镜像文件必须预先添加755权限,否则无法启动虚拟机。
2.镜像文件必须使用关闭静态IP,开启dhcp,网络配置才会正常。
3.这里是考虑了功能实现,未考虑其他,比如IP固定,数据持久化等问题,有兴趣可以下去自己研究。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-03-29,如有侵权请联系 cloudcommunity@tencent 删除配置虚拟机kubernetes磁盘镜像Kubernetes(k8s)
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
我们上小节介绍kubevirt的安装和用一个案例来演示了创建一个虚拟机,今天我们就来详细介绍如何把自己的业务封装在虚拟机里面,然后使用Kubernetes来进行调度。
1.准备一个qcow2镜像
这个镜像我们是在里面放置一个Nginx服务,然后开机启动,没有数据盘,因为核心目的是让我们学会做把虚拟机里面的业务放到Kubernetes集群里面进行使用。需要把虚拟机里面的IP配置成DHCP,否则这个虚拟机启动以后网络无法联通。如果对虚拟机的不熟悉,可以翻看我的历史文章:KVM虚拟化。
2.构建成容器镜像
代码语言:javascript代码运行次数:0运行复制# 使用空镜像(仅包含磁盘文件)
FROM scratch
# 添加虚拟机磁盘文件到 /disk 目录(固定路径)
ADD kubevirt-nginx.qcow2 /disk/
为了方便测试,我这里是在Docker环境进行构建的。下图的时间是0,是因为我已经跑过多次,这里使用缓存。qcow2文件需要提前给755权限。
3.创建kubevirt
这里只配置了一个系统盘,也没有初始化配置,机器的密码使用镜像自带的密码。
代码语言:javascript代码运行次数:0运行复制apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: nginx-vm
spec:
running: true # 创建后自动启动
template:
metadata:
labels:
kubevirt.io/domain: nginx-vm
spec:
domain:
devices:
disks:
- name: rootdisk
disk:
bus: virtio # 磁盘总线类型
resources:
requests:
memory: 1Gi
cpu: 1
volumes:
- name: rootdisk
containerDisk:
image: 192.168.31.43:5000/kubevirt-nginx:latest # 引用容器镜像
path: /disk/kube-virt-nginx.qcow2 # 镜像内磁盘路径
4.查看虚拟机
下图是qcow2镜像使用手工配置IP和Pod分配的地址无法不一致,是不能使用的错误示范。这个也是为什么上面提到的虚拟机需要是DHCP的原因。
下图则是把qcow2镜像改成dhcp方式这样容器虚拟机的ip保持一致,这样这个虚拟机或者说Pod就可以和其他Pod一样正常提供服务。
5.测试虚拟机
代码语言:javascript代码运行次数:0运行复制#这里是请求虚拟机里面的nginx服务
[root@master01 ~]# curl -o /dev/null -s -w \"%{http_code}\n"
200
[root@master01 ~]#
测试虚拟机(Pod)的ssh和磁盘。
6.总结
1.镜像文件必须预先添加755权限,否则无法启动虚拟机。
2.镜像文件必须使用关闭静态IP,开启dhcp,网络配置才会正常。
3.这里是考虑了功能实现,未考虑其他,比如IP固定,数据持久化等问题,有兴趣可以下去自己研究。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-03-29,如有侵权请联系 cloudcommunity@tencent 删除配置虚拟机kubernetes磁盘镜像本文标签: Kubernetes(k8s)
版权声明:本文标题:Kubernetes(k8s) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1748055489a2247309.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论