Kubernetes中所有的内容都抽象为资源,资源实例化(被调用、被执行了)之后,叫做对象;
echo "alias k='kubectl'" >> ~/.bashrc
echo "alias kd='kubectl describe'" >> ~/.bashrc
echo "alias kg='kubectl get'" >> ~/.bashrc
echo "alias ka='kubectl apply'" >> ~/.bashrc
source ~/.bashrc
useradd -m -s /bin/bash igo 2>/dev/null || true; echo 'igo:igo@123' | chpasswd; printf '%s\n' 'igo ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/igo; chmod 440 /etc/sudoers.d/igo
mkdir -p /home/igo/.kube
chown -R igo.igo /home/igo
cp /root/.kube/config /home/igo/.kube/
一条命令加载kubectl命令并创建config目录
版本号从docker ps |grep rancher 获取
VER=v1.19.16 && curl -fsSL -o /usr/local/bin/kubectl "https://dl.k8s.io/release/${VER}/bin/linux/amd64/kubectl" && chmod +x /usr/local/bin/kubectl && kubectl version --client 2>&1 | head -15 && mkdir -p /root/.kube
rke kube环境
集群管理员权限
cp /etc/kubernetes/ssl/kubecfg-kube-controller-manager.yaml ~/.kube/config
node权限
cp /etc/kubernetes/ssl/kubecfg-kube-node.yaml ~/.kube/config
rke2 kube环境
echo "export PATH=$PATH:/var/lib/rancher/rke2/bin" >> ~/.bashrc
echo "export KUBECONFIG=/etc/rancher/rke2/rke2.yaml" >> ~/.bashrc
source ~/.bashrc
查询
查已分配的资源
kubectl describe node k8s-pre-34 | grep -A 15 "Allocated resources"
kubectl describe nodes | awk '/^Name:/{print "\n" $0} /^Allocated resources:/{p=1} p{print} /^Events:/{p=0}'
查节点资源
kubectl get nodes -o custom-columns=NAME:.metadata.name,CPU:.status.allocatable.cpu,MEMORY:.status.allocatable.memory | awk 'NR==1; NR>1{printf "%s\t%s\t%.1fGi\n", $1, $2, $3/1024/1024}' | column -t
节点扩容后需要重启kubelet才会生效:
ansible 10.80.238.34,10.80.238.36 -m shell -a "systemctl restart kubelet"
列出POD里面的container
kubectl get pod jenkins-0 -n jenkins -o jsonpath="{range .spec.containers[*]}{.name}{'\t'}{.image}{'\n'}{end}"
增加(创建)
kubectl create -f kubernetes-demo.yaml 使用预定义文件创建资源
kubectl apply -f ./igo01.yaml -f ./igo02.yaml 使用多个文件
kubectl apply -f https://k8s.io/examples/application/mysql/mysql-pv.yaml
kubectl run nginx –image=nginx –replicas=3 –dry-run
kubectl run -it –rm –image=mysql:5.6 –restart=Never mysql-client — mysql -h mysql -ppassword
kubectl create cronjob hello --image=busybox:1.28 --schedule="*/1 * * * *" -- echo "Hello World"
kubectl label pods/pod-demo env=production 添加env标签
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep
spec:
containers:
- name: busybox
image: busybox:1.28
args:
- sleep
- "1000000"
---
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep-less
spec:
containers:
- name: busybox
image: busybox:1.28
args:
- sleep
- "1000"
EOF
修改
kubectl label pods/pod-demo env=testing –overwrite 修改env标签
kubectl scale –replicas=3 rs/igo 将igo副本集调整到3副本
如果当前是2,调整到3
kubectl scale –current-replicas=2 –replicas=3 deployment/mysql
监听本地5000转发到igo-deployment创建的pod的6000端口
kubectl port-forward deploy/igo-deployment 5000:6000
删除
kubectl label pods igo-pod bar- 删除igo-pod容器的bar标签
kubectl delete pod igo-pod –now 立刻删除
kubectl delete pods,deployment,svc -l name=myLabel
kubectl delete pvc mysql-pv-claim
kubectl delete pv mysql-pv-volume
kubectl delete -f ./igopod.json
交互
kubectl exec –stdin –tty igo-pod — /bin/sh
kubectl top pod POD_NAME –sort-by=cpu
kubectl cp /tmp/foo_dir igo-pod:/tmp/bar_dir
deployment扩容
# 查看 Deployment 副本数
kubectl get deployment rancher -n cattle-system
# 示例:将 cattle-system 命名空间下的 rancher Deployment 副本数改为 3
kubectl scale deployment rancher -n cattle-system --replicas=3
# 格式:kubectl edit deployment <Deployment名称> -n <命名空间>
kubectl edit deployment rancher -n cattle-system