Kubernetes Python Client
https://github.com/kubernetes-client/python
k8s API文档:
https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md
示例:
https://github.com/kubernetes-client/python/tree/master/examples
开启kubernetes proxy
命令:kubectl proxy
https://blog.youkuaiyun.com/cuipengchong/article/details/72459299
docker 镜像仓库查看方式
curl -XGET http://127.0.0.1:5000/v2/aimaster-paas/asap-wrench/tags/list | python -m json.tool
curl -XGET http://127.0.0.1:5000/v2/_catalog | python -m json.tool
强制删除pv
kubectl patch pv pvc-896b3a17-ca75-11e9-ad16-fa8568529800 -p '{"metadata":{"finalizers":null}}'
pv无法删除的问题
解决方法:
直接删除k8s中的记录:
kubectl patch pv xxx -p '{"metadata":{"finalizers":null}}'
强制删除pod
kubectl delete pod PODNAME --force --grace-period=0
删除所有没有关联容器的镜像
docker image prune -a
docker image prune -a -f #-f强制,不需要确认
docker
systemctl daemon-reload
systemctl restart docker
ssh隧道
ssh -CfNgL 59730:30.0.0.2:22 root@11.143.65.143
ssh -CfNgL 59830:30.0.0.2:3128 root@11.143.65.143
master 污点
kubectl taint nodes master1 node-role.kubernetes.io/master=:NoSchedule
kubectl taint nodes master1 node-role.kubernetes.io/master-
kubectl taint node --all apsarastack.io.manager/node-
下载rpm包
yumdownloader httpd --resolve --destdir=/root/package/httpd
# 修改时区为UTC
mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
只渲染不安装
helm install/upgrade xxx --dry-run --debug
# lv 扩容
(四)将新的VG空间划入LV(扩容lv_root)
#扩展5G给/root分区,不用umount,也不需要重启
# lvextend -L +5G /dev/mapper/VolGroup-lv_root
也可以使用命令
# lvextend -l +30%FREE /dev/mapper/VolGroup-lv_root
此时,如果有df命令查看的话,会发现root空间并没有增加的.还需要执行以下两步操作才可以.
#检查/root逻辑卷
#e2fsck -f /dev/mapper/VolGroup-lv_root
#重新定义分区大小
#resize2fs /dev/mapper/VolGroup-lv_root
去除不可用的磁盘
echo 1>/sys/block/sdx/device/delete
清理Evicted状态的pod
ns=`kubectl get ns | awk 'NR>1 {print $1}'`
for i in $ns;do kubectl get pods -n $i | grep Evicted| awk '{print $1}' | xargs kubectl delete pods -n $i ;done
# 命令行代理
export https_proxy=http://100.67.76.9:59830
export http_proxy=http://100.67.76.9:59830
namespace处于Terminating状态
执行kubectl delete ns ${namespace}
后,会将该namespace下的资源全部删除,在某些情况下,可能由于该namespace下的某些资源未删除导致namespace一直出于Terminating状态。
可以使用如下的命令来查找namespace下残留的资源,然后查找该资源未被清除的原因。
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n ${namespace}
nsenter命令:
进入到容器网络空间
示例:
1、pod所在节点
kubectl get pod test -o wide
2、pod里面容器ID
# kubectl get pod test -oyaml|grep containerID
- containerID: docker://cf0873782d587dbca6aa32f49605229da3748600a9926e85b36916141597ec85
3、登陆节点通过容器ID查找容器PID
docker inspect -f {{.State.Pid}} cf087378
4、进入容器网络空间
nsenter --targe 29465 --pid --net
https://www.cnblogs.com/Wshile/p/12596617.html
#########################################################################################################
Tolerations(容忍):应用pod
spec:
tolerations: #设置容忍性
- key: "key1"
operator: "Equal" #如果操作符为Exists,那么value属性可省略,如果不指定operator,则默认为Equal
value: "value1"
effect: "NoSchedule"
node维护模式
cordon: 警戒线
kubectl cordon $NODENAME
externalName:
https://www.icode9.com/content-4-509741.html
DNS 策略
在 kubernetes 中还提供了 dnsPolicy
决定 Pod
内预设 DNS
配置策略:
- “
Default
“: Pod继承所在宿主机的设置,也就是直接将宿主机的/etc/resolv.conf
内容挂载到容器中。 - “
ClusterFirst
“: 默认的配置,所有请求会优先在集群所在域查询,如果没有才会转发到上游DNS。 - “
ClusterFirstWithHostNet
“: 和ClusterFirst
一样,不过是Pod运行在hostNetwork:true
的情况下强制指定的。 - “
None
“: 1.9版本引入的一个新值,这个配置忽略所有配置,以Pod的dnsConfig
字段为准。
IPC命名空间:
主机PID空间:
网络命名空间:
spec:
hostIPC: true
hostPID: true
hostNetwork: true
设置pod中的hostname
通过hostname设置,如果未设置默认使用pod名字作为pod的hostname
spec:
hostname: busybox-1
subdomain
Pod 与 Service 的 DNS
https://v1-16.docs.kubernetes.io/zh/docs/concepts/services-networking/dns-pod-service/
Capabilities
https://kuboard.cn/learning/k8s-intermediate/config/sec-ctx/con-cap.html
自定义hosts
https://www.cnblogs.com/kazihuo/p/10309987.html
headless服务
不需要cluster IP的服务,创建是指定“spec.clusterIP=None”