kubernetes 入门实践-操作k8s集群
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(一个人的真正伟大之处就在于他能够认识到自己的渺小 —— 保罗)ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ上一篇:kubernetes 入门实践-k8s集群可视化组件 dashbord操作k8s集群通过以上教程 我们完成了k8s的集群和可视化组件的搭建 接下来我们将完成k8s的基本操作,发布和部署等应用基本环境镜像仓库 DockerHub docker.io编程语言
ㅤㅤㅤ
ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(一个人的真正伟大之处就在于他能够认识到自己的渺小 —— 保罗)
ㅤㅤㅤ
ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤ
上一篇:kubernetes 入门实践-k8s集群可视化组件 dashbord
操作k8s集群
通过以上教程 我们完成了k8s的集群和可视化组件的搭建 接下来我们将完成k8s的基本操作,发布和部署等
应用基本环境
- 镜像仓库 DockerHub docker.io
- 编程语言 JavaScript
- 语言框架 Vue
- 代理 Nginx
发布应用
使用vue项目进行演示或者使用vue-cli快速生成
编写Dockerfile
# 安装node 阶段别名builder docker 17版本新增多阶段构建
FROM node:12 as builder
# 镜像的维护者
MAINTAINER zhangzw
# 创建工作目录
RUN mkdir app
# 指定工作目录
WORKDIR /app
# 拷贝目录
COPY . /app
# 安装npm包
RUN npm --registry https://registry.npm.taobao.org i
# 编译
RUN npm run build
# 安装nginx
FROM nginx
# 从阶段builder中将编译好的dist文件夹复制到nginx下
COPY --from=builder /app/dist /usr/share/nginx/html
# 从阶段builder中将本地nginx.conf替换容器内nginx.conf
COPY --from=builder /app/nginx.conf /etc/nginx/nginx.conf
# 设置时区
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
# 指定容器端口为80
EXPOSE 80
##### 打包,推送docker镜像
将本地项目打包生成docker镜像
docker build -t vue-master-2919c3e2acd37a1d69cfd2fe1b943d03eb02ac68 .
先登录docker 用于后续推送镜像
docker login
镜像发布
比如 docker push vue-master-2919c3e2acd37a1d69cfd2fe1b943d03eb02ac68
docker push ${仓库名字}:镜像标签
创建镜像命名空间
kubectl create namespace vue
获取k8s集群命名空间
kubectl get namespace
创建docker仓库的密钥文件secret
kubectl create secret说明文档
创建密钥 以dockerhub私有仓库为例
kubectl create secret docker-registry docker-secret \
--docker-server=https://index.docker.io/v1/ \
--docker-username=dockerhub用户名 \
--docker-password=dockerhub用户密码 \
--docker-email=注册dockerhub用的邮箱
查看密钥
kubectl get secret
查看密钥配置文件json
cat ~/.docker/config.json
查看密钥的yaml格式信息
kubectl get secret docker-secret -o yaml
编写k8s应用发布yaml文件 test-deploy.yaml
apiVersion: v1 # kubernetesAPI版本
kind: Service # 想要创建的资源对象类别
metadata: # 帮助唯一性标识对象的一些数据
name: vue-service # 对象名称
namespace: vue # 命名空间
labels: # pod标签
app: vue-service-lable # pod标签
spec: # 资源内容
type: NodePort # 服务暴露类型,一般有ClusterIp,Nodeport,loadBlannce
ports: # 需要暴露的端口库号列表
- port: 31065 # service 暴露在 cluster ip上的端口
targetPort: 80 # targetPort 是 pod 上的端口
nodePort: 31066 # 暴露在集群物理节点上 node 的端口
protocol: TCP # 端口协议,支持TCP和UDP,默认TCP
name: http # 端口号名称
selector: # 标签选择器
app: vue-pod # 标签名称
apiVersion: apps/v1 # kubernetesAPI版本
kind: Deployment # 想要创建的资源对象类别
metadata:# 帮助唯一性标识对象的一些数据
name: vue-deployment # 对象名称
namespace: vue # 命名空间
spec: # 资源内容
selector: # 标签选择器
matchLabels: # 定义一组标签
app: vue-pod # 标签名字
replicas: 3 # 副本数
strategy: # 更新策略
type: RollingUpdate # 滚动发布
rollingUpdate: # 滚动升级配置
maxSurge: 1 # 同时最大有多少个pod启动
maxUnavailable: 1 # 同时最大有多少个pod不可用
template: # Pod的定义
metadata: # 帮助唯一性标识对象的一些数据
labels: # pod标签
app: vue-pod # 标签名字
spec: # 资源内容定义
containers: # 容器定义
- name: vue-container # 容器名称
image: 你的镜像 # 容器镜像
ports: # 端口配置
- containerPort: 80 # 容器对外端口
imagePullSecrets: # 镜像拉取密钥
- name: docker-secret # 密钥名称
k8s使用yaml配置文件发布应用
kubect apply -f test-deploy.yaml
查看该命名空间下的发布的应用内容并携带标签信息
kubectl get pods,service,deployment,endpoints --show-labels -n vue -o wide
通过service的NodePort访问
192.168.5.138是宿主机ip
通过service的ClusterIp访问
10.1.245.201是该service的cluster ip
在dashboard下查看应用状态
操作应用
pod基本操作
接下来我们将学习如何重启,更新,删除pod,如何查看pod的日志和详细信息,以及进入pod,在pod环境内进行操作
- 重启应用
通过删除某个命名空间下的所有pod达到重启的目的
kubectl delete --all pods --namespace=vue
因为删除了所有的pod 且应用中的副本数是2 所以自动重启了两个pod
- pod扩容
更改yaml配置文件中的replicas字段 将pod扩容为2个
更新应用
kubectl apply -f test-deploy.yaml
- pod缩减
将配置文件中的replicas改为要降低的数字 k8s将随机删除一个pod - 删除命名空间下的指定pod
kubectl delete pod vue-deployment-5dbd7dc568-zphgb -n vue
因为此时应用中的副本集是2 删除掉一个之后 k8s会自动一个新的副本
- 查看pod运行日志
查看某个命名空间下的pod日志
kubectl logs vue-deployment-5dbd7dc568-b87zj -n vue
实时查看某个命名空间下的pod日志
kubectl logs -f vue-deployment-5dbd7dc568-b87zj -n vue
- 查看某命名空间下的pod详细信息
kubectl describe pods/vue-deployment-5dbd7dc568-b87zj -n vue
- 进入pod容器
kubectl exec -it vue-deployment-5dbd7dc568-b87zj -n vue -- /bin/bash
- pod升级
变更yaml配置中文件中的image镜像即可
更多推荐
所有评论(0)