Kubernetes常用控制命令

Kubernetes常用控制命令

以下命令大部分都可以通过–namespace指定命名空间

1-获取加入集群命令

kubeadm init phase upload-certs --upload-certs

2-修改deployment副本数

kubectl scale deployment/nginx --replicas=3

3-查看pod详细信息

kubectl get pod -o wide

4-查看service信息

kubectl get service -o wide

5-查看服务发现endpoint

kubectl get ep -o wide

6-查看集群所有pod状态详细信息

kubectl get pods --all-namespaces -o wide

7-查看集群状态

kubectl get nodes -o wide

8-给节点设置标签

# host-11 为node的hostname,设置一个work标签
kubectl label node host-11 node-role.kubernetes.io/woker=woker

9-获取所有标签信息

kubectl get node --show-labels

10-查看所有deployment/daemonset/statefulset所有pod

# 以deployment为例
kubectl get deployment

11-强制删除pod(有时候pod没有自动销毁)

# 修改[poname] 和 [namespace] 为实际信息
kubectl delete pod [podname] --force --grace-period=0 -n [namespace]

12-master节点污点设置(配置master为node也在其中)

# 表示配置master为node
kubectl taint node k8s-master1 node-role.kubernetes.io/master-

# 有三种类型,默认为 NoSchedule: 不能被调用
#                PreferNoSchedule: 尽量不调用,表示可以被调用
#                NoExecute: 不仅不能调用,还会驱逐上面已有的pod到其他节点
kubectl taint node k8s-master1 node-role.kubernetes.io/master=:NoSchedule

13-清空pv

# pvname表示实际要清空的pv的name
kubectl patch pv pvname -p '{"metadata":{"finalizers":null}}'

14-无法删除namespace问题

# 需要开启两个终端,一个开启代理,另一个清空删除文件
# 终端1(不要关闭)
kubectl proxy --port=8081

# 终端2
# 生成json文件 test_namespace表示无法删除的namespace
kubectl get namespace test_namespace -o json > tmp.json
# 打开json文件,找到 finalizers 和 spec 字段,并清空内部所有内容
# "finalizers": [],
# "spec": {},

# 执行后就ok了(注意修改文件名和namespace)
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8081/api/v1/namespaces/test_namespace/finalize

15-节点加入失败后,一直无法成功加入问题

报错信息: the default kube-apiserver authorization-mode is “Node,RBAC”; using “Node,RBAC”

# 查看报错的节点在不在etcd配置中,如果在需要修改容器数据
kubectl describe configmaps kubeadm-config -n kube-system  
kubectl get pods -n kube-system | grep etcd

# etcd-k8s-master1为加入失败,通过上面查询到的容器名,需要进入容器内部
kubectl exec -it etcd-k8s-master1 sh -n kube-system  # 在容器内操作
	export ETCDCTL_API=3
	alias etcdctl='etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key'
	etcdctl member list  # 查看没有加入成功列表是否真的存在并记录id
	etcdctl member remove 63bfe36c464c6e3d  # 删除没有加入成功的id
	etcdctl member list  # 再次查看,是否删除成功
	exit  # 退出容器
# 容器内部操作操作如果发生闪退,需要重新进入容器从容器内部开始操作

kubeadm reset  # 副master重置初始化后即可再次加入

16-副master无法使用kubectl命令问题

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile

17-kubernetes 在pod内无法ping通servicename和ClusterIP

1:开启内核支持

cat >> /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
 
sysctl -p

2:开启ipvs支持

  • ubuntu 检查 ipvs 是否启用
    lsmod | grep ip_vs

  • 临时启用
    for i in $(ls /lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i; done

  • 永久启用
    ls /lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*" >> /etc/modules

  • centos开启方式

yum -y install ipvsadm  ipset
 
# 临时生效
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
 
# 永久生效
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

18-查看k8s所有资源

kubectl api-resources --namespaced=true

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值