ZBLOG

K8S命令大全

以下是常用的Kubernetes命令:

节点相关命令

查看节点列表

kubectl get nodes

查看节点详细信息

kubectl describe node <node-name>

删除节点(不建议使用)

kubectl delete node <node-name>

命名空间相关命令

创建命名空间

kubectl create namespace <namespace-name>

列出所有命名空间

kubectl get namespaces

切换到指定的命名空间

kubectl config set-context $(kubectl config current-context) --namespace=<namespace-name>

Pod 相关命令

创建一个 Pod

通过yaml文件创建一个Pod:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: nginx
      ports:
        - containerPort: 80
          protocol: TCP

然后执行以下命令:

”`shell script

kubectl apply -f pod.yaml

pod/my-pod created


### 获取 Pod 列表

查看当前 namespace 中所有的 pod:

```shell script
# kubectl get pods 
NAME     READY   STATUS    RESTARTS   AGE 
my-pod   1/1     Running   0          2m15s  

查看所有的 pod:

”`shell script

kubectl get pods –all-namespaces

NAMESPACE NAME READY STATUS RESTARTS AGE default my-pod 11 Running 0 3m45s
kube-system coredns-f9fd979d6-4ffjv 11 Running 0 3h23m
kube-system coredns-f9fd979d6-w7q5x 11 Running 0 3h23m
kube-system etcd-k8s-master 11 Running 0 3h23m
kube-system kube-apiserver-k8s-master 11 Running 0 3h23m
kube-system kube-controller-manager-k8s-master 11 Running 0 3h23m
kube-system kube-flannel-ds-amd64-czq2t 11 Running 0 3h19m
kube-system kube-proxy-v6gpb 11 Running 0 3h23m
kube-system kube-scheduler-k8s-master 11 Running 0 3h23m


### 获取 Pod 的详细信息

```shell script
# kubectl describe pod <pod-name>
Name:         my-pod
Namespace:    default
Priority:     ...
Node:         docker-desktop/192.168.65.4
Start Time:   Sun, ...
Labels:       <none>
Annotations:...
Status:       Running
IP:           ...
Containers:
 my-container:
    Container ID:   docker://b003a7f46aa596beab829....
    Image:          nginx
    Image ID:       docker-pullable://nginx@sha256...
... 

删除一个 Pod

”`shell script

kubectl delete pod

pod “my-pod” deleted


## 服务相关命令

### 创建一个 Service

通过yaml文件创建一个Service:

```yaml
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - name: http
      port: 80
      targetPort: 8080

然后执行以下命令:

”`shell script

kubectl apply -f service.yaml

service/my-service created


### 获取 Service 列表

查看当前 namespace 中所有的 service:

```shell script
# kubectl get services 
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE 
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP   3h21m  
my-service   ClusterIP   10.103.202.205   <none>        80/TCP    14s   

获取 Service 的详细信息

”`shell script

kubectl describe service

Name: my-service Namespace: default Labels: Annotations: Selector: app=my-app Type: ClusterIP IP Family Policy: SingleStack IP Families: IPv4
IP: … Port….. Endpoints…. Session Affinity:.None
Events:


### 删除一个 Service

```shell script
# kubectl delete service <service-name>  
service "my-service" deleted  

部署相关命令

创建 Deployment

通过yaml文件创建一个Deployment:

apiVersion...
kind....
metadata...
spec:
 replicas....
 selector...
 template...
     metadata...
     spec...
       containers...
         - name: my-container
           image: nginx
           ports:
             - containerPort: 80

然后执行以下命令:

”`shell script

kubectl apply -f deployment.yaml

deployment.apps/my-deployment created


### 获取 Deployment 列表

查看当前 namespace 中所有的 deployment:

```shell script
# kubectl get deployments 
NAME            READY   UP-TO-DATE   AVAILABLE   AGE 
my-deployment   1/1     1            1           16s   

获取 Deployment 的详细信息

”`shell script

kubectl describe deployment

Name: my-deployment Namespace: default CreationTimestamp: … Labels: app=my-app… Annotations: deployment.kubernetes.io/revision… Selector: app=my-app… Replicas: 1 desired | 1 updated | 1 total | … StrategyType: RollingUpdate MinReadySeconds: 0
RollingUpdateStrategy…. Pod Template: ……


### 删除一个 Deployment

```shell script
# kubectl delete deployment <deployment-name> 
deployment.extensions "my-deployment" deleted  

ConfigMap 相关命令

创建一个 ConfigMap

通过yaml文件创建一个ConfigMap:

apiVersion...
kind....
metadata...
data:
 user.name...
 user.email... 

然后执行以下命令:

”`shell script

kubectl apply -f configmap.yaml

configmap/my-configmap created


### 获取 ConfigMap 列表

查看当前 namespace 中所有的 configmap:

```shell script
# kubectl get configmaps 
NAME            DATA   AGE 
my-configmap    2      17s   

获取 ConfigMap 的详细信息

”`shell script

kubectl describe configmap

Name: my-configmap Namespace: default Labels: Annotations:

Data

user.email:

test@example.com

user.name:

test

Events:


### 删除一个 ConfigMap

```shell script
# kubectl delete configmap <configmap-name>  
configmap "my-configmap" deleted  

Secret 相关命令

创建一个 Secret

通过yaml文件创建一个Secret:

apiVersion...
kind....
metadata...
type: Opaque
data:
 user.name...
 user.password... 

然后执行以下命令:

”`shell script

kubectl apply -f secret.yaml

secret/my-secret created


### 获取 Secret 列表

查看当前 namespace 中所有的 secret:

```shell script
# kubectl get secrets 
NAME                  TYPE                                  DATA   AGE 
default-token-84plj   kubernetes.io/service-account-token   3      3h22m  
my-secret             Opaque                                2      28s   

获取 Secret 的详细信息

”`shell script

kubectl describe secret

Name: my-secret Namespace: default Labels: Annotations:

Type: Opaque

Data

user.password: … user.name: …

Events:


### 删除一个 Secret

```shell script
# kubectl delete secret <secret-name>  
secret "my-secret" deleted  

集群相关命令

查看集群信息

获取 Kubernetes 集群的版本、节点数量等信息。

kubectl cluster-info

查看 Kubernetes 集群组件状态

获取 Kubernetes 集群中各个组件的健康状况。

kubectl get componentstatuses

升级节点

将一个节点上的 Kubernetes 版本升级到最新版。

kubectl drain <node-name>

升级完成后,再执行以下命令以使节点恢复正常:

kubectl uncordon <node-name>

滚动更新 Deployment

滚动更新 Deployment 中的 Pod,可以通过yaml文件中修改 image 的版本号进行模拟。

”`shell script

kubectl apply -f deployment.yaml

deployment.apps/my-deployment created


然后执行以下命令:

```shell script
# kubectl set image deployment/<deployment-name> <container-name>=<new-image-version>
deployment.apps/my-deployment image updated  

等待一段时间后,使用以下命令查看当前部署的 Pod 状态:

”`shell script

kubectl rollout status deployment/

deployment “my-deployment” successfully rolled out


如果需要回退到之前的版本,可以使用以下命令:

```shell script
# kubectl rollout undo deployment/<deployment-name>
deployment.apps/my-deployment rolled back  

其他

进入容器内部

通过 exec 命令进入容器内部进行操作。例如,在 my-pod 容器内部运行一个 Shell:

”`shell script

kubectl exec -it my-pod sh

/ # ls / bin dev etc home proc root sys tmp usr var / #


### 查看 Pod 的日志

查看指定 Pod 中容器的日志。

```shell script
# kubectl logs <pod-name> <container-name>

执行命令并保存到文件

执行一个命令,并将结果保存到文件中。

”`shell script

kubectl run -i –tty busybox –image=busybox – sh > output.txt


### 在 Kubernetes 中运行 CronJob

通过 CronJob 实现定时任务,例如每天 2 点备份数据库。

```yaml 
apiVersion: batch/v1beta1
kind: CronJob
metadata:
 name: db-backup
spec:
 schedule: "0 2 * * *"
 jobTemplate:
   spec:
     template:
       spec:
         containers:
           - name: db-backup-job
             image: alpine
             command: ["/bin/sh"]
             args: ["-c", "echo 'Performing database backup'; sleep 60"]
         restartPolicy: OnFailure 

然后执行以下命令:

”`shell script

kubectl apply -f cronjob.yaml

cronjob.batch/db-backup created
”`

参考资料

Kubernetes CLI

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=1428

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?