kubernetes常用命令及使用方法

架构图1
在这里插入图片描述
架构图2
在这里插入图片描述

资源管理方式:
kubectl是k8s命令行工具
1.命令式对象管理
查看pod pod是k8s最小操作单元

#查看所有pod
kubectl get pod
#查看并监听pod运行状态
kubectl get pod -n dev -w
#查看知道pod名查看pod
kubectl get pod nginx-6867cdf567-hd7k2
#查看pod详细信息
kubectl get pod -o wide
#以json格式显示详细信息
kubectl get pod nginx-6867cdf567-hd7k2 -o json
#以yaml格式显示详细信息
kubectl get pod nginx-6867cdf567-hd7k2 -o yaml
#创建命名空间
kubectl create ns dev
#查看命名空间
kubectl get ns
#删除命名空间
kubectl delete ns dev
#查看命名空间中的pod
kubectl get pods -n dev
#查看pod详细信息
kubectl describe pod nginxpod -n dev
#查看命名空间详情
kubectl describe ns dev
#运行pod
kubectl run nginx1 --image=nginx:1.17.1 --port=8081 --namespace dev
#查看pod控制器
kubectl get deployment -n dev
#删除pod 需删除deployment 它是pod控制器 否则直接删pod 还会继续创建 删不掉
kubectl delete deployment nginx  -n dev
#复制文件从pod复制到宿主机namespace/podname:filepath 宿主机路径
kubectl cp default/nginx:root/.bashrc /home/bashrc

日志查看

#查看pod日志
kubectl logs -n kube-system kube-proxy-pqbwv
#如果pod里有多个容器 测需要加参数-c
kubectl logs  pod-nginx-box -n dev -c nginx
#查看k8s日志
journalctl -u kube-scheduler 

journalctl -xefu kubelet  #实时刷新

journalctl -u kube-apiserver 

journalctl -u kubelet |tail

journalctl -xe

查看全部资源

kubectl api-resources

查看节点

kubectl get nodes

常用的操作命令

命令分类 命令 作用
基本命令 create 创建一个资源
基本命令 edit 编辑一个资源
基本命令 get 获取一个资源
基本命令 patch 更新一个资源
基本命令 delete 删除一个资源
基本命令 explain 展示资源文档
运行和调试 run 在集群中运行一个指定的镜像
运行和调试 expose 暴露资源为service
运行和调试 describe 显示资源内部信息
运行和调试 logs 输出容器在pod中的日志
运行和调试 attach 进入运行中的容器
运行和调试 exec 执行容器中的一个命令
运行和调试 cp 在pod内外复制文件
运行和调试 rollout 管理资源的发布
运行和调试 scale 扩(缩)容pod的数量
运行和调试 autoscale 自动调整pod数量
高级命令 apply 通过文件对资源进行配置
高级命令 lable 更新资源上的标签
其他命令 cluster-info 显示集群信息
其他命令 version 显示当前server和client的版本

命令式对象配置
1.创建一个nginx.yml

# 创建一个dev的namespace
apiVersion: v1 
kind: Namespace 
metadata: 
	name: dev
---
# 在dev命名空间中创建一个pod
apiVersion: v1 
kind: Pod 
metadata: 
 name: nginxpod # pod的名字
 namespace: dev
spec: 
 containers: 
 - name: nginx-containers   # pod中容器的名字 
   image: nginx:1.17.1
#从yaml文件创建
kubectl create -f nginx.yml
#从yaml文件删除
kubectl delete -f nginx.yml

3声明式对象配置

#使用apply操作资源 如果没有此pod则创建 如果存在pod则更新 
kubectl apply -f nginx.yml
#查看yaml文件是否正确
kubectl apply --validate -f XXX.yaml 
#删除与上边删除一致
kubectl delete -f nginx.yml
#从文件更新pod
kubectl replace -f nginx.yaml

想要让节点执行kubectl命令
需要把master主机上 .kube目录复制到节点

scp -r ~/.kube node1:~/

标签的使用

#查看dev空间下 所有pod标签
kubectl get pod -n dev --show-labels
#给pod打标签
kubectl label pod nginxpod -n dev version=1.0
#更新标签也是覆盖标签
kubectl label pod nginxpod -n dev version=3.0 --overwrite
#标签选择器 查询标签 在同一个命名空间中
kubectl get pods -l "version=3.0" -n dev --show-labels
#标签选择器 不等于此标签输出
kubectl get pods -l "version!=3.0" -n dev --show-labels
#删除标签
kubectl label pod nginxpod -n dev version-

注解的使用(存储扩展信息以及结构化数据 例如json等数据)

#创建个annotate
k annotate pods deploy-nginx-db95fcb96-kfdl2 my-annotate='my conmment, ok' -n test

deployment pod控制器 pod都是有pod控制器管理创建的

#创建deployment --replicas=3参数 创建3个pod
kubectl create deployment deploy-nginx --image=nginx --replicas=3
#查看deployment
kubectl get deployment -n dev
#查看详情
kubectl describe deploy nginx  -n dev
#删除
kubectl delete deploy nginx -n dev

使用service对外提供服务也就是转发请求给pod,service自动实现负载均衡

#创建service 暴露deployment对外服务 --name=svc-nginx1服务名 --type=ClusterIP 类型是集群ip只能在集群内部访问  --port=80 服务对外端口 --target-port=80 对应pod端口 
kubectl expose deployment nginx --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n dev
#查看service
kubectl get svc -n dev
#创建NodePort类型service 外部可访问
kubectl expose deployment nginx --name=svc-nginx2 --type=NodePort --port=80 --target-port=80 -n dev
#删除service
kubectl delete svc svc-nginx2 -n dev

设置node污点驱除pod

#给node1设置污点 污点有三类 
# PreferNoSchedule 尽量不要往这个节点调度
# NoSchedule 不要往这个节点调度 已存在的就在这了
# NoExecute 不要往这个节点调度  已存在的pod关闭
kubectl taint nodes node1 tag=tai:PreferNoSchedule
# 取消掉污点
kubectl taint nodes node1 tag:PreferNoSchedule-
# 取消全部污点
kubectl taint nodes node1 tag-

pod设置容忍可加入污点节点

#yaml 里添加容忍参数
spec:
  containners:
  - name: nginx
    image: nginx:1.17.1
  tolerations: #添加容忍
  - key: "tag" #要容忍节点key 与上边污点key相对应
    operator: "Equal" #操作符
    value: "tai" #容忍节点的value
    effect: "NoExecute" #添加容忍规则 这里必须和标记的污点规则相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值