首页 > 其他分享 >k8s遇到的坑

k8s遇到的坑

时间:2023-07-24 17:37:06浏览次数:41  
标签:cri kubernetes 遇到 -- master dockerd k8s root

换源之后出现数字签名错误

W: GPG 错误:https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY B53DC80D13EDEF05
E: 仓库 “https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease” 没有数字签名。
N: 无法安全地用该源进行更新,所以默认禁用该源。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。

使用apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B53DC80D13EDEF05失败

解决办法:apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys B53DC80D13EDEF05

image-20230322172705747

{

​ "registry-mirrors": ["https://mk1a3ruz.mirror.aliyuncs.com"],

​ "exec-opts": ["native.cgroupdriver=systemd"]

}

使用cri-dockerd

https://github.com/Mirantis/cri-dockerd/tags

下载最新的cri-dockerd,注意要选择跟cpu内核匹配的版本

image-20230324150632144


Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.20.113:6443 --token wen4ff.7d0ugqdkw5w8ionz \
        --discovery-token-ca-cert-hash sha256:65141e1664c9a50071645af71bb01230702cb36dd2b3312dcea6c69238477528 
root@lxt-master:~# cd /usr/lib/systemd/system
root@lxt-master:~# cp cri-dockerd/cri-dockerd /usr/bin/
root@lxt-master:~# vim /usr/lib/systemd/system/cri-docker.service 
root@lxt-master:~# systemctl daemon-reload 
root@lxt-master:~# systemctl enable cri-docker --now
root@lxt-master:~# systemctl status cri-docker

Cri-dockerd需要配置两个文件

image-20230324150829871

如果没有system文件夹,新建一个就行了

这两个文件也需要手动创建

Cri-dockerd.service

[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket

[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3

# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target
~                              

Cri-dockerd.socket

[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service

[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target

配置完成后重新加载并设置为开机启动

systemctl daemon-reload ; systemctl enable cri-docker --now

Kubeadm init启动时添加指定cri-dockerd的参数

kubeadm init --apiserver-advertise-address=192.168.20.126 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.26.3 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all --cri-socket /var/run/cri-dockerd.sock

这个操作在node上也要做一遍,但是和master上不同的是,node上是从join加入的时候加上--cri-socket及之后的内容

kubectl get nodes 失败

image-20230324154755550

原因是kubeadm初始化时master没有与本机绑定

解决办法:设置环境变量

root@lxt-master:# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
root@lxt-master:# source /etc/profile
root@lxt-master:# kubectl get nodes
NAME         STATUS     ROLES           AGE   VERSION
lxt-master   NotReady   control-plane   23m   v1.26.3

问题解决

kubeadm token失效

因为init之后一直没有将node加入到集群中,隔几天再加入进去的时候发现报错

image-20230327154235260

报错信息

error execution phase preflight: couldn't validate the identity of the API Server: could not find a JWS signature in the cluster-info ConfigMap for token ID "wen4ff"

原因是token失效,在master上通过kubeadm token list命令查看当前有效的token

image-20230327154424056

list下无结果,通过kubeadm token create创建一个token

因为加入集群的时候还要指定一个sha256,这个一般是init成功之后会直接显示,如果忘记这个值,使用openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'查看

image-20230327154743790

kubernetes dashboard 授权/权限/角色绑定问题导致页面报错

image-20230328175431754

serviceaccount kubernetes-dashboard 权限问题,源文件namespace与当前环境namespace不一致

kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:kubernetes-dashboard

问题解决

rook部署时PodSecurityPolicy找不到的错误

error: resource mapping not found for name: "00-rook-privileged" namespace: "" from "common.yaml": no matches for kind "PodSecurityPolicy" in version "policy/v1beta1"

原因是PodSecurityPolicy在k8s后续版本中已经被移除,无法使用

解决办法:下载rook最新压缩包,把最新的common.yaml文件传到master上(传不传都一样,能访问到就行)

然后再执行kubectl apply -f common.yaml

image-20230330160750740
kubectl apply -f operator.yaml
kubectl apply -f cluster.yaml

成功部署

image-20230330160808061

默安

CSCASI=csc-qh-C1AB8CAA6566B73CBF4FDC818BEA0F249858357CA72D6DD3.1685945103099; CSCSID=GdTfZfvax2IkcZghR5fRfeyHNtSlRtYn;

蚁迅

CSCASI=csc-qh-C1AB8CAA6566B73CBF4FDC818BEA0F249858357CA72D6DD3.1685945103099; CSCSID=GdTfZfvax2IkcZghR5fRfeyHNtSlRtYn;

标签:cri,kubernetes,遇到,--,master,dockerd,k8s,root
From: https://www.cnblogs.com/pr1s0n/p/17577819.html

相关文章

  • k8s架构
    核心组件etcd保存整个集群的状态apiserver提供资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制controllermanager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上kubelet负责......
  • 尚硅谷 k8s 学习笔记
    K8S进阶部分       1.Deployment部署           1.1自愈能力           1.2多副本           1.3扩容、缩容           1.4滚动更新           1.5版本回退           1.6工作负载  ......
  • 【遇到一个神奇的问题】暂未想到原因,http.Post 传入 nil参数正确,但是传输值为 nil 的
    出错的代码如下:funcgetEab(ctxcontext.Context,credentialsJSONstring,old*externalAccountKeyResp)(*externalAccountKeyResp,error){//inithttpclient// varpostData*bytes.Reader=nil ifold!=nil{ buf,_:=json.Marshal(old) postData......
  • 关于使用RocketMQ搭建多Master多Slave模式(同步)集群时遇到的问题
    搭建多Master多Slave模式(同步)集群时的java.lang.NullPointerException异常一、运行环境等基本描述(问题产生原因是权限问题,即权限不够导致无法启动broker,甚至broker线程无法通过jps命令查出。下面阐述分析思路)1.1)操作系统:Linux虚拟机:VMwareWorkstation16Pro、WSL ......
  • k8s修改证书有效期
    k8s各组件非常依赖证书而默认情况下ca证书是十年,而其他证书都只有一年Kubernetes中的如果证书过期了,会导致集群中的许多组件无法正常通信,从而影响整个集群的功能。所以在生产环境下,这是非常大的坑查看证书有效期方法一cd/etc/kubernetes/pkiforiin$(ls*.crt);doech......
  • 修改k8s的数据目录
    修改kubelet工作目录1、创建kubelet的数据目录mkdir-p/data/k8s/kubelet2、根据/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf加载/etc/sysconfig/kubelet文件vim/etc/sysconfig/kubeletKUBELET_EXTRA_ARGS="--root-dir=/data/k8s/kubelet"#命令sed......
  • k8s基础之概念讲解
    目录1Kubernetes1.1简介1.2特性1.3架构1.4组件1.4.1MasterNode1.4.2WorkNode1.4.3service1.4.4Namespace1.4.5Volume1.5Pod控制器1.5.1pod1.5.2Pod控制器1Kubernetes1.1简介Kubernetes是一个全新的基于容器技术的分布式架构解决方案,是Google开源的一个容器......
  • (建议收藏)如何处理 openGauss 上遇到的慢 SQL
    (建议收藏)如何处理openGauss上遇到的慢SQL发布于 2022-12-0714:19:154460举报大家好,我是JiekeXu,很高兴又和大家见面了,今天和大家一起来学习在openGauss上遇到慢SQL该怎么办?在数据库的日常使用中,难免会遇到慢SQL,遇到慢SQL本身并不可怕,困难......
  • 【专题】展望人工智能银行:当银行遇到AI报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32210在2016年,AlphaGo机器人打败了18届世界棋王李世石,成为了世界棋坛上最伟大的人物。阅读原文,获取专题报告全文,解锁154份文末人工智能银行相关报告。围棋是一种非常复杂的棋类,它要求有很强的直觉,想像力和策略性的思考,而这一切在很长一段时间里都......
  • 建议收藏 | 在openGauss上遇到慢SQL该怎么办?
    建议收藏|在openGauss上遇到慢SQL该怎么办?top_tony发布于2022-8-1715:451469浏览0收藏在数据库的日常使用中,难免会遇到慢SQL,遇到慢SQL本身并不可怕,困难之处在于如何识别慢SQL并对其优化,使它不至于拖慢整个系统的性能,避免危害到日常业务的正常进行。对不同的数据库......