以下是常用的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 1⁄1 Running 0 3m45s
kube-system coredns-f9fd979d6-4ffjv 1⁄1 Running 0 3h23m
kube-system coredns-f9fd979d6-w7q5x 1⁄1 Running 0 3h23m
kube-system etcd-k8s-master 1⁄1 Running 0 3h23m
kube-system kube-apiserver-k8s-master 1⁄1 Running 0 3h23m
kube-system kube-controller-manager-k8s-master 1⁄1 Running 0 3h23m
kube-system kube-flannel-ds-amd64-czq2t 1⁄1 Running 0 3h19m
kube-system kube-proxy-v6gpb 1⁄1 Running 0 3h23m
kube-system kube-scheduler-k8s-master 1⁄1 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:
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:
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:
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
”`