Kubernetes 使用手册 for Devs
kubectl
kubectl是Kubernetes 命令行管理工具,我们可以通过kubectl来管理本地/远程 的Kubernetes集群。
请首先安装 kubectl,官网有安装方法 https://kubernetes.io/zh/docs/tasks/tools/
常用操作
查找pod
kubectl -n ${namespace} get pods ${podName}
查看 pod 信息
kubectl -n ${namespace} describe pod ${podName}
例:
查看pod完整信息
Name: lecare-insurance-58b7bdc4cd-76fvs
Namespace: lejian-insu
Priority: 0
Node: cn-hangzhou.192.168.121.215/192.168.121.215
Start Time: Fri, 11 Jun 2021 14:38:20 +0800
Labels: app=lecare-insurance
pod-template-hash=58b7bdc4cd
Annotations: <none>
Status: Running
IP: 192.168.137.200
IPs:
IP: 192.168.137.200
Controlled By: ReplicaSet/lecare-insurance-58b7bdc4cd
Containers:
lecare-insurance:
Container ID: docker://a4d76e08f026adaefc0eed451de550cf63dea3bcd038ea89ac93227c413d675d
Image: registry.cn-hangzhou.aliyuncs.com/lejian-insu/lecare-insurance:ab22bc48
Image ID: docker-pullable://registry.cn-hangzhou.aliyuncs.com/lejian-insu/lecare-insurance @sha256:b050fcd4fc00f1bc2bd2811c8bd4452ca83e2796d34b92a2ce61973938e3c58d
Port: 8080/TCP
Host Port: 0/TCP
Command:
java
-jar
lecare_insurance.jar
-Djava.security.egd=file:/dev/./urandom
--spring.profiles.active=${RUNNING_ENV}
-Xmx2g
-Xms1g
-Xmn1g
-Xss512k
--server.port=8080
State: Running
Started: Fri, 11 Jun 2021 14:38:41 +0800
Ready: True
Restart Count: 0
Limits:
cpu: 2
memory: 4Gi
Requests:
cpu: 100m
memory: 2Gi
Environment:
MYSQL_USERNAME: <set to the key 'MYSQL_USERNAME' in secret 'mysql-prod'> Optional: false
MYSQL_PASSWORD: <set to the key 'MYSQL_PASSWORD' in secret 'mysql-prod'> Optional: false
REDIS_HOST: <set to the key 'REDIS_HOST' of config map 'lecare-insurance-vars'> Optional: false
REDIS_PORT: <set to the key 'REDIS_PORT' of config map 'lecare-insurance-vars'> Optional: false
REDIS_DATABASE: <set to the key 'REDIS_DATABASE' of config map 'lecare-insurance-vars'> Optional: false
REDIS_PASSWORD: <set to the key 'REDIS_PASSWORD' in secret 'redis-prod'> Optional: false
MYSQL_URL: <set to the key 'MYSQL_URL' of config map 'lecare-insurance-vars'> Optional: false
MYSQL_DATABASE: <set to the key 'MYSQL_DATABASE' of config map 'lecare-insurance-vars'> Optional: false
RUNNING_ENV: <set to the key 'RUNNING_ENV' of config map 'lecare-insurance-vars'> Optional: false
Mounts:
/etc/localtime from datetime (rw)
/opt/javalogs from javalogs (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-2lkn2 (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
mysql-prod:
Type: Secret (a volume populated by a Secret)
SecretName: mysql-prod
Optional: false
redis-prod:
Type: Secret (a volume populated by a Secret)
SecretName: redis-prod
Optional: false
javalogs:
Type: HostPath (bare host directory volume)
Path: /var/lib/container/log
HostPathType:
datetime:
Type: HostPath (bare host directory volume)
Path: /usr/share/zoneinfo/Asia/Shanghai
HostPathType:
default-token-2lkn2:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-2lkn2
Optional: false
QoS Class: Burstable
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 54m default-scheduler Successfully assigned lejian-insu/lecare-insurance-58b7bdc4cd-76fvs to cn-hangzhou.192.168.121.215
Normal AllocIPSucceed 54m terway-daemon Alloc IP 192.168.137.200/20 for Pod
Normal Pulling 54m kubelet Pulling image "registry.cn-hangzhou.aliyuncs.com/lejian-insu/lecare-insurance:ab22bc48"
Normal Pulled 53m kubelet Successfully pulled image "registry.cn-hangzhou.aliyuncs.com/lejian-insu/lecare-insurance:ab22bc48"
Normal Created 53m kubelet Created container lecare-insurance
Normal Started 53m kubelet Started container lecare-insurance
因为pod的信息比较多,如果想筛选,请使用grepkubectl describe pod lecare-insurance-58b7bdc4cd-76fvs | grep IP:
- 查看pod console日志
可以支持 类似 tail 、more 命令的参数,比如:kubectl -n ${namespace} logs ${podName}
kubectl -n ${namespace} logs -f --tail=100 ${podName}
// -f 持续输出日志 --tail=n 从当前日志尾部n行开始输出
- 使用shell登录pod中容器环境
一般基础容器镜像包含 sh 或 bash 等shell程序kubectl exec ${podName} -it ${shell}
kubectl -n ${namespace} exec ${podName} -it sh //使用sh 作为shell
kubectl -n ${namespace} exec ${podName} -it bash //使用 bash 作为shell
kubectl 增效工具
下面这些工具可以非常好的提高使用kubectl的效率。但是遗憾的是只有macOS和linux可以简单安装。
kubens / kubectx (macOS/linux)
https://github.com/ahmetb/kubectx
kubens 指定全局 namespace,可以省去每次加 -n ${namespace}麻烦之处。
kubectx 快速切换 .kube/config 下不同的k8s集群环境(.kube/config内可以配置多个集群)。
stern (macOS/linux/windows)
https://github.com/wercker/stern
快速读取pod内容器的标准输出,方便排查日志找问题。
kubectxwin (windows)
kubens、kubectx 的windows版本
https://github.com/thomasliddledba/kubectxwin
kt connect / telepresence
他们都是基于 kubectl proxy-forward 来实现容器内外网络互通的工具。
kt-connect
https://github.com/alibaba/kt-connect
telepresence
https://github.com/telepresenceio/telepresence
Jvm remote debug
借助上面提到的 kt-connect 和 telepresence,我们可以非常容易的实现本地和k8s容器网络互通。接下来对于jvm remote debug就非常容易了。
在我们的jvm启动参数上增加 remote debug 端口
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10086
在k8s中启动应用,并通过上面提到的找到应用对应的pod,定位pod的ip
kubectl describe pod lecare-insurance-58b7bdc4cd-76fvs | grep IP:
启动kt-connect
sudo ktctl connect
kt-connect连接
在我们的IDE中(eclipse 或者 idea )使用 Remote JVM Debug,填入上面获取的IP和JVM参数对应的端口
深圳SEO优化公司龙岗网站推广工具推荐包头seo排名推荐湘潭外贸网站建设公司云浮营销型网站建设推荐宣城SEO按天收费报价温州高端网站设计泉州网站优化按天收费哪家好楚雄百度竞价价格天门seo优化报价娄底网站推广系统推荐西乡百度爱采购公司大同网站搭建公司大芬模板制作多少钱韶关百度竞价包年推广南澳推广网站报价横岗网络营销菏泽外贸网站建设报价淮安网络营销桂林网站建设推荐益阳seo网站推广推荐娄底百度网站优化价格郑州设计公司网站金华网站推广方案推荐福州百姓网标王推广多少钱南联网络广告推广贵港企业网站制作多少钱滁州优秀网站设计那曲SEO按天收费报价辽阳网页设计公司娄底网站推广工具价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运
深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化