DOC

kubernetes 集群学习部署

k8s实践

kubectl 是您将用于从命令行交互和管理 Kubernetes集群 的关键工具

腾讯云K8S 运维速查

负载均衡 CLB

https://cloud.tencent.com/document/product/214/15171

sudo yum install nfs-utils #启动 NFS 客户端
sudo mount -t nfs -o vers=4,noac 10.0.0.16:/ /nfs #命令挂载文件
sudo mount -t nfs -o vers=4,noac 10.0.0.2:/ /nfs

//文件内容更新不同步,如何解决? //使用 mount 命令挂载文件系统时增加 noac 选项可以禁用文件和目录属性的缓存。挂载命令如下: sudo mount -t nfs -o vers=4,noac 10.0.0.16:/ /nfs sudo mount -t nfs -o vers=4 10.0.1.13:/ /waimaoq 10.0.1.13:/ /waimaoq nfs4 nfsvers=4,hard,timeo=600,retrans=2,_netdev 0 0 //开机自动挂在

// nfs读写速度测试 //dd if=/mount的目录/文件名 of=/本地目录/文件名 bs=8k time dd if=/dev/zero of=/waimaoq/dev/testw.dbf bs=4k count=100000 //测试nfs写 time dd if=/waimaoq/dev/testw.dbf of=/dev/null bs=4k //测试nfs读

//如何加速复制本地文件到 CFS? threads=<线程数量>; src=<源路径/>; dest=<目标路径/>; rsync -av -f"+ /" -f"- " $src $dest && (cd $src && find . -type f | xargs -n1 -P$threads -I% rsync -av % $dest/% ) <!--例如,threads=24; src=/root/github/swift/; dest=/nfs/; rsync -av -f"+ /" -f"- " $src $dest && (cd $src && find . -type f | xargs -n1 -P$threads -I% rsync -av % $dest/% )-->

// bs = 4k iodepth = 1:随机读/写测试,能反映硬盘的时延性能 //iops 测试硬盘的随机读时延 fio -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randread -time_based -runtime=300 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randread-lat --size=10G -filename=/nfs/testfile

//iops 测试硬盘的随机写时延 fio -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randwrite -time_based -runtime=300 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randwrite-lat --size=10G -filename=/nfs/testfile

// bs = 128k iodepth = 32:顺序读/写测试,能反映硬盘的吞吐性能 //测试硬盘的顺序读吞吐带宽。 fio -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=read -time_based -runtime=300 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-read-throughput --size=10G -filename=/nfs/testfile //测试硬盘的顺序写吞吐带宽。 fio -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=write -time_based -runtime=300 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-write-throughput --size=10G -filename=/nfs/testfile

//mysql 导入sql 文件 kubectl exec waimaoqdb-0 -n default -it -- mysql -uroot -pwaimaoqdb@2019 < /home/waimaoqdb.sql chown -R www-data:www-data app/cache

运维 kubectl-备忘单

https://kubernetes.io/zh/docs/reference/kubectl/cheatsheet/#kubectl-%e5%a4%87%e5%bf%98%e5%8d%95

node

https://kubernetes.io/zh/docs/reference/kubectl/cheatsheet/#%E4%B8%8E%E8%8A%82%E7%82%B9%E5%92%8C%E9%9B%86%E7%BE%A4%E8%BF%9B%E8%A1%8C%E4%BA%A4%E4%BA%92

Pod可以用于托管垂直集成的应用程序堆栈(例如LAMP)

使用kubectl describe nodesjournalctl -u kubelet找出问题

kubectl cordon/uncordon <NodeName> # 设置节点为不可调度/可调度
kubectl drain <NodeName> #驱逐节点上的pod
journalctl -f  #节点日志
journalctl -u kubelet #打印节点日志
kubectl describe node <NodeName>
ps -ef |grep kube #看各个组件的运行情况
#重启 node 中的各个组件
systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet
systemctl restart kube-proxy
pod

Pod 封装了应用程序容器(或者在某些情况下封装多个容器)、存储资源、唯一网络 IP 以及控制容器应该如何运行的选项。 Pod 表示部署单元:

kubectl get pods -o wide #获取该 Pod 副本所在的节点和 Pod 名称
kubectl get pods | grep Evicted #查询状态 Evicted
kubectl get pods | grep Evicted | awk '{print $1}' | xargs kubectl delete pod  #Delete evicted pods
kubectl get pods | grep Terminating | awk '{print $1}' | xargs kubectl delete pod --grace-period=0 --force #强制删除 Terminating pod
kubectl delete pods <pod> --grace-period=0 --force #删除 Terminating 状态的 Pod
ingress

https://mritd.me/2017/03/04/how-to-use-nginx-ingress/

crictl

crictl ps #容器清单
crictl logs <CONTAINER ID> #容器日志
crictl exec -it <CONTAINER ID> bash #在容器上执行命令

gcloud

gcloud components install beta #安装 gcloud beta 组件 gcloud components update #更新组件 #使用 Cloud Build 构建容器映像,方法是从包含 Dockerfile 的目录中运行以下命令: gcloud builds submit --tag gcr.io/[PROJECT-ID]/helloworld #其中 [PROJECT-ID] 是您的 GCP 项目 ID。运行 gcloud config get-value project #即可获取该 ID。

gcloud builds submit --tag gcr.io/dev13-261711/waimaoq #将容器映像部署到 Cloud Run #使用以下命令进行部署: gcloud beta run deploy --image gcr.io/[PROJECT-ID]/helloworld

gcloud beta run deploy --image gcr.io/dev13-261711/waimaoq