kubernetes 入门实践-操作k8s集群

ㅤㅤㅤ
ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(一个人的真正伟大之处就在于他能够认识到自己的渺小 —— 保罗)
ㅤㅤㅤ
ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤ在这里插入图片描述
上一篇: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

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环境内进行操作

replicaset相关官方文档

  • 重启应用
    通过删除某个命名空间下的所有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镜像即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值