kubectl补全:
# dnf install -y bash-completion
# echo "source <(kubectl completion bash)" >> ~/.bashrc
# kubectl completion bash > /etc/bash_completion.d/kubectl
命令式对象管理
kubectl命令
# 查看所有pod
kubectl get pod
# 查看某个pod
kubectl get pod pod_name
# 查看某个pod,以yaml格式展示结果
kubectl get pod pod_name -o yaml
查看命名空间 并 查看其中一个命名空间以yaml 或者以json格式
资源类型
kubectl api-resources
经常使用的资源有下面这些
例子:看日志
看集群状态
下面以一个namespace / pod的创建和删除简单演示下命令的使用:
[root@k8s-master01 ~]# kubectl create ns dev
namespace/dev created
[root@k8s-master01 ~]# kubectl get ns dev -o yaml
apiVersion: v1
kind: Namespace
metadata:creationTimestamp: "2024-05-25T07:05:24Z"labels:kubernetes.io/metadata.name: devname: devresourceVersion: "12664"uid: f1ab170b-f87b-4e02-883c-3343e89047c2
spec:finalizers:- kubernetes
status:phase: Active# 在此namespace下创建并运行一个nginx的Pod
[root@k8s-master01 ~]# kubectl run pod --image=nginx -n dev
pod/pod created# 查看新创建的pod
[root@k8s-master01 ~]# kubectl get pod -n dev
NAME READY STATUS RESTARTS AGE
pod 1/1 Running 0 18s# 删除指定的pod
[root@k8s-master01 ~]# kubectl delete ns dev
namespace "dev" deleted
命令式对象配置
命令式对象配置就是使用命令配合配置文件一起来操作kubernetes资源。
# vim nginxpod.yaml
apiVersion: v1
kind: Namespace
metadata:name: dev
[root@k8s-master01 test]# kubectl create -f nginxpod.yaml
namespace/dev created
[root@k8s-master01 test]# kubectl get ns
NAME STATUS AGE
default Active 12d
dev Active 25s
kube-node-lease Active 12d
kube-public Active 12d
kube-system Active 12d
tigera-operator Active 5d22h
# vim pod1.yaml
apiVersion: v1
kind: Pod
metadata:name: nginxpodnamespace: dev
spec:containers:- name: nginx-containersimage: nginx:1.14-alpine[root@k8s-master01 test]# kubectl create -f po1.yaml
pod/nginxpod created
[root@k8s-master01 test]# kubectl get pod -n dev -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginxpod 1/1 Running 0 90s 172.16.58.195 k8s-node02 <none> <none>
或者
删除
[root@k8s-master01 test]# kubectl delete -f nginxpod.yaml
namespace "dev" deleted
总结: 其实声明式对象配置就是使用apply描述一个资源最终的状态(在yaml中定义状态)
使用apply操作资源: 如果资源不存在,就创建,相当于 kubectl create
如果资源已存在,就更新,相当于 kubectl patch
扩展:kubectl可以在node节点上运行吗 ?
kubectl的运行是需要进行配置的,它的配置文件是$HOME/.kube,如果想要在node节点运行此命令,需要将master上的.kube文件复制到node节点上,即在master节点上执行下面操作:
# scp -r $HOME/.kube k8s-node01:$HOME/
服务部署
接下来在kubernetes集群中部署一个nginx程序,测试下集群是否在正常工作。
# 部署nginx
[root@master ~]# kubectl create deployment nginx --image=nginx:1.14-alpine
deployment.apps/nginx created# 暴露端口
[root@master ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed# 查看服务状态
[root@master ~]# kubectl get pods,service