k8s快速入门之命令行
Namspace
查看命名空间
kubectl get namespace
#查看所有命名空间的pod资源
kubectl get pod --all-namespaces
kubectl get pod -A
#简写命令
kubectl get ns
默认的四个命令空间
default 用户创建的pod默认在此命名空间
kube-public 所有用户均可以访问,包括未认证用户
kube-node-lease kubernetes集群节点租约状态,v1.13加入
kube-system kubernetes集群在使用
创建NameSpace
kubectl create namespace swifty
#简写命令
kubectl create ns swifty
删除NameSpace
kubectl delete namespace swifty
#简写命令
kubectl delete ns swifty
Pod相关
Pod是kubernetes集群能够调度的最小单元。Pod是容器的封装 。
在Kubernetes集群中,Pod是所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个
容器的组合。这些容器共享存储、网络和命名空间,以及如何运行的规范。在Pod中,所有容器都被同
一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务
相关的多个应用容器。
查看Pod
#查看default命名空间下的pods
kubectl get pods
#查看kube-system命名空间下的pods
kubectl get pods -n kube-system
#查看所有命名空间下的pods
kubectl get pod --all-namespaces
kubectl get pod -A
创建Pod
#提前下载镜像
docker pull nginx:1.21.5
#运行pod
#在default命名空间中创建一个pod副本的deployment
kubectl run nginx-test --image=nginx:1.21.5 --port=80
#查看pod
kubectl get pod
kubectl get pod -o wide
#使用pod的IP访问容器
crul IP:80
删除Pod
#删除默认命名空间下的nginx-test
kubectl delete deployment nginx-test
#删除swifty命名空间下的nginx-test
kubectl delete deployment nginx-test -n swifty
扩容
#将副本扩容至3个
kubectl scale --replicas=3 deployment/nginx-test
kubectl get deployment
#查看pod详情-使用deployment的IP访问pod
kubectl get deployment -o wide
缩容
kubectl edit deployments.apps nginx-test
#修改replicas属性的值即可
创建服务
kubectl expose deployment nginx-test --name=nginx-svc --port=8888 --target-port=80 --protocol=TCP --type=NodePort
kubectl get svc
kubectl get svc -o wide
#访问服务端口
curl 10.105.225.0:8888
#访问集群外端口-根据显示的节点和端口
http://192.168.58.112:30217
get命令
kubectl get
列出一个或多个资源
# 查看集群状态信息
kubectl cluster-info
# 查看集群状态
kubectl get cs
# 查看集群节点信息
kubectl get nodes
# 查看集群命名空间
kubectl get ns
# 查看指定命名空间的服务
kubectl get svc -n kube-system
# 以纯文本输出格式列出所有 pod。
kubectl get pods
# 以纯文本输出格式列出所有 pod,并包含附加信息(如节点名)。
kubectl get pods -o wide
# 以纯文本输出格式列出具有指定名称的副本控制器。提示:您可以使用别名 'rc' 缩短和替换 'replicationcontroller' 资源类型。
kubectl get replicationcontroller <rc-name>
# 以纯文本输出格式列出所有副本控制器和服务。
kubectl get rc,services
# 以纯文本输出格式列出所有守护程序集,包括未初始化的守护程序集。
kubectl get ds --include-uninitialized
# 列出在节点 server01 上运行的所有 pod
kubectl get pods --field-selector=spec.nodeName=server01
describe命令
kubectl describe
显示一个或多个资源的详细状态,默认情况下包括未初始化的资源
# 显示名称为 <node-name> 的节点的详细信息
kubectl describe nodes <node-name>
# 显示名为 <pod-name> 的 pod 的详细信息
kubectl describe pods/<pod-name>
# 显示由名为 <rc-name> 的副本控制器管理的所有 pod 的详细信息
# 记住:副本控制器创建的任何 pod 都以复制控制器的名称为前缀
kubectl describe pods <rc-name>
# 描述所有的 pod,不包括未初始化的 pod
kubectl describe pods --include-uninitialized=false
delete命令
kubectl delete
从文件、stdin或指定标签选择器、名称、资源选择器或资源中删除资源
# 使用 pod.yaml 文件中指定的类型和名称删除 pod
kubectl delete -f pod.yaml
# 删除标签名= <label-name> 的所有 pod 和服务
kubectl delete pods,services -l name=<label-name>
# 删除所有具有标签名称= <label-name> 的 pod 和服务,包括未初始化的那些
kubectl delete pods,services -l name=<label-name> --include-uninitialized
# 删除所有 pod,包括未初始化的 pod
kubectl delete pods --all
进入容器命令
kubectl exec
对 pod 中的容器执行命令,与docker的exec命令非常类似
# 从 pod <pod-name> 中获取运行 'date' 的输出。默认情况下,输出来自第一个容器
kubectl exec <pod-name> date
# 运行输出 'date' 获取在容器的 <container-name> 中 pod <pod-name> 的输出
kubectl exec <pod-name> -c <container-name> date
# 获取一个交互 TTY 并运行 /bin/bash <pod-name >。默认情况下,输出来自第一个容器
kubectl exec -it <pod-name> /bin/bash
logs命令
kubectl logs
打印 Pod 中容器的日志
# 从 pod 返回日志快照
kubectl logs <pod-name>
# 从 pod <pod-name>开始流式传输日志。这类似于 'tail -f' Linux 命令
kubectl logs -f <pod-name>
格式化输出
#将pod信息格式化输出到一个yaml文件
kubectl get pod web-pod-13je7 -o yaml
强制删除
# 强制删除参数
--force --grace-period=0
# 强制删除指定Pod
kubectl delete pod ${podname} --force --grace-period=0
# 强制删除指定Namespace
kubectl delete namespace ${namespace_name} --force --grace-period=0