kubernetes 常用 - alx696/share GitHub Wiki

命令

查看命名空间

$ kubectl get namespaces

删除命名空间

$ kubectl delete namespaces kubernetes-dashboard

查看命名空间的容器

u@nm:~$ kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.100.94.22    <none>        8000/TCP        6m21s
kubernetes-dashboard        NodePort    10.98.189.214   <none>        443:30000/TCP   6m21s

查看命名空间中的pod

$ kubectl get pods --all-namespaces

查看pod日志

$ kubectl logs -n rook-ceph --tail 10 rook-ceph-operator-5698b8bd78-tbqlp

注意:需要明确命名空间。

查看pod信息

u@nm:~$ kubectl describe pod postgres-deployment-8b895b765-tsmb9
Name:           postgres-deployment-8b895b765-tsmb9
Namespace:      default
Priority:       0
Node:           n2/192.168.1.4
Start Time:     Tue, 28 Jul 2020 11:08:27 +0800
Labels:         app=postgres
                pod-template-hash=8b895b765
Annotations:    <none>
Status:         Pending
IP:             
IPs:            <none>
Controlled By:  ReplicaSet/postgres-deployment-8b895b765
Containers:
...

进入Pod

$ kubectl exec -it pod名称 -- /bin/bash

如果Pod中有多个容器,增加--container 容器名称参数即可.

创建

u@nm:~$ kubectl create -f postgres.yaml
persistentvolumeclaim/postgres-pv-claim created
deployment.apps/postgres-deployment created
service/postgres-service created

删除

$ kubectl delete -f postgres.yaml

查看服务

$ kubectl get svc 服务名

查看有状态组

$ kubectl get statefulset 有状态组名

查看部署

u@nm:~$ kubectl get deployments
NAME   READY   UP-TO-DATE   AVAILABLE   AGE
web    1/1     1            1           86m

查看持久存储卷定义

$ kubectl get pvc
NAME                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
postgres-pv-claim   Bound    pvc-e3684c55-a29c-4672-9e38-9b57c26370eb   100Gi      RWO            rook-ceph-block   4m24s

查看存储卷信息

$ kubectl describe pvc

如果遇到存储卷一直处于Pending状态,可以通过上面命令查看信息。

问题解决

命名空间一直Terminating状态

$ kubectl get namespace rook-ceph -o json > temp.json
$ nano temp.json

从finalizers属性数组中删除kubernetes。

$ kubectl proxy
$ kubectl replace --raw "/api/v1/namespaces/rook-ceph/finalize" -f ./temp.json

部署网页界面

复制链接文件中的内容,保存为ui.yaml文件:

$ kubectl apply -f ui.yaml

执行$ kubectl get svc -n kubernetes-dashboard确认端口是否映射。

因为证书问题Chrome默认情况下不让访问,必须以忽略证书的形式启动Chrome:

$ google-chrome --ignore-certificate-errors

访问 https://ip:30000 即可打开网页,创建并输入token。

创建用户并获取token

u@nm:~$ sudo kubectl create serviceaccount  dashboard-admin -n kube-system 
[sudo] password for u: 
serviceaccount/dashboard-admin created
u@nm:~$ sudo kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin  --serviceaccount=kube-system:dashboard-admin
clusterrolebinding.rbac.authorization.k8s.io/dashboard-cluster-admin created
u@nm:~$ kubectl get secrets -n kube-system  | grep dashboard-admin
dashboard-admin-token-dd6wf                      kubernetes.io/service-account-token   3      35s
u@nm:~$ sudo kubectl describe secrets -n kube-system dashboard-admin-token-dd6wf
Name:         dashboard-admin-token-dd6wf
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: 497fdb13-9192-496a-a800-782db2f52502

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6InAzQVVUNngwR0NoQUdkRmFTY0Y1SzdWWnZ2WnNPOGk4Ni00TEEtOEQtY3MifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tZGQ2d2YiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNDk3ZmRiMTMtOTE5Mi00OTZhLWE4MDAtNzgyZGIyZjUyNTAyIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.D4MzP9eKNoac7yxHzzcw4dII4KD4SNx24mO05aT2Dl3AUu4_jQGJbzBJM0VfG51CFlcHzyBowXqoPPIfQhAYSoLfK_HwWVKVXMIT5x0DZ-IYwXKX-6g0nHLNQiQEKf1WR0YLWqV1w8_VHuZhdafyLqv4SjmoTZVKl6eqlQ7jELtAUp444OF7Pqu-eXDpcGpJ2hx4QLdiTNOD-W5sqCTsCeMMnMmCSh-U_JqRWwtrwR1Uuxrqk75KRKDcXiFzkpM3nqZVHwaaKdW5vfB9-vVVl32OSvx80NubD6xXd90DYTHLp1gepVjzwp_09gySBzqHO076XCbOE3rVJWs_U-d8YA

dashboard-admin-token-dd6wf是随机的,根据实际情况替换即可。

⚠️ **GitHub.com Fallback** ⚠️