kubernetes系列(二) - kubectl的入门操作
1. 安装 / 卸载
1 .1 前提条件
homebrew安装kubectl
docker本身设置镜像加速
以下操作如果失败,开启ssr的全局模式进行再次操作
1.2 安装方式
homebrew【不好使】
二进制【参照如下的链接】
1.3 卸载
# 停止集群
minikube stop
# 清理minikube本地状态
minikube delete
# 通过homebrew卸载
brew uninstall minikube
2. 通过 minikube 学习 k8s 实操基础
2.1 创建集群
# 二进制安装minikube
curl -Lo minikube https://github.com/kubernetes/minikube/releases/download/v1.9.2/minikube-darwin-amd64 \
&& chmod +x minikube && sudo mv minikube /usr/local/bin/
# 创建minikube集群【使用阿里的镜像】
# !!这一句之后,kubectl还会被配置为默认使用minikube!!
minikube start --image-mirror-country cn \
--iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.9.0.iso \
--registry-mirror=https://rnbhv8m8.mirror.aliyuncs.com
# 完成后,查看minikube状态
minikube status
# 打开本地dashboard
minikube dashboard
2.2 部署应用
deployment会帮我们创建pod
pod运行在一个私有的,隔离的网络上。默认情况下可以被同一个集群的其他【pod】和【service】所访问到,但是外部网络无法访问,需要通过service来暴露给外部
# 创建第一个deployment【deployment会自动创建一个pods】
kubectl create deployment codepie --image=lzw5399/codepiefe:20200423.
# 获取deployments信息
kubectl get deploy【或者全称deployments】
# 获取deploy创建的pod信息
kubectl get pods
# 临时地,允许通过api访问api-server
# 通过以下链接访问具体的pod:
# [http://localhost:8001/api/v1/namespaces/default/pods/具体的pod_name/proxy/](http://localhost:8001/api/v1/namespaces/default/pods/具体的pod_name/proxy/)
kubectl proxy
【Starting to serve on 127.0.0.1:8001】
2.3 探索当前应用【故障排除】
1 # 获取资源
2 kubectl get pods
3 # 显示当前pod的详细状态信息
4 kubectl describe pods
5 # 显示当前pod的日志
6 kubectl logs codepie-677c5c9c56-wk4qn【pod名字】
7 # 针对某个pod执行一个命令
8 # 显示当前pod内部的环境变量
9 kubectl exec codepie-677c5c9c56-wk4qn -- env
10 # 进入到pod内部
11 kubectl exec -ti codepie-677c5c9c56-wk4qn -- bash
2.4 公开暴露应用
思路就是创建service来将pod转发出去
创建service的方式
- kubectl expose deployment/{depoly_name} --type="NodePort" --port 80【这个port是docker容器内部的端口】
- kubectl create service nodeport codepie --tcp=80: 80 【create这个 80 : 80 】
- kubectl create -f xxx.yaml 【不推荐】
- kubectl apply -f xxx.yaml【推荐】
# 通过上面的方式之一来建立起service
# 访问, 或者直接在浏览器中直接访问下面的地址
# minikube ip是minikube帮我们创建的虚拟机的ip,对应着正式k8s中的pod所在node的外网ip
curl $(minikube ip):{向外暴露的端口}
2.5 使用label
# 打label
kubectl label pod {pod_name} {key}={value}
# 根据label来获取
kubectl get po -l {key}={value}
2.6 扩容应用
适用于无状态应用,将一个应用扩容多个实例
扩容后,service会有一个均衡负载的功能,将请求发送到相同实例的不同的pod
还支持自动缩放,但是超出了本教程的范围
一旦运行了多个应用程序的多个实例,就可以在不停机的情况下滚动更新
# 获取所有的deploy部署的容器实例个数
# 【DESIRED】期望的个数 【CURRENT】实际的个数
kubectl get rs 【ReplicaSet】
# 将deploy/codepie 的实例扩容成四个
# 缩容就改一下 replicas 的数值就好了
kubectl scale deploy/codepie --replicas= 4
# 以下几个都可以查看到实例变成四个
kubectl get po -o wide
kubectl get rs
kubectl get deploy
2.7 更新应用
- 多个实例的情况下可以滚动不停机更新,且允许以下操作:
- 通过更新docker image,更新应用程序
- 回顾到以前的版本
- CI/CD, 停机时间为 0
- 默认情况下,在更新过程中的【不可用pod的最大数量】和【可以创建新的pod的最大数量】都为 1。这两个选项都可以配置为数字或者百分比
- 更新过程中,service会仅将流量负载到【可用的pod】
# 更新deploy对应的image
# 格式 kubectl set image deploy/{depoly_name} {docker镜像的后半部分名字}={新的image} kubectl set image deploy/codepie codepiefe=lzw5399/codepiefe:20200410.
# 打印滚动更新中的状态信息
kubectl rollout status deploy/codepie
# 回滚到指定版本,不加--to-version则回滚到上一个版本
kubectl rollout undo deploy/codepie --to-revision= 2
# 查看状态
kubectl describe po
其他章节
Kubernetes系列(一) - kubernetes入门基本概念
kubernetes系列(二) - kubectl的入门操作的更多相关文章
- kubernetes系列05—kubectl应用快速入门
本文收录在容器技术学习系列文章总目录 1.使用kubectl 1.1 介绍 kubectl用于运行Kubernetes集群命令的管理工具. 1.2 语法 kubectl [command] [TYPE ...
- JAVA通信系列二:mina入门总结
一.学习资料 Mina入门实例(一) http://www.cnblogs.com/juepei/p/3939119.html Mina入门教程(二)----Spring4 集成Mina http:/ ...
- Kubernetes系列(二)Service
作者: LemonNan 原文地址: https://juejin.im/post/6863704173931593736 Service Kubernetes 的 Service 可以为一组具有相同 ...
- Kubernetes系列二: 使用kubeadm安装k8s环境
环境 三台主机,一台master,两台node 作为master 作为node节点 作为node节点 每台主机Centos版本使用 CentOS Linux release 7.6.1810 (Cor ...
- 【Kubernetes 系列二】从虚拟机讲到 Kubernetes 架构
目录 什么是虚拟机? 什么是容器? Docker Kubernetes 架构 Kubernetes 对象 基础设施抽象 在认识 Kubernetes 之前,我们需了解下容器,在了解容器之前,我们得先知 ...
- DBProxy 入门到精通系列(二):DBProxy快速入门教程
这里主要用来了解有关DBProxy方面的部署及基本的配置,以及模拟架构 1 DBProxy方面的安装部署 1)基础环境的部署 # .x86_64 Percona-Server-client-.x86_ ...
- 消息中间件系列二:RabbitMQ入门(基本概念、RabbitMQ的安装和运行)
一.基本概念 1. AMQP AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议.支持不同语言和不同的产品 2. 生产者 ...
- Kubernetes系列(五) Ingress
作者: LemonNan 原文地址: https://juejin.im/post/6878269825639317517 Kubernetes 系列 Kubernetes系列(一) Pod Kube ...
- Kubernetes系列(三) Deployment
作者: LemonNan 原文地址: https://juejin.im/post/6865672466939150349/ Kubernetes 系列 Kubernetes系列(一) Pod Kub ...
- Kubernetes系列(四) StatefulSet
作者: LemonNan 原文地址: https://juejin.im/post/6870071267438329869 Kubernetes系列(四) StatefulSet Kubernetes ...
随机推荐
- while循环和do循环、缓冲区、一维数组
缓冲区 输入缓冲区 从键盘得到数据的时候用户输入的数据首先进入输入缓冲区,然后程序从输入缓冲区里获得数字,先进入输入缓冲区的数据必须先处理(类似排队),如果先进入输入缓冲区的数据无法处理,程序就得不到 ...
- Runtime类的简单应用
1.描述 Runtime:描述运行时状态. 在整个JVM中,Runtime类是唯一一个与JVM运行状态有关的类,且默认提供一个该类的实例化对象. 由于在每一个JVM进程中只允许提供一个Runtime类 ...
- OGG异构平台安装部署 MySQL->Oracle
本文旨在从安装部署中了解OGG的知识 一.OGG理论概念 1.1 简单介绍 1.2 同步过程 1.3 Oracle Golden Gate简要体系图 二.测试实验 2.1 实验环境介绍 2.2 源端M ...
- Vue写一个图片轮播组件【转载】
一.理清思路,理解需求和原理 1. 要写一个什么样的轮播? 在点击右侧箭头时,图片向左滑动到下一张:点击左侧箭头时,图片向右滑到下一张 点击下面的小圆点,滑到对应的图片,相应小圆点的样式也发生改变 要 ...
- vmware剪贴板共享不起作用的解决方法-银河麒麟V10服务器版
安装了虚拟机自带的vmware tools,还是不行 试试这样: yum install open-vm-tools yum install open-vm-tools-desktop 或者: sud ...
- [python]Gunicorn加持,轻松提升Flask超7倍性能
前言 之前学习和实际生产环境的flask都是用app.run()的默认方式启动的,因为只是公司内部服务,请求量不高,一直也没出过什么性能问题.最近接管其它小组的服务时,发现他们的服务使用Gunicor ...
- MaskLLM:英伟达出品,用于大模型的可学习`N:M`稀疏化 | NeurIPS'24
来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: MaskLLM: Learnable Semi-Structured Sparsity for Large Language Models 论 ...
- vue之slot和slot-scope
插槽分两类,默认插槽和具名插槽:通俗理解就是默认插槽是没有名称的插槽,具名插槽是有名称的插槽. 何时使用插槽?简单的举个栗子:有2个组件,父组件father,子组件son. 父组件 father &l ...
- AtCoder Beginner Contest 296
Transition Game 给定序列\(a\),\(1<=a_i<=n\),一场游戏有\(n\)个回合,第\(i\)回合时,第一个人先指定一个任意数\(k\),第二个人任意选定一个\( ...
- 专为移动端设计的PDF阅读器-小白PDF阅读器
以前在手机端看扫描版的pdf电子书,要么放大后用手指来回拖动着看,要么将手机横屏看,阅读体验非常差!后来就想自己做一款能自动重排版的pdf阅读器,于是小白PDF阅读器就诞生了! 小白PDF阅读器的重排 ...