系列文章
第一章:✨ k8s入门:裸机部署 k8s 集群 第二章:✨ k8s入门:部署应用到 k8s 集群 第三章:✨ k8s入门:service 简单使用 第四章:✨ k8s入门:StatefulSet 简单使用 第五章:✨ k8s入门:存储(storage) 第六章:✨ K8S 配置 storageclass 使用 nfs 动态申领本地磁盘空间 第七章:✨ k8s入门:配置 ConfigMap & Secret 第八章:✨ k8s入门:k8s入门:Helm 构建 MySQL 第九章:✨ k8s入门:kubernetes-dashboard 安装 第十章:✨ k8s入门:kube-prometheus-stack 全家桶搭建(Grafana + Prometheus)
文章目录
- 系列文章
- 一、简介
- 二、pod 和 deployment 关系
- 三、k8s 使用本地镜像部署
- 四、上传镜像到仓库
- 五、公共镜像部署
- 六、私人镜像部署
- 1、创建阿里云验证
- 2、私人镜像创建 pod
- ①、kubectl port-forward 临时暴露端口访问测试
- ②、错误: open /run/flannel/subnet.env: no such file or directory`
- ③、创建 pod 暴露端口
- 3、创建 Deployment
- 4、历史版本控制
- 5、其他命令
- 七、小妙招
- 八、遗留问题
参考文章: https://k8s.easydoc.net/
一、简介
接上篇裸机部署 k8s 集群:
基础环境:
- 系统⭐Linux、centos 7.9 、3 台虚拟机
- 虚拟机IP⭐master:192.168.25.100,node1:192.168.25.101,node2:192.168.25.102
- k8s 版本⭐1.23.1
- docker 版本⭐20.10.16
官方文档
- Kubernetes 官方文档:https://kubernetes.io/zh/docs/setup/
- Kubernetes 中文社区 | 中文文档:http://docs.kubernetes.org.cn/
- spring-cloud-kubernetes:https://docs.spring.io/spring-cloud-kubernetes/docs/current/reference/html/
- kubectl 命令:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
二、pod 和 deployment 关系
- pod
- Pod 是 k8s 的最小调度单位
- 一个 Pod 代表集群上正在运行的一个进程
- Pod 中运行一个容器,可以将 Pod 视为单个封装的容器,但是 K8s 是直接管理 Pod 而不是容器
- Pod 中运行多个容器,这些容器可以形成一个单一的内部service单位,可以相互通信,共享数据
- 一个 Pod 被分配一个独立的IP地址,Pod中的每个容器共享 IP 地址和网络端口,Pod 内的容器可以使用 localhost 相互通信。
- Pod 中的容器与Pod 外部通信时,他们必须协调如何使用共享网络资源(如端口)。
- deployment
- 创建 deployment 的时候一定会创建Pod
- Deployment 可以新建及管理多副本应用(即多个副本 Pod)
- deployment 可以部署多个Pod,所有 Pod 的名字后面会随机带一串随机数避免重复
- Deployement 会配合 RC 调度保障定量的 Pod 数量。
三、k8s 使用本地镜像部署
使用 Dockerfile 在本地生成的镜像,不用上传到仓库,该方法不常用
k8s默认会从远端拉取镜像,其默认配置参数 imagePullPolicy 为 Always,我们可以将该参数设置为Never 或者 IfNotPresent,k8s 就会从本地拉取镜像了。
master 节点 pod 配置
注意:

四、上传镜像到仓库
将准备好的 jar 制作成镜像上传到私人仓库,可参考我另一篇博客
上传成功可以拉取镜像测试一下,jar 包中接口如下

五、公共镜像部署
对于公共镜像可以直接使用 kubectl run 创建 pod
使用公共镜像创建 pod,公共镜像可以直接 docker pull 拉取,不需要登陆
在可以使用 kubectl 工具的节点(一般建议 master 节点)新建 k8s-pod-dockerhub-public.yaml 文件,添加如下内容
使用 部署 pod
- kubectl get pod -o wide 查看 pod 状态以及部署详情
- kubectl describe pod nginx 查看 pod 部署日志
- kubectl logs -f test-pod 查看 pod 中指定容器启动日志
- kubectl exec -it test-pod /bin/sh 进入容器




六、私人镜像部署
dockerhub 和阿里云仓库操作类似
1、创建阿里云验证
登陆阿里云仓库 ,登陆成功会生成 ~/.docker/config.json 验证文件
k8s 集群中通过 ~/.docker/config.json 文件制作 secret 凭证

新建一个 secret 的 yaml 文件,就叫 registry-secret.yaml
创建并检查 secret 凭证

2、私人镜像创建 pod
新建 aliyun-private-springboot-pod.yaml 文件,添加 secret 验证拉取私人镜像
创建并查看 pod 信息
查看 pod 状态已启动,部署到了 node1 节点,拉去镜像用时 14 s,查看 pod 启动日志发现端口 8080
①、kubectl port-forward 临时暴露端口访问测试
把集群内 8080 端口映射到节点 8090,在 master 节点执行(在可以使用 kubectl 命令的节点都可以执行)
- 本机访问
默认只能本地访问 127.0.0.1(IPv4) 和 ::1 (IPv6)
重新打开一个 master 连接,因为使用 kubectl port-forward 是临时的,不能关闭,关闭即不起作用
- 所有地址
使用 --address 0.0.0.0 指定所有地址都可访问
在宿主机使用虚拟机 master IP地址访问 http://192.168.25.100:8090/k8s/test

②、错误: open /run/flannel/subnet.env: no such file or directory`
报错:如果你运行 报错错误

③、创建 pod 暴露端口
使用 DockerHub 镜像 redis:latest,创建一个 redis,暴露节点 6379 端口
创建 pod

3、创建 Deployment
Deployment 示例,新建 aliyun-private-springboot-deployment.yaml 文件添加如下内容,使用阿里云私人镜像部署三个 pod
创建 Deployment 查看运行状态

命令行指定 pod 副本数量,可用于伸缩扩展副本

如果想访问测试可以使用
4、历史版本控制
- 新增一个镜像版本 registry.cn-zhangjiakou.aliyuncs.com/k8s-private/springboot:1.1
- 修改 aliyun-private-springboot-deployment.yaml 文件指定镜像版本为 1.1
- 重新使用 kubectl apply -f aliyun-private-springboot-deployment.yaml 部署

查看部署详情 ,可以看到拉取 1.1版本

查看历史版本:,可以发现有两个版本

版本回滚可以使用如下命令
5、其他命令
七、小妙招
在使用vim进行文档操作时,粘贴多行时,会出现错位、错乱(行注释极为明显)
八、遗留问题
- 每次只能访问一个 pod,没有负载均衡自动转发到不同 pod
- 访问还需要端口转发
- Pod 重新创建后 IP 变了,名字也变了
下一篇使用 Service 解决这些问题
到此这篇hprof文件生成原因(hprof文件怎么看)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/19436.html