开发 Tips(16)
微信公众号
·
2019-11-27
·
via 陈少文的网站
陈少文的网站 Posts 开发 Tips(16) Please enable Javascript to view the contents
主要记录最近遇到的一些开发问题,解决方法。
1. Kubernetes 服务仅在负载节点可用 正常情况下 NodePort 类型的 Service ,任意 Node 节点 IP + 端口,都可以访问。但是,也有可能仅负载的 Node 节点 IP + 端口可以访问。
首先,可以尝试配置转发相关参数:
1
2
3
4
5
6
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
vm.swappiness=0
EOF
另外一种可能是防火墙,没有豁免 IPENCAP 协议:
Calico 网络插件,有两种模式 BGP 、IPIP。使用 IPIP 模式时,需要在防火墙中,开启 IPENCAP 协议。
2. /var/lib/docker 目录迁移或扩容 1
mv /var/lib/docker /var/lib/docker_bk
1
2
3
4
mkdir -p /data/docker/
rsync -avz /var/lib/docker_bk/ /data/docker/
du -h --max-depth= 0 /data/docker
ln -s /data/docker /var/lib/docker
3. kubectl 获取全部使用的镜像 1
kubectl get pod --all-namespaces -o= jsonpath = '{range .items[*]}{range .spec.containers[*]}{.image}{"\n"}{end}{range .spec.initContainers[*]}{.image}{"\n"}{end}{end}' | sort -u
4. 使用 Telepresence 远程调用 Kubernetes Telepresence 是 CNCF 基金会下的一个项目。它的工作原理是在本地和 Kubernetes 集群之间,搭建一个透明的双向代理。
使用 Telepresence 可以实现的功能:
本地的服务就可以完整的访问到远程集群中的其他服务。 本地的服务直接访问到 Kubernetes 里的各种资源,包括环境变量、Secrets、ConfigMap 等。 集群直接访问到本地暴露出来的接口。 kubectl 安装配置。 在本地,安装并配置 kubectl ,使其可以正常访问 Kubernetes 集群。
安装 Telepresence 1
2
brew cask install osxfuse
brew install datawire/blackbird/telepresence
本地连通远程分支 本地访问远程集群服务 找到服务域名:
1
2
3
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT( S) AGE
kubernetes ClusterIP 10.233.0.1 <none> 443/TCP 2h
myservice ClusterIP 10.233.4.163 <none> 8000/TCP 2m
打开本地任意 Console ,即可直接访问集群内部服务:
1
curl http://myservice:8000
远程集群访问本地服务 远程集群通过端口 8000 ,访问本地 8080 端口服务,有两种方式:
1
telepresence --new-deployment new_deploy_name --expose 8080:8000
1
telepresence --swap-deployment existed_deploy_name --expose 8080:8000
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。