Minikube

# 启动集群服务
minikube start # 查看集群服务状态
minikube status

# 登录集群
minikube ssh # 关闭,暂停,恢复,删除集群服务
minikube stop/pause/unpause/delete # 打开dashboard
minikube dashboard # 操作节点(新增/删除/列表)
minikube node add/delete/list # 插件管理
minikube addons list/enable/disable

minikube的服务暴露到宿主机:

minikube 是一款基于 Kubernetes 的定位于快速验证功能的小型容器编排环境。

由于它的定位特性,我们在使用中会发现 minikube 虚拟出了一个 IP 作为自身的节点 IP,该 IP 和宿主机不同。对于 NodePort 类型的 Service 也没有办法通过 127.0.0.1 访问。

Host 内访问

The minikube VM is exposed to the host system via a host-only IP address, that can be obtained with the minikube ip command.

我们必须通过 minikube ip 找到 minikube 的 IP 并通过它来访问 NodePort 类型的 service

另外可以留意到 LoadBalancer 类型的 service 在默认情况下 external IP 为 <pending>,为了要能够访问到 service,需要通过

 minikube tunnel 

建立隧道和服务通信。在执行 minikube tunnel 后,可以发现 external IP 被设置成和 cluster IP 一样的值,这时候就可以通过 <minikube-ip>:<service-port> 来访问 service 了。

Host 外访问

通过 minikube 可以很方便地在本机访问,同时避免了对宿主机端口的占用。但是也带来了另一个问题:无法直接通过访问宿主机的端口来访问 services 进行调试。

比如我的实验机是一台云服务虚拟机,我在自己的电脑上可以访问这台虚拟机,但是不能访问虚拟机上 minikube 暴露的服务。

虽然没有办法让 minikube 直接通过宿主机端口对外暴露 services,但是如果我们把问题换个角度思考,就很容易找到解决办法:如何将一个 service(不特定类型)暴露到本机。

这时候最简单的办法就是通过 kubectl port-forward 转发端口。

假设我有 service/istio-ingressgateway,service 监听 80 端口,我希望暴露在宿主机的 31303 端口,就可以使用以下命令1:·

kubectl port-forward --address 0.0.0.0 -n istio-system service/istio-ingressgateway 31303:80

常见问题:

1.启动插件发生错误

例如minikube  addons enable ingress, 发生错误

解决方式:  https://github.com/kubernetes/minikube/issues/13872

查看对应的pod启动是否启动, 我的就是因为镜像拉取失败导致

2.切换使用的驱动之后,发生启动服务错误的问题

GUEST_PROVISION: Failed to cache ISO: unable to cache ISO:

minikube.exe config set driver virtualbox

解决:

删除之前创建的minikube实例,

先删除~/.minikube/*  然后再重新启动即可

Kubectl

[集群]

# 查看集群信息
kubectl cluster-info

[Node]

# 查看节点
kubectl.exe get node/nodes

[Pod]

# 查看Pod
kubectl get po/pod/pods
-A: 全部
-n: 指定命名空间; kube-system
-o: 输出格式(json/yaml/wide ...), 查看更多信息,例如端口信息可使用wide
-w: 检测观察
-l: 指定标签 key1=value1,key2=values 默认是不显示kube-system下的Pod # 显示详细信息
kubectl describe pod_name
# 打印Pod中容器的日志
kubectl logs pod_name
# 在Pod中容器上执行命令
kubectl exec pod_name

# 进入Pod内的容器
kubectl exec -it nginx-pod /bin/bash

# 删除Pod
kubectl.exe delete -f .\nginx.yaml
kubectl delete pod nginx-pod

# 将本地端口与指定Pod进行端口映射
kubectl.exe port-forward nginx-pod 4000:80

[Service]

# 查看Service
kubectl.exe get service/services
# 清理
kubectl delete service service_name # 查看集群时间
kubectl get events # 查看kubectl配置
kubectl config view # 支持同时指定多个
kubectl get pod,svc -n kube-system

[Deployment]

# 查看Deployment
kubectl.exe get deployment/deployments

# 发布
kubectl apply -f deployment.yaml

# 回滚
kubectl rollout undo deployment [deployment名称]

在 deployment 的资源定义中, spec.strategy.type 有两种选择:

  • RollingUpdate: 逐渐增加新版本的 pod,逐渐减少旧版本的 pod。
  • Recreate: 在新版本的 pod 增加前,先将所有旧版本 pod 删除。

大多数情况下我们会采用滚动更新 (RollingUpdate) 的方式,滚动更新又可以通过 maxSurge 和 maxUnavailable 字段来控制升级 pod 的速率,具体可以详细看官网定义。:

  • maxSurge: 最大峰值,用来指定可以创建的超出期望 Pod 个数的 Pod 数量。
  • maxUnavailable: 最大不可用,用来指定更新过程中不可用的 Pod 的个数上限。


# 查看历史版本

kubectl rollout history deployment hellok8s-deployment

# 回滚到指定版本
kubectl rollout undo deployment/hellok8s-deployment --to-revision=2



# 暴露端口
kubectl expose deployment hello-node --type=LoadBalancer --port=8080

[Namespace]

# 查看命名空间列表
kubectl.exe get ns

[Yaml]

# 查看不同的资源类型对应的apiVersion版本是多少
kubectl api-resources -o wide
列出对应的资源的简写和对应的版本信息
NAME:资源名称
SHORTNAMES:资源名称简写
APIGROUP:就是apiVersion
NAMESPACED:是否需要指定名称空间
KIND:资源类型
VERBS:可用的方法 # 获取指定api组的api资源
kubectl api-resources --api-group apps # 查看支持的所有api
kubectl api-versions # 获取指定资源的版本信息
kubectl explain deployment

Kubelet

Kubeadm

k8s之常用命令的更多相关文章

  1. k8s的常用命令(一)

    常用的kubectl命令   kubectl run kubia --image=luksa/kubia --port=8080 --generator=run/v1   --image 指定镜像 - ...

  2. k8s维护常用命令

    k8s维护 1. 不可调度 kubectl cordon k8s-node-1 kubectl uncordon k8s-node-1 #取消 2.驱逐已经运行的业务容器 kubectl drain ...

  3. K8s (常用命令)

    查看集群信息: [root@kubernetes-master pods]# kubectl cluster-infoKubernetes master is running at http://lo ...

  4. k8s~kubectl常用命令

    查看所有 pod 列表, -n 后跟 namespace, 查看指定的命名空间 kubectl get pod kubectl get pod -n kube kubectl get pod -o w ...

  5. kubernetes(k8s) 的常用命令

    1.查询副本[root@master ~]# kubectl get pods2.删除一个副本[root@master ~]# kubectl get pods 3.启动一个容器副本[root@mas ...

  6. [转帖] K8S 常用命令

    k8s常用命令  原贴地址 查看集群信息: [root@kubernetes-master pods]# kubectl cluster-info kubectl cluster-info展示结果 k ...

  7. k8s常用命令记录

    目录 kubectl常用命令 kubectl get pod -n dev 查看日志 查看pod详情 删除pod 删除job 进入pod里面 查看namespace 创建namespace 删除nam ...

  8. K8s常用命令操作

    K8s常用命令操作 一.kubectl命令补全 1.master安装命令补全,并临时生效 yum install -y bash-completion source /usr/share/bash-c ...

  9. 使用kubectl管理Kubernetes(k8s)集群:常用命令,查看负载,命名空间namespace管理

    目录 一.系统环境 二.前言 三.kubectl 3.1 kubectl语法 3.2 kubectl格式化输出 四.kubectl常用命令 五.查看kubernetes集群node节点和pod负载 5 ...

  10. k8s介绍与常用命令

    kubernetes基础与常用命令 原文地址 https://blog.csdn.net/footless_bird/article/details/125798691 官方文档 https://ku ...

随机推荐

  1. 合合信息亮相“海聚英才”全球创新创业峰会,政企研合力推动AI人才培养

    近日,"聚上海,创未来"第三届"海聚英才"全球创新创业峰会在沪举行,"创新之路:卓越工程师培养交流研讨会"(简称"研讨会" ...

  2. 新题速看!2021阿里、腾讯、字节都在问的SQL数据库笔试题及答案都给你整理好啦!

    ​    前  言 2021到了最后一个月份,年后肯定有蛮多小伙伴需要跳槽换工作,但对于年限稍短的软件测试工程师,难免会需要进行笔试,而在笔试中,基本都会碰到一道关于数据库的大题,今天这篇文章呢,就收 ...

  3. 信息打点-Web应用

    企业信息 小蓝本 https://sou.xiaolanben.com/pc 企业信息 爱企查 https://aiqicha.baidu.com/ 主要看知识产权 网络空间 FOFA https:/ ...

  4. k8s的容器的webssh实现

    Vite2.x + Vue3.x + Xtermjs4 相关信息 编程语言:TypeScript 4.x + JavaScript 构建工具:Vite 2.x 前端框架:Vue 3.x 路由工具:Vu ...

  5. 【赵渝强老师】MySQL高可用架构:MHA

    MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能.MHA 在监控到 master 节 ...

  6. arm64 下内核 crash—— 非法地址

    下面是在实际工作中遇到的一次内核(5.4.110)访问非法内存地址(空指针)导致出错的现场,在这里记录一下简单的分析流程为以后遇到类似的问题作为参考. [ 220.619861] Unable to ...

  7. C# 中的四种整形数据

    // C# 中有四种整数类型 byte short int long byte bMax = byte.MaxValue; /// 255 最大值 byte bMin = byte.MinValue; ...

  8. 0201-PyTorch0.4.0迁移指南以及代码兼容

    0201-PyTorch0.4.0迁移指南以及代码兼容 目录 一.概要 二.合并Tensor和Variable和类 2.1 Tensor中的type()改变了 2.2 什么时候autograd开始自动 ...

  9. ARM 版 Kylin V10 部署 KubeSphere 3.4.0 不完全指南

    前言 知识点 定级:入门级 KubeKey 安装部署 ARM 版 KubeSphere 和 Kubernetes ARM 版麒麟 V10 安装部署 KubeSphere 和 Kubernetes 常见 ...

  10. Spring实现MySQL事务操作

    一.创建数据库表 表名:account 字段:(`id`,`username`,`money`) 二.dao.service层创建业务接口.类 1 public interface UserDao { ...