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
?