Kubernetes常用操作命令

kubectl log  //查看日志

$ kubectl log myapp-pod –c test

kubectl get pods查看pod列表

[root@node-1 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-app-demo-7bdfd97dcd-7t72x 1/1 Running 0 28m
nginx-app-demo-7bdfd97dcd-hsrft 1/1 Running 0 28m
nginx-app-demo-7bdfd97dcd-qtbzd 1/1 Running 0 28m

kubectl exec –it 进入容器

[root@node- ~]# kubectl exec -it nginx-app-demo-7bdfd97dcd-7t72x /bin/bash
设置站点内容
[root@nginx-app-demo-7bdfd97dcd-7t72x:/# echo "web1" >/usr/share/nginx/html/index.html

kubectl get pod //同上pods

kubectl get pod –n kube-system //-n根据命名空间查找

kubectl get pod –n kube-system –o wide //查看更详细的信息

kubectl get pods -o wide //获取pod的ip地址等详细信息

[root@node- ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-app-demo-7bdfd97dcd-7t72x / Running 34m 10.244.2.4 node- <none> <none>
nginx-app-demo-7bdfd97dcd-hsrft / Running 34m 10.244.1.2 node- <none> <none>
nginx-app-demo-7bdfd97dcd-qtbzd / Running 34m 10.244.1.3 node-

curl http://,,,,访问pod IP

[root@node- ~]# curl http://10.244.2.4
web1

kubectl expose 暴露service

暴露service,其中port表示代理监听端口,target-port代表是容器的端口,type设置的是service的类型

[root@node- ~]# kubectl expose deployment nginx-app-demo --name nginx-service-demo \
--port= \
--protocol=TCP \
--target-port= \
--type ClusterIP
service/nginx-service-demo exposed

kubectl get services查看service列表

查看service列表,显示有两个,kubernetes为默认集群创建的service
[root@node- ~]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> /TCP 29h
nginx-service-demo ClusterIP 10.102.1.1 <none> /TCP 2m54s

kubectl describe services <> 查看service详情

查看service详情,可以看到Labels的Seletor和前面Deployments设置一致,Endpoints将pod组成一个列表
[root@node- ~]# kubectl describe services nginx-service-demo
Name: nginx-service-demo #名称
Namespace: default #命名空间
Labels: run=nginx-app-demo #标签名称
Annotations: <none>
Selector: run=nginx-app-demo #标签选择器
Type: ClusterIP #service类型为ClusterIP
IP: 10.102.1.1 #服务的ip,即vip,集群内部会自动分配一个
Port: <unset> /TCP #服务端口,即ClusterIP对外访问的端口
TargetPort: /TCP #容器端口
Endpoints: 10.244.1.2:,10.244.1.3:,10.244.2.4: #访问地址列表
Session Affinity: None #负载均衡调度算法
Events: <none>

访问service的地址,可以访问的内容可知,service自动实现了pods的负载均衡,调度策略为轮询,为何?因为service默认的调度策略Session Affinity为None,即是轮训,可以设置为ClientIP,实现会话保持,相同客户端IP的请求会调度到相同的pod上。

[root@node- ~]# curl http://10.102.1.1
web3

ClusterIP原理深入剖析,service后端实现有两种机制:iptables和ipvs,环境安装采用iptables,iptables通过nat的链生成访问规则,KUBE-SVC-R5Y5DZHD7Q6DDTFZ为入站DNAT转发规则,KUBE-MARK-MASQ为出站转发

[root@node-1 ~]# iptables -t nat -L -n
Chain KUBE-SERVICES (2 references)
target prot opt source destination
KUBE-MARK-MASQ tcp -- !10.244.0.0/16 10.102.1.1 /* default/nginx-service-demo: cluster IP */ tcp dpt:80
KUBE-SVC-R5Y5DZHD7Q6DDTFZ tcp -- 0.0.0.0/0 10.102.1.1 /* default/nginx-service-demo: cluster IP */ tcp dpt:80 
出站:KUBE-MARK-MASQ源地址段不是10.244.0.0/16访问10.102.1.1的目标端口80时,将请求转发给KUBE-MARK-MASQ链
入站:KUBE-SVC-R5Y5DZHD7Q6DDTFZ任意原地址访问目标10.102.1.1的目标端口80时

查看入站请求规则,入站请求规则将会映射到不同的链,不同链将会转发到不同pod的ip上。

1. 查看入站规则KUBE-SVC-R5Y5DZHD7Q6DDTFZ,请求将转发至三条链
[root@node- ~]# iptables -t nat -L KUBE-SVC-R5Y5DZHD7Q6DDTFZ -n
Chain KUBE-SVC-R5Y5DZHD7Q6DDTFZ ( references)
target prot opt source destination
KUBE-SEP-DSWLUQNR4UPH24AX all -- 0.0.0.0/ 0.0.0.0/ statistic mode random probability 0.33332999982
KUBE-SEP-56SLMGHHOILJT36K all -- 0.0.0.0/ 0.0.0.0/ statistic mode random probability 0.50000000000
KUBE-SEP-K6G4Z74HQYF6X7SI all -- 0.0.0.0/ 0.0.0.0/
2. 查看实际转发的三条链的规则,实际映射到不同的pod的ip地址上
[root@node- ~]# iptables -t nat -L KUBE-SEP-DSWLUQNR4UPH24AX  -n
Chain KUBE-SEP-DSWLUQNR4UPH24AX ( references)
target prot opt source destination
KUBE-MARK-MASQ all -- 10.244.1.2 0.0.0.0/
DNAT tcp -- 0.0.0.0/ 0.0.0.0/ tcp to:10.244.1.2:
 
[root@node-1 ~]# iptables -t nat -L KUBE-SEP-56SLMGHHOILJT36K  -n
Chain KUBE-SEP-56SLMGHHOILJT36K (1 references)
target prot opt source destination
KUBE-MARK-MASQ all -- 10.244.1.3 0.0.0.0/0
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp to:10.244.1.3:80

  

[root@node-1 ~]# iptables -t nat -L KUBE-SEP-K6G4Z74HQYF6X7SI   -n
Chain KUBE-SEP-K6G4Z74HQYF6X7SI (1 references)
target prot opt source destination
KUBE-MARK-MASQ all -- 10.244.2.4 0.0.0.0/0
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0

kubectl get pod –n kube-system –w 时时监视

kubectl get deployment

kubectl create创建pod  //命令式对象配置

$ kubectl create –f pod.yaml   //-f应该是从file或stdin创建

kubectl get pods 查看pod列表

kubectl delete pods <pod name> 删除pod

$ kubectl delete pods nginx

kubectl run   //命令式命令

https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/

通过创建 Deployment 对象来运行 nginx 容器的实例:

kubectl run nginx --image nginx

使用不同的语法来达到同样的上面的效果:

kubectl create deployment nginx --image nginx

创建在配置文件中定义的对:

kubectl create -f nginx.yaml

删除在两个配置文件中定义的对象:

kubectl delete -f nginx.yaml -f redis.yaml

通过覆盖实时配置来更新配置文件中定义的对象:

kubectl replace -f nginx.yaml

与命令式命令相比的优点:

  • 对象配置可以存储在源控制系统中,比如 Git。
  • 对象配置可以与流程集成,例如在推送和审计之前检查更新。
  • 对象配置提供了用于创建新对象的模板。

与命令式命令相比的缺点:

  • 对象配置需要对对象架构有基本的了解。
  • 对象配置需要额外的写 YAML 文件的步骤。

kubernates常用命令的更多相关文章

  1. Linux 常用命令(持续补充)

    常用命令: command &:将进程放在后台执行 ctrl + z:暂停当前进程 并放入后台 jobs:查看当前后台任务 bg( %id):将任务转为后台执行 fg( %id):将任务调回前 ...

  2. LVM基本介绍与常用命令

    一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适 ...

  3. Linux学习笔记(一):常用命令

    经过统计Linux中能够识别的命令超过3000种,当然常用的命令就远远没有这么多了,按照我的习惯,我把已经学过的Linux常用命令做了以下几个方面的分割: 1.文件处理命令 2.文件搜索命令 3.帮助 ...

  4. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  5. 【原】npm 常用命令详解

    今年上半年在学习gulp的使用,对npm的掌握是必不可少的,经常到npm官网查询文档让我感到不爽,还不如整理了一些常用的命令到自己博客上,于是根据自己的理解简单翻译过来,终于有点输出,想学习npm这块 ...

  6. npm常用命令

    npm常用命令 环境:win7 npm 是什么 NPM(node package manager),通常称为node包管理器.顾名思义,它的主要功能就是管理node包,包括:安装.卸载.更新.查看.搜 ...

  7. Git 常用命令

    一.初始環境配置 git config --global user.name "John Doe"git config --global user.email johndoe@ex ...

  8. linux iptables常用命令之配置生产环境iptables及优化

    在了解iptables的详细原理之前,我们先来看下如何使用iptables,以终为始,有可能会让你对iptables了解更深 所以接下来我们以配置一个生产环境下的iptables为例来讲讲它的常用命令 ...

  9. Linux常用命令(一)

    Linux常用命令 1. pwd查看当前路径(Print Working Directory)    [root@CentOS ~]# pwd/root 2. cd .. 返回上一级 .. 表示上一级 ...

随机推荐

  1. Log4j模板

    log4j.rootLogger=DEBUG, A1,A2 log4j.appender.A1.MaxFileSize=1kb #10个备份 log4j.appender.A1.MaxBackupIn ...

  2. 动态规划-LCS-Uncrossed Lines

    2020-02-11 21:14:18 问题描述: 问题求解: 本质就是LCS. public int maxUncrossedLines(int[] A, int[] B) { int len1 = ...

  3. [二分] Codefoces Anton and Making Potions

    Anton and Making Potions time limit per test 4 seconds memory limit per test 256 megabytes input sta ...

  4. 企业级自动化部署方案——ansible实现tomcat自动安装和配置

    共耗时10多个小时 思路一 总体设计 ansible-playbook目录结构 [root@ansible ~]# tree /etc/ansible/roles/tomcat /etc/ansibl ...

  5. OpenCV-Python 图像的几何变换 | 十四

    目标 学习将不同的几何变换应用到图像上,如平移.旋转.仿射变换等. 你会看到这些函数: cv.getPerspectiveTransform 变换 OpenCV提供了两个转换函数cv.warpAffi ...

  6. ​知识图谱里的知识存储:neo4j的介绍和使用

      一般情况下,我们使用数据库查找事物间的联系的时候,只需要短程关系的查询(两层以内的关联).当需要进行更长程的,更广范围的关系查询时,就需要图数据库的功能. 而随着社交.电商.金融.零售.物联网等行 ...

  7. 学霸双胞胎开源斯坦福CS 221人工智能备忘录,图文并茂看懂反射、状态、变量、逻辑...

    一份斯坦福CS 221人工智能备忘录最近登上了GitHub Trending. 这份备忘录解释了课程中的许多名词.公式和原理,动图.文字.表格并茂,作者之一还是官方助教,堪称CS 221最佳学习笔记. ...

  8. React Hooks Typescript 开发的一款 H5 移动端 组件库

    CP design 使用 React hooks Typescript 开发的一个 H5 移动端 组件库 English | 简体中文 badge button icon CP Design Mobi ...

  9. 数据挖掘入门系列教程(八)之使用神经网络(基于pybrain)识别数字手写集MNIST

    目录 数据挖掘入门系列教程(八)之使用神经网络(基于pybrain)识别数字手写集MNIST 下载数据集 加载数据集 构建神经网络 反向传播(BP)算法 进行预测 F1验证 总结 参考 数据挖掘入门系 ...

  10. 常见SQL语句和SQL基础知识

    引自:http://blog.csdn.net/u012467492/article/details/46790205 SQL语句考察(一) 1.查询出每门课都大于80 分的学生姓名 name   k ...