K8S常用命令

1、master查看待审批node信息:

[k8s@database_1 dns]$ kubectl get csr
NAME                                                   AGE       REQUESTOR           CONDITION
node-csr-QOrUGcKDtAip5-k0MU3KFoY4hD0It3wXRh2uGURBa4U   26m       kubelet-bootstrap   Approved,Issued
node-csr-u6GJPmKrahi21mOeiQikVYO4ZmE4Aq-NnlK_PR2dTbI   6m        kubelet-bootstrap   Pending

2、审批node请求:

[k8s@database_1 dns]$ kubectl certificate approve node-csr-u6GJPmKrahi21mOeiQikVYO4ZmE4Aq-NnlK_PR2dTbI
certificatesigningrequest.certificates.k8s.io/node-csr-u6GJPmKrahi21mOeiQikVYO4ZmE4Aq-NnlK_PR2dTbI approved

3、查看node状态:

[k8s@database_1 dns]$ kubectl get node
NAME           STATUS    ROLES     AGE       VERSION
10.10.75.176   Ready     <none>    58s       v1.11.0
10.10.78.19    Ready     <none>    4h        v1.11.0
10.10.78.58    Ready     <none>    22m       v1.11.0

4、给新增node添加角色并绑定:
[k8s@database_1 dns]$ kubectl create clusterrolebinding kubelet-node-clusterbinding176 --clusterrole=system:node --user=system:node:10.10.75.176
clusterrolebinding.rbac.authorization.k8s.io/kubelet-node-clusterbinding176 created

5、给节点加标签

[root@k8s-master-0002 ~]# kubectl label nodes k8s-app-0001 node-role.kubernetes.io/node=
node/k8s-app-0001 labeled
[root@k8s-master-0002 ~]# kubectl get nodes
NAME                  STATUS   ROLES        AGE     VERSION
k8s-app-0001          Ready    app,node     18h     v1.14.0
k8s-app-0002          Ready    app          18h     v1.14.0
k8s-components-0001   Ready    components   17h     v1.14.0
k8s-components-0002   Ready    components   17h     v1.14.0
k8s-components-0003   Ready    components   17h     v1.14.0
k8s-master-0001       Ready    master       5d22h   v1.14.0
k8s-master-0002       Ready    master       5d22h   v1.14.0
k8s-master-0003       Ready    master       5d22h   v1.14.0

6.获取所有正在运行容器的镜像
0x01 列举所有命名空间中的容器
使用命令kubectl get pods --all-namespaces获取所有命名空间中的所有Pod。
使用-o jsonpath={..image}格式化输出,使其仅仅包含容器镜像名称,这将递归解析返回的json对象中的image字段。
获取更多关于如何使用jsonpath的信息,参见jsonpath reference。
使用标准工具tr、sort和uniq格式化输出。
使用tr以新行替换空格
使用sort对结果排序
使用uniq统计镜像数量

kubectl get pods --all-namespaces -o jsonpath="{..image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c

此外,另一种方法是使用image字段在Pod内的绝对路径。这能够保证获取正确的字段,即使该字段名称在Pod中重复多次,例如,在一个给定的项目中,可能会有很多字段名称都是name:
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}"

上述的jsonpath按以下方式解析:
.items[]:针对每一个返回的值
.spec:获取spec
.containers[
]:针对每个容器
.image:获取镜像

0x02 通过Pod列举容器
我们可以使用range操作进一步控制输出格式,以此来逐个迭代每一个元素:

kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |\
sort

0x03 列举Pod标签过滤的容器
如果目标是那些匹配特定标签的Pod,那么可以使用-l标记。下面指令仅仅匹配含有标签app=nginx的Pod:
kubectl get pods --all-namespaces -o=jsonpath="{..image}" -l app=nginx

0x04 列举Pod命名空间过滤的容器
如果目标是那些匹配特定命名空间的Pod,那么可以使用--namespace标记。下面指令仅仅匹配存在于kube-system命名空间中的Pod:
kubectl get pods --namespace kube-system -o jsonpath="{..image}"

0x05 使用go-template列举容器
作为jsonpath的另一个选择,Kubectl支持使用go-template来格式化输出内容:
kubectl get pods --all-namespaces -o go-template --template="{{range .items}}{{range .spec.containers}}{{.image}} {{end}}{{end}}"

kubeadm添加新master或node

  1. 首先在master上生成新的token
 [root@cn-hongkong nfs]# kubeadm token create --print-join-command
kubeadm join 172.31.182.156:6443 --token ortvag.ra0654faci8y8903     --discovery-token-ca-cert-hash sha256:04755ff1aa88e7db283c85589bee31fabb7d32186612778e53a536a297fc9010

2)在master上生成用于新master加入的证书

[root@cn-hongkong k8s_yaml]# kubeadm init phase upload-certs --experimental-upload-certs
[upload-certs] Storing the certificates in ConfigMap "kubeadm-certs" in the "kube-system" Namespace
[upload-certs] Using certificate key:
f8d1c027c01baef6985ddf24266641b7c64f9fd922b15a32fce40b6b4b21e47d
  1. 添加新node
    kubeadm join 172.31.182.156:6443 --token ortvag.ra0654faci8y8903 --discovery-token-ca-cert-hash sha256:04755ff1aa88e7db283c85589bee31fabb7d32186612778e53a536a297fc9010

  2. 添加新master,把步骤2)中生成的certificate key加到--experimental-control-plane --certificate-key后。

kubeadm join 172.31.182.156:6443  --token ortvag.ra0654faci8y8903 \
  --discovery-token-ca-cert-hash sha256:04755ff1aa88e7db283c85589bee31fabb7d32186612778e53a536a297fc9010 \
  --experimental-control-plane --certificate-key f8d1c027c01baef6985ddf24266641b7c64f9fd922b15a32fce40b6b4b21e47d
posted @ 2020-09-27 20:00  Ethan_x  阅读(422)  评论(0编辑  收藏  举报