kubernates常用命令
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常用命令的更多相关文章
- Linux 常用命令(持续补充)
常用命令: command &:将进程放在后台执行 ctrl + z:暂停当前进程 并放入后台 jobs:查看当前后台任务 bg( %id):将任务转为后台执行 fg( %id):将任务调回前 ...
- LVM基本介绍与常用命令
一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适 ...
- Linux学习笔记(一):常用命令
经过统计Linux中能够识别的命令超过3000种,当然常用的命令就远远没有这么多了,按照我的习惯,我把已经学过的Linux常用命令做了以下几个方面的分割: 1.文件处理命令 2.文件搜索命令 3.帮助 ...
- git常用命令(持续更新中)
git常用命令(持续更新中) 本地仓库操作git int 初始化本地仓库git add . ...
- 【原】npm 常用命令详解
今年上半年在学习gulp的使用,对npm的掌握是必不可少的,经常到npm官网查询文档让我感到不爽,还不如整理了一些常用的命令到自己博客上,于是根据自己的理解简单翻译过来,终于有点输出,想学习npm这块 ...
- npm常用命令
npm常用命令 环境:win7 npm 是什么 NPM(node package manager),通常称为node包管理器.顾名思义,它的主要功能就是管理node包,包括:安装.卸载.更新.查看.搜 ...
- Git 常用命令
一.初始環境配置 git config --global user.name "John Doe"git config --global user.email johndoe@ex ...
- linux iptables常用命令之配置生产环境iptables及优化
在了解iptables的详细原理之前,我们先来看下如何使用iptables,以终为始,有可能会让你对iptables了解更深 所以接下来我们以配置一个生产环境下的iptables为例来讲讲它的常用命令 ...
- Linux常用命令(一)
Linux常用命令 1. pwd查看当前路径(Print Working Directory) [root@CentOS ~]# pwd/root 2. cd .. 返回上一级 .. 表示上一级 ...
随机推荐
- Log4j模板
log4j.rootLogger=DEBUG, A1,A2 log4j.appender.A1.MaxFileSize=1kb #10个备份 log4j.appender.A1.MaxBackupIn ...
- 动态规划-LCS-Uncrossed Lines
2020-02-11 21:14:18 问题描述: 问题求解: 本质就是LCS. public int maxUncrossedLines(int[] A, int[] B) { int len1 = ...
- [二分] Codefoces Anton and Making Potions
Anton and Making Potions time limit per test 4 seconds memory limit per test 256 megabytes input sta ...
- 企业级自动化部署方案——ansible实现tomcat自动安装和配置
共耗时10多个小时 思路一 总体设计 ansible-playbook目录结构 [root@ansible ~]# tree /etc/ansible/roles/tomcat /etc/ansibl ...
- OpenCV-Python 图像的几何变换 | 十四
目标 学习将不同的几何变换应用到图像上,如平移.旋转.仿射变换等. 你会看到这些函数: cv.getPerspectiveTransform 变换 OpenCV提供了两个转换函数cv.warpAffi ...
- 知识图谱里的知识存储:neo4j的介绍和使用
一般情况下,我们使用数据库查找事物间的联系的时候,只需要短程关系的查询(两层以内的关联).当需要进行更长程的,更广范围的关系查询时,就需要图数据库的功能. 而随着社交.电商.金融.零售.物联网等行 ...
- 学霸双胞胎开源斯坦福CS 221人工智能备忘录,图文并茂看懂反射、状态、变量、逻辑...
一份斯坦福CS 221人工智能备忘录最近登上了GitHub Trending. 这份备忘录解释了课程中的许多名词.公式和原理,动图.文字.表格并茂,作者之一还是官方助教,堪称CS 221最佳学习笔记. ...
- React Hooks Typescript 开发的一款 H5 移动端 组件库
CP design 使用 React hooks Typescript 开发的一个 H5 移动端 组件库 English | 简体中文 badge button icon CP Design Mobi ...
- 数据挖掘入门系列教程(八)之使用神经网络(基于pybrain)识别数字手写集MNIST
目录 数据挖掘入门系列教程(八)之使用神经网络(基于pybrain)识别数字手写集MNIST 下载数据集 加载数据集 构建神经网络 反向传播(BP)算法 进行预测 F1验证 总结 参考 数据挖掘入门系 ...
- 常见SQL语句和SQL基础知识
引自:http://blog.csdn.net/u012467492/article/details/46790205 SQL语句考察(一) 1.查询出每门课都大于80 分的学生姓名 name k ...