debug模式启动-支持sa 集群内(pod访问api)使用443加密

  • no1 no2 安装flanneld kubelet/kube-proxy
  • m1 安装etcd/ api/contruller/scheduler
flanneld -etcd-endpoints=http://192.168.x.x:2379 -iface=eth0 -etcd-prefix=/kubernetes/network
flanneld -etcd-endpoints=http://192.168.x.x:2379 -iface=eth0 -etcd-prefix=/kubernetes/network# 这里advertise一定要是一个具体的ip
etcd --advertise-client-urls=http://192.168.x.x:2379 --listen-client-urls=http://0.0.0.0:2379 --debugcd /kubernetes/network/config
etcdctl set /kubernetes/network/config < flannel-config.jsonkube-apiserver     --service-cluster-ip-range=10.254.0.0/16     --etcd-servers=http://127.0.0.1:2379     --insecure-bind-address=0.0.0.0     --admission-control=ServiceAccount     --service-account-key-file=/root/ssl/ca.key --client-ca-file=/root/ssl/ca.crt    --tls-cert-file=/root/ssl/server.crt --tls-private-key-file=/root/ssl/server.key --allow-privileged=true --storage-backend=etcd2  --v=2kube-controller-manager   --master=http://127.0.0.1:8080   --service-account-private-key-file=/root/ssl/ca.key  --cluster-signing-cert-file=/root/ssl/ca.crt --cluster-signing-key-file=/root/ssl/ca.key --root-ca-file=/root/ssl/ca.crt --v=2kube-scheduler   --master=http://127.0.0.1:8080   --v=2kubelet     --api-servers=http://192.168.x.x:8080     --allow-privileged=true     --cluster-dns=10.254.0.2     --cluster-domain=cluster.local.     --v=2kube-proxy  --master=http://192.168.x.x:8080  --v=2ps -ef|egrep  "kube-apiserver|kube-controller-manager|kube-scheduler"
ps -ef|egrep --color "kubelet|kube-proxy"发现apiserver如果没有--allow-privileged=true字段,仅仅kubelete有,启动daemonset类型的pod会报错如下

etcd key web浏览器

运行在后台: 注意端口  注意etcdip
docker run --name etcd-browser -p 0.0.0.0:8000:8000 --env ETCD_HOST=192.168.2.11 --env ETCD_PORT=2379 --env AUTH_PASS=doe -itd buddho/etcd-browser

k8s报错集合

参考: https://jimmysong.io/kubernetes-handbook/appendix/issues.html

DaemonSet创建报错: Forbidden: disallowed by cluster policy

The DaemonSet "skydive-agent" is invalid: spec.template.spec.containers[0].securityContext.privileged: Forbidden: disallowed by cluster policy解决: api-server也加--allow-privileged=true,因为我debug模式启的,开始时只为kubelet加了

kube-proxy报错:conntrack returned error导致不同ns间的services无法互相解析

kube-proxy报错kube-proxy[2241]: E0502 15:55:13.889842 2241 conntrack.go:42] conntrack returned error: error looking for path of conntrack: exec: "conntrack": executable file not found in $PATH解决: yum install conntrack-tools

使用 Headless service的时候kubedns解析不生效

修改 /etc/kubernetes/kubelet 文件中的 ––cluster-domain=cluster.local.  为––cluster-domain=cluster.local 最后的点去掉.

helm报错,因为没socat

解决: yum install socat -y

flannel不通问题解决

机器重启导致flannel的subnet变化,而docker加载的还是原来的subnet,导致node间容器不互通
http://www.cnblogs.com/iiiiher/p/7889295.html

kubectl 命令显示unkown排错(kubelet服务挂了)

kubenet挂掉导致api无法访问kubenet的监控端口10250

CronJob创建时候提示不支持

参考

kube-apiserver启动参数中加入--runtime-config=batch/v2alpha1=true用于支持后面的 CronJob 对象

nginx-ingress的 DNS Policy不写时,在hostnetwork模式下,导致nginx-ingress自身无法解析集群svc

参考:
k8s集群里pod高负载访问apiserver的8080(api对外地址)

  • 1,我有3台api,我为他们手动建了个svc,kube-http-api,手动指定ep.
  • 2.集群内我是没用证书的,集群内的一些服务访问api都是通过域名来访问的kube-http-api
  • 3.其中我的ingess是访问的是我手动指定的api-server的域名
  • 4.ingress使用hostnetwork
  • 5.出现的问题是ingress无法访问到api-server导致ingress创建不成功(但是指定某个api的ip是可以正常访问)

原因及解决办法:
nginx-ingress是hostnetwork模式, 而这种模式的pod的/etc/resolve.conf的dns是继承宿主机的(相当于dokcer run --net=host,共享宿主机网络协议栈,因此也继承了网卡dns),导致访问集群里的 api svc无法解析

只有kube-system里svc打了 kubernetes.io/cluster-service=true标签clusterinfo才出现

参考: http://www.cnblogs.com/iiiiher/p/7880493.html#t9

集群内部token问题和pod访问api 443问题排查

我刚开始时候集群内外是不想用证书的,为了简单. 后来发现很多的pod访问api,他们的yaml默认都是走443 api-svc的方式. 而且有些pod启动需要secret,因此研究了下集群内证书. 目前集群内pod访问api大多走443,集群外访问一律8080.

token问题和证书问题
注:
一定要在controller上和api同时都加上证书. 另外在api上需要额外的追加公私钥参数.

kubectl delete -f cni-flannel.yml create pod后,kubectl get po没显示

查看是不是yml里指定的sa不存在

    spec:serviceAccountName: flannel

一个pod多个容器,如何只重启一个容器

  • 定制镜像(supervisor/s6+工作进程), kill进程的方法
  • 干掉pod(这样的话所有的容器都干掉了,考虑分pod)

证书生成

集群部署on the fly 见上面

debug模式step by step


192.168.14.134 m1.ma.com m1
192.168.14.132 n1.ma.com n1
192.168.14.133 n2.ma.com n2########################################################################
systemctl stop firewalld && systemctl disable firewalld
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1
sysctl -w net.ipv4.ip_forward=1
echo 'iptables -P FORWARD ACCEPT' >> /rc.local
iptables -P FORWARD ACCEPT
sysctl -p########################################################################
mkdir -p /kubernetes/network/config/
cat > /kubernetes/network/config/flannel-config.json << EOF
{"Network": "10.2.0.0/16","SubnetLen": 24,"Backend": {"Type": "host-gw"}
}
EOFetcd --advertise-client-urls=http://0.0.0.0:2379 --listen-client-urls=http://0.0.0.0:2379 --debug
cd /kubernetes/network/config
etcdctl set /kubernetes/network/config < flannel-config.jsonflanneld -etcd-endpoints=http://192.168.14.134:2379 -iface=eth0 -etcd-prefix=/kubernetes/networkcat /run/flannel/subnet.env
vim /usr/lib/systemd/system/docker.service
--bip=10.2.20.1/24 --mtu=1500 --ipmasq=true
--bip=10.2.98.1/24 --mtu=1450systemctl daemon-reload
systemctl restart docker
ps -ef|grep docker########################################################################
kube-apiserver \--service-cluster-ip-range=10.254.0.0/16 \--etcd-servers=http://127.0.0.1:2379 \--insecure-bind-address=0.0.0.0 \--v=2--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota \kube-controller-manager \--master=http://127.0.0.1:8080 \--v=2kube-scheduler \--master=http://127.0.0.1:8080 \--v=2pkill kube-apiserver
pkill kube-controller-manager
pkill kube-schedulerps -ef|egrep  "kube-apiserver|kube-controller-manager|kube-scheduler"########################################################################kubelet \--api-servers=http://192.168.14.134:8080 \--allow-privileged=true \--v=2kubelet \--api-servers=http://192.168.14.134:8080 \--allow-privileged=true \--cluster-dns=10.254.0.2 \--cluster-domain=cluster.local. \--v=2kube-proxy \--master=http://192.168.14.134:8080 \--v=2pkill kubelet
pkill kube-proxyps -ef|egrep "kubelet|kube-proxy"#####################################################################
yum install bash-com* -y
source <(kubectl completion bash)alias kk='kubectl get pod --all-namespaces -o wide --show-labels'
alias ks='kubectl get svc --all-namespaces -o wide --show-labels'
alias wk='watch kubectl get pod --all-namespaces -o wide --show-labels'alias klog-dns='kubectl logs -f --namespace=kube-system $(kubectl get pods --namespace=kube-system -l k8s-app=kube-dns -o name) -c kubedns'
alias klog-dnsmasq='kubectl logs -f --namespace=kube-system $(kubectl get pods --namespace=kube-system -l k8s-app=kube-dns -o name) -c dnsmasq'
alias klog-sidecar='kubectl logs -f --namespace=kube-system $(kubectl get pods --namespace=kube-system -l k8s-app=kube-dns -o name) -c sidecar'yum install -y conntrack-tools socat  #这个kubelet日志里看到需要

建议

至少node节点swapoff -a 关闭swap

内核优化项

net.ipv4.tcp_mem = 16777216 16777216 16777216
net.ipv4.tcp_rmem = 1024 4096 16777216
net.ipv4.tcp_wmem = 1024 4096 16777216
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.core.optmem_max=16777216
fs.file-max=2097152
fs.nr_open=2097152
net.nf_conntrack_max=1000000
net.netfilter.nf_conntrack_max=1000000

查看组件日志

journalctl -u kube-apiserver -f

转载于:https://www.cnblogs.com/iiiiher/p/7888934.html

[k8s]debug模式启动集群k8s常见报错集合(on the fly)相关推荐

  1. python redis 集群_python 连接redis集群 ,常见报错解决。

    背景:工作需要,处理的数据需要通过redis进行缓存处理,之后方便统计分析. 目标:python连接redis进行读取&写入. 连接 redis 与 redis集群 是不同的 !!! 一.连接 ...

  2. 启动pycharm时的常见报错问题以及解决方法--版本以及无法检测到图形环境

    1.版本问题 报错 [kiosk@foundation65 bin]$ sh pycharm.sh OpenJDK 64-Bit Server VM warning: Option UseConcMa ...

  3. k8s使用port-forward访问集群中的应用程序(只能在执行命令的机器上开放端口)

    k8s使用port-forward访问集群中的应用程序 本文描述了如何使用 kubectl port-forward 访问 Kubernetes 集群中的 Redis Server.这种连接方式在实际 ...

  4. K8s系列之:搭建高可用K8s v1.23.5集群详细步骤,3个master节点,3个Node节点

    K8s系列之:搭建高可用K8s v1.23.5集群详细步骤,3个master节点,3个Node节点 一.K8s集群节点划分 二.k8s集群环境准备 三.关闭swap 四.关闭ipv6 五.桥接IPv4 ...

  5. 基于kubeadm快速部署kubernetes K8S V1.17.4集群-无坑完整版

    基于kubeadm快速部署kubernetes K8S V1.17.4集群,并部署Dashboard Web页面,实现可视化查看Kubernetes资源 主机配置规划 服务器名称(hostname) ...

  6. Kubernetes(k8s)部署etcd集群

    Kubernetes(k8s)部署etcd集群 目录 Kubernetes(k8s)部署etcd集群 一.实验环境 二.ETCD集群部署 2.1 master 节点部署 2.1.1 定义两个脚本文件 ...

  7. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  8. # kubeadm ——k8S新节点加入集群-notready 问题解决

    kubeadm --k8S新节点加入集群 https://www.cnblogs.com/chuangcc/p/10697394.html 加入集群除了需要 token 外,还需要 Master 节点 ...

  9. k8s常见报错以及解决方法(一)

    k8s常见报错以及解决方法(一) 现阶段我们使用k8s集群越来越多,随之而来的是一系列的问题,接下来我向大家来介绍一下我遇到的一些问题以及解决方法 一.报错cannot allocate memory ...

最新文章

  1. Python 之 Numpy (三)运算
  2. 可遇不可求的BUG之采用MYSQL odbc 3.51访问数据库返回值缺失
  3. rror Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that
  4. 2019年暑假慈溪集训(更新ing)
  5. Android当中layer-list使用来实现多个图层堆叠到一块儿
  6. Suricata的初始化脚本
  7. SAS对数据变量的处理
  8. MySQL高可用--MGR入门(1)单主/多主模式搭建
  9. 解决sublime text3 v3.1.1,Build3176中的汉字形状扭曲问题
  10. linux 驱动编写(sd卡驱动)
  11. [转]Java 强引用、 软引用、 弱引用、虚引用
  12. java类分析_java常用类系列之System
  13. solidity教程:solidity语言入门
  14. Navicat Premium 12.1.21 最新版激活工具及方法
  15. Ventoy+WePE 装机教程
  16. XPS文件怎么转成Word呢
  17. IT行业的工作内容是什么?
  18. 青蛙跳台阶 php,php中青蛙跳台阶的问题解决方法
  19. Prometheus node_exporter报错context deadline exceeded
  20. FITC-LCA 绿色荧光标记小扁豆凝集素

热门文章

  1. 高性能反向代理软件HAProxy(一)之基本概念
  2. 动态ACL+自反ACL
  3. 面试题 04.03. 特定深度节点链表
  4. Linux如何安装python pandas科学库
  5. matlab打开时总闪一下才打开_大家装窗帘轨道时,是不是多数都是下面这样的: 打开网易新闻 查看更多图片 或者做个窗帘盒,遮盖一下?...
  6. bankeralgorithm.jar中没有主清单属性_怀旧服:迅击指环和其拉之怒属性一致,为何狂暴战用迅击更好...
  7. Python——腾讯笔试编程题(函数练习)
  8. 随机生成关于银行卡号的字典(卡号以6102009开头,后面依次是001,002,...)
  9. matlab双轴坐标系对齐0,MATLAB双轴坐标图的画法(详细)
  10. 在python中传统除法运算符是_在Python中使用除法运算符时,如何获取十进制值?...