K8s常用命令(一)

一、 查看集群信息

1.1、 集群健康
#查看集群信息

kubectl cluster-info

看整体的全部信息

kubectl cluster-info dump

1.2、 组件健康

systemctl status kube-apiserver
systemctl status kubelet
systemctl status kube-proxy
systemctl status kube-scheduler
systemctl status kube-controller-manager
systemctl status docker

2、 资源对象管理

2.1、命令式资源对象管理直接通过命令执行增删改查的操作 除了删除资源外,下面的命令能用apply代替,k8s建议尽量使用apply命令。

创建资源

Kubectl create deployment my-dep --image=busybox
Kubectl expose rc nginx --port=80 --target-port=8000

更新资源

Kubectl scale –replicas=3 -f foo.yaml
Kubectl annotate pods foo description=’my frontend’
Kubectl label –overwrite pods foo status=unhealthy

删除资源

Kubectl delete -f xxx.yaml
Kubectl delete pod,service baz foo
Kubectl delete pods,services -l name=myLabel
Kubectl delete pod foo –-grace-period=0 –force

例子

Kubectl create deployment dp1 –-image=harbor.od.com/nginx:curl
Kubectl expose deployment dp1 –-port=80

Kubectl run dp2 --image=nginx:curl –port=80

2.2、声明式资源对象管理
#kubectl apply命令是最能体现对集群资源的声明式管理的命令
#所有对集群的增改操作,都能用apply命令完成,一切取决于后面的配置文件:
#所有配置文件中的资源找集群中不存在,则创建这个资源。
#如果配置文件中的资源在集群中已存在,则根据配置对资源字段进行更新

部署一个goweb应用,默认pod数为4个

Grep replicas deployment-goweb.yaml
Replicas:4

使用apply创建资源

kubectl apply -f deployment-goweb.yaml
kubectl get po

#修改为2个

Sed -ri ‘s/4$/2/g’ deployment-goweb.yaml
Grep replicas deployment-goweb.yaml
Replicas:2

使用apply更新资源

Kubectl apply -f deployment-goweb.yaml
Kubectl get po

pod数已更新为2个

可以看到,同一个kubectl apply -f deployment-goweb.yaml 命令,可以用来创建资源也可以更新资源。
简单来说,apply命令的作用就是一个:使集群的实际状态朝用户声明的期望状态变化,而用户不用关心具体要进行怎样的增删改操作才能达到这个期望状态,也即kubernetes的声明式资源管理。

声明式操作 – 创建和删除

Kubectl create -f dashboard-controller.yaml
Kubectl apply -f dashboard-dashboard.yaml
Kubectl delete -f dashboard-dashboard.yaml

2.3、使用dashboard
#token方式登录
#kubeconfig方式登录

3、显示配置
#显示当前kubectl的配置信息
Kubectl config view

4、导出定义

Kubectl get po pod-redis -o yaml
Kubectl get po pod-redis -o json

5、日志操作

#查看日志
#查看指定镜像的日志

Kubectl logs -f kube-dns-699984412-vzlq6 -n kube-system

Kubectl logs --tail=10 nginx

#指定其中一个查看日志

Kubectl logs kube-dns-699984412 -n5zkz -c kubedns -–namespace=kube-system
Kubectl logs kube-dns-699984412 -vzlq6 -c dnsmasq -–namespace=kube-system
Kubectl logs kube-dns-699984412 -mqb14 -c sidecar –-namespace=kube-system

看日志

Journalctl -f

6、设置默认storageclass

#设置storageclass为默认 Kubectl patch storageclass -p ‘{“metadata”:
{“annotations”:{“storageclass.kubernetes.io/is-default-class”:”true”}}}’
7、帮助
##kubectl官方命令行工具
#与apiserver通信,将用户输入命令转化为apiserver能识别的信息
#管理k8s各种资源

Kubectl –-version
Kubectl -–help

##kubectl explain命令输出资源对应的属性字段及定义

Kubectl explain deployment.spec.selector
Kubectl explain pod.spec.containers.ports.containerport

二、 操作资源对象

操作ns

1.1、 常规操作

Kubectl create ns app
Kubectl get ns
Kubectl get namespaces
Kubectl delete ns app

1.2、 使用ns

Kubectl get all -n default
Kubectl get all -n kube-system
Kubectl get all -n kube-public

2、 操作node
2.1、查看node
#查看nodes节点

Kubectl get nodes

2.2、隔离与恢复

Kubectl cordon [nodeid] 标记节点不接受调度
Kubectl uncordon [nodeid] 恢复节点可以接收调度

#Node的隔离

Kubectl cordon k8s-node1

#Node的恢复

Kubectl uncordon k8s-node1

2.3、驱逐pod
Kubectl drain [nodeid] 驱赶该节点上运行的所有容器到其他可用节点

2.4、打标签

为节点增加label

Kubectl label nodes 10.126.72.31 points=test

3、 操作deployment
3.1、常规操作

查询dp

Kubectl get deployment -n kube-public

创建dp

Kubectl create deployment dp1 --image=harbor.od.com/public/nginx:1.7.9 -n kube-public
kubectl run dp2 --image=nginx:1.17.1 --port=80 --namespace dev

删除dp

kubectl delete deployment dp1 -n kube-public

查询dp

kubectl describe deployment dp1 -n kube-public

3.2、扩容dp

扩容dp: 默认创建时只有一个pod资源

kubectl scale deployment dp1 --replicas=2 -n kube-public

3.3、暴露服务

使用dp:暴露服务

kubectl expose deployment dp1 --port=80 -n kube-public

3.5、设置镜像

kubectl set image deploy [deployment-name] [old-image-name]=[new-image-name]为部署设置镜像

3.6、其他pod控制器

kubectl delete rs --all
kubectl delete rc --all

操作pod

4.1、查询容器

kubectl get pod --all-namespaces
kubectl get pod -n kube-public
kubectl get pod -n kube-public -o wide

通过label查询

kubectl get pods -l app=nginx -o yaml |grep podIP

4.2、删除容器

删除所有pods

kubectl delete pods --all

删除所有包含某个lable的pod和service

kubectl delete pods,service -l name=<label-name>

强制删除Terminating状态的pod

kubectl delete deployment kafka -l --force --grace-period=0

4.3进入退出

#进入容器

kubectl exec -it nginx-dp-xxx bash -n kube-public
Docker exec -it 530e bash

#退出容器

4.4、 执行容器命令

kubectl exec kube-dns-699984412 -vz1q6 -n kube-system -c kubedns ifconfig
kubectl exec kube-dns-699984412 -vz1q6 -n kube-system -c kubedns ifconfig /bin/bash

kubectl exec kube-dns-4140740281-pfjhr -c etcd --namespace=kube-system etcdctl get /skydns/local/cluster/default/redis-master

#无线循环命令

while true; do sleep 1; done

查看指定pods的环境变量

kubectl exec xxx env

4.5、文件操作
kubectl cp 用于pod和外部的文件交换

在pod中创建一个文件message.log

kubectl exec mysql-xxx --echo “hello world” > /opt/aa.log
kubectl cp aa.log mysql-xxxx:/opt/aa.log

4.6、监控pod

#定时监控

watch -n 1 “kubectl get pod |grep -C 8 nginx-ds”

当我们发现一个pod迟迟无法创建时,描述一个pods

kubectl describe pod xxx

5、 操作service

#Docker主机开启ipv4/ipv6转发
#当无法curl时,检查宿主机的内核中是否开启了iPv4转发功能

cat /proc/sys/net/ipv4/ip_forward 
0
echo “1” >!$
echo “1” >/proc/sys/net/ipv4/ip_forward

cat /proc/sys/net/ipv4/ip_forward
1

5.1、命令暴露dp为服务

Ipvsadm -Ln
kubectl expose deployment nginx-dp --port=80 -n kube-public
kubectl get svc -n kube-public

#CLUSTER-IP=192.168.27.1

curl 192.168.27.1

#通过ipvs提供了一个稳定的接入点cluster-ip
#k8s集群里的运算节点上能够访问:ping cluster-ip

Ipvsadm -Ln
kubectl describe svc nginx-dp -n kube-public
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小竹吟風

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值