【Kubernetes】一些自己的常用命令, 不定时更新
自动补全:
yum -y install bash-completion echo "source <(kubectl completion bash)" >> ~/.bashrc
添加镜像仓库认证
kubectl -n $NAMESPACE create secret docker-registry $KEYNAME \ --docker-server=$DOCKER_REGISTRY_SERVER \ --docker-username=$DOCKER_USER \ --docker-password=$DOCKER_PASSWORD \ --docker-email=$DOCKER_EMAIL echo "------------ create k8s-user secret ----------------" kubectl get secret $KEYNAME --output="jsonpath={.data.\.dockerconfigjson}" | base64 -d echo "------------ add k8s-user serviceaccount ----------------" kubectl -n $NAMESPACE patch serviceaccount default -p '{"imagePullSecrets": [{"name": "k8s-user"}]}'
获取集群内部service&pod网段
ps -ef | grep -Po 'cluster-cidr\S+\s|service-cluster-ip-range\S+\s'
获取集群/组件状态
kubectl get componentstatus kubectl cluster-info
获取kubelet状态
systemctl status kubelet journalctl -xefu kubelet
更新istio流量拦截网段
helm template install/kubernetes/helm/istio --set global.proxy.includeIPRanges="10.1.0.0/16\,10.2.0.0/20" -x templates/sidecar-injector-configmap.yaml | kubectl apply -f -
istio 开启自动注入
kubectl label namespace default istio-injection=enabled
istio替换现有deploy, 注入sidercar
istioctl kube-inject -f <(kubectl get deploy xxx -o yaml) | kubectl replace -f -
重启pod(无法直接重启, 删除或者replace pod可以达到重启效果, 或者进入容器/cashbus/tomcat/restart.sh)
kubectl delete po -l app=sc-tag kubectl get pod logtail-ds-698m5 -n kube-system -o yaml | kubectl replace --force -f -
转发pod流量到kubectl运行节点上
# kiali kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=kiali -o jsonpath='{.items[0].metadata.name}') 20001:20001 # grafana kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000 & # prometheus kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=prometheus -o jsonpath='{.items[0].metadata.name}') 9090:9090 & # service Graph kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=servicegraph -o jsonpath='{.items[0].metadata.name}') 8088:8088 & # jaeger-collector kubectl -n istio-system port-forward $(kubectl -n istio-system get po -l app=tracing-on-sls,component=collector -o jsonpath='{.items[0].metadata.name}') 9411:9411&
停止应用所有pod 没法直接停止 可以 scale对应deployment为0达到效果
kubectl scale xx sc-contract-sc-xxx --replicas=0
命令行处理yaml
cat <<EOF | kubectl create -f - apiVersion: extensions/v1beta1 kind: Ingress metadata: name: simple annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - http: paths: - path: /svc backend: serviceName: http-svc servicePort: 80 EOF
标记master可调度(不建议)
kubectl taint node -l node-role.kubernetes.io/master node-role.kubernetes.io/master=:PreferNoSchedule --overwrite kubectl taint node -l node-role.kubernetes.io/master node-role.kubernetes.io/master-
标记节点不可调度
kubectl cordon node
helm手动安装
######### helm install 需要支持ipv6 /etc/sysctl.conf net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0 $ sysctl -p /etc/sysconfig/network NETWORKING_IPV6=yes $ service network restart curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
helm tiller自行升级 官方源被墙 国内连不上 这里用阿里镜像源
export TILLER_TAG=v2.9.1 kubectl --namespace=kube-system set image deployments/tiller-deploy tiller=registry-vpc.cn-beijing.aliyuncs.com/google_containers/tiller:$TILLER_TAG
helm 自动补全
source <(helm completion bash)
获取pod异常终止前的状态
kubectl get pod -o go-template='{{range.status.containerStatuses}}{{"Container Name: "}}{{.name}}{{"\r\nLastState: "}}{{.lastState}}{{end}}' xxxxxxxx
删除node
转移节点正在运行的 resource kubectl get no -o wide | awk '/NotReady/{print $1}' | xargs -i -t kubectl drain {} --ignore-daemonsets 删除 kubectl get no -o wide | awk '/NotReady/{print $1}' | xargs -i -t kubectl delete node {}
逐出节点上所有pod
kubectl drain cn-beijing.i-xxxxx --delete-local-data --ignore-daemonsets
批量打ingress controller标签 用作自动调度
kubectl get node | awk '!/master/{print $1}' |xargs -i -t kubectl label node {} node-role.kubernetes.io/ingress=true --overwrite
各种patch
patch configmap kubectl patch -n kube-system cm tcp-services --patch '{"data":{"32218": "default/sc-xxx0debug:32219"}}' patch serice kubectl patch -n kube-system svc nginx-ingress-lb --patch '{"spec":{"ports":[{"name":"patch-test","port": 32222, "protocol":"TCP", "targetPort": 32222}]}}' patch nodeSelector kubectl patch deployment sc-demo-sc-demo -p '{"spec":{"template":{"spec":{"nodeSelector":{"env":"testing"}}}}}' patch readiness healthCheck jsonpatch http://jsonpatch.com/
patch healthCheck, JSON Patch, RFC 6902
kubectl patch deployment xxxx --type='json' -p='[ { "op": "replace", "path": "/spec/template/spec/containers/0/readinessProbe", "value": { "failureThreshold": 1, "initialDelaySeconds": 30, "periodSeconds": 3, "successThreshold": 3, "httpGet": { "path": "/rest/healthCheck", "port": "app-port" }, "timeoutSeconds": 1 } } ]'
获取所有运行镜像 go-template示例
kubectl get deployment -o go-template --template='{{range .items}}{{range .spec.template.spec.containers }}{{printf "%s\n" .image}}{{end}}{{end}}' kubectl get deployment -o go-template --template='{{range .items}}{{range .spec.template.spec.containers }}{{printf "%s\n" .image}}{{end}}{{end}}' | awk -F'[:/]' '{printf " [\042%s\042]=\042%s\042\n",$(NF-1),$NF}'
删除istio相关crd(customresourcedefinition)
kubectl get crd | awk '/istio/{print $1}' | xargs -i kubectl delete crd {}
清空整个namespace(慎用)
kubectl -n istio-system delete all --all
强制更新 helm "no deployed release"状态的release,感觉还是比较鸡肋. 至今没找到好的办法处理 "no deployed release"
helm upgrade --force -i -f ack-istio-default.yaml ack-istio-default incubator/ack-istio
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Kubernates
k8s基本概念 Master 1、k8s集群的管理节点,负责管理集群,提供集群的资源数据访问入口。2、拥有Etcd存储服务(可选),3、运行Api Server进程,Controller Manager服务进程及Scheduler服务进程,关联工作节点Node。4、Kubernetes API server提供HTTP Rest接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口。也是集群控制的入口进程;5、Kubernetes Controller Manager是Kubernetes所有资源对象的自动化控制中心;6、Kubernetes Schedule是负责资源调度(Pod调度)的进程 Node Node是Kubernetes集群架构中运行Pod的服务节点(亦叫agent或minion)。Node是Kubernetes集群操作的单元,用来承载被分配Pod的运行,是Pod运行的宿主机。关联Master管理节点,拥有名称和IP、系统资源信息。运行docker eninge服务,守护进程kunelet及负载均衡器kube-proxy. 每个Node节点都...
- 下一篇
Unity Entity Component System 理论知识总结
今天跟同学们分享一下我找到的关于ECS相关的理论知识文章,可能比较枯燥,如果想看实操的请看我下方写的一些案例解析。 Unity之浅析 Entity Component System (ECS) Unity 之 Pure版Entity Component System (ECS) 官方Rotation示例解析 Unity 之 Pure版Entity Component System【ECS】 案例【GalacticConquest】解析【上】 Unity 之 Pure版Entity Component System【ECS】 案例【GalacticConquest】解析【下】 有说的不正确或者不准确的地方欢迎留言指正 如果你有感觉不错的相关文章也可以留言推送给我,不胜感谢~ 有什么有趣的写作技巧或者想法欢迎大家给我留言,大家的帮助是我写下去最有效的动力 参考资料 【有时间强力建议看一下】。。。。。这些资料里面讲述的概念笔者很多不怎么理解,哈哈哈 详解实体组件系统ECS 深入解读Job System(1) 深入解读Job System(2) 使用Unity ECS开发《我的世界》 WIKI...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8编译安装MySQL8.0.19