K8S集群问题解决记录二


j8s使用yaml安装jenkins,一直是pending
项删除pod结果失败
后想通过重新执行命令进行覆盖,执行cd jenkins-master 
kubectl create -f .  报错,提示
Error from server (AlreadyExists): error when creating "Service.yaml": services "jenkins" already exists
Error from server (AlreadyExists): error when creating "ServiceaAcount.yaml": serviceaccounts "jenkins" already exists
Error from server (AlreadyExists): error when creating "StatefulSet.yaml": statefulsets.apps "jenkins" already exists
Error from server (AlreadyExists): error when creating "rbac.yaml": roles.rbac.authorization.k8s.io "jenkins" already exists

通过 
kubectl delete -f Service.yaml
kubectl delete -f ServiceaAcount.yaml
kubectl delete -f StatefulSet.yaml
kubectl delete -f rbac.yaml
挨个删除
查看kubectl get pods -n kube-ops  ,发现jenkins  已不存在了


查看日志
journalctl -f -u kubelet
systemctl status kubelet.service

重置
kubeadm reset


/sys/fs/cgroup/pids/libcontainer_113839_systemd_test_default.slice
/sys/fs/cgroup/pids/libcontainer_113839_systemd_test_default.slice

yaml采用缩进标识层级关系,不支持tab  .---表示新起一个yaml
apiversion  API标本
kind  资源类型   kubectl --help  ,api-resources
----
yaml通常通过生成方式,快速创建2种方式:
1、kubectl create 命令生成yaml文件

2、使用kubectl get 命令导出yaml文件


k8s最小单位是pod
k8s不会直接处理容器,而是处理pod,一个Pod包含1个或多个容器

一个pod中,网络是共享的
pod是短暂的,比如重新创建或启动  


pod存在的意义:

docker 对应容器 ,是单进程  (能反复调用的,守护进程)
docker ---一个程序--单进程 
pod是多进程的设计,运行多个应用程序--多个docker,通过pod管理多个进程
pod--多个docker容器--多个程序

Pod为了亲密性:
2个应用之间互相调用 
网络之间调用
2个应用需要频繁调用
pod里2个应用程序相当于本地调用 

pod实现机制:
多个容器,在同一个namespace里面,共享网络
实现原理:首先创建pause(又叫info)容器,一个ip 一个port 
接下来所有同namespace的容器,都加入pause ,实现网络共享

pod共享存储:

引入数据卷概念Volumn  使用数据卷进行持久化,通过挂载进行共享


进项拉取策略:
statefulset.yaml中间部分,拉取jenkins


pod资源限制:
pod资源请求  container限制(docker来做限制)
pod在调度时,容器限制最大资源


pod重启机制:
几种策略

pod健康检查:
running状态,可能容器内部不能提供服务了,应到应用层面进行检查
2种检查:存活检查,就绪检查
三种检查方式  httpget  exec   tcpsocket

k8s init 报错:[kubelet-check] Initial timeout of 40s passed.
解决:卸载k8s,创建配置文件:https://blog.csdn.net/weixin_40161254/article/details/112232302,重新init 

cat > /etc/sysctl.d/k8s.conf << EOF 
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1 
EOF


docker-1.12.6


yum install -y kubelet-1.18.1 kubeadm-1.18.1 kubectl-1.18.1


kubeadm reset


kubeadm init \--apiserver-advertise-address=192.168.0.201 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.18.1 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16


临时解决,重启失效
modprobe br_netfilter


cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes] 
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 
enabled=1 
gpgcheck=0 
repo_gpgcheck=0 
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg 
EOF

cat >>/etc/hosts<<EOF 
192.168.0.190 k8s-master 
192.168.0.195 k8s-node1
192.168.0.197 k8s-node2 
EOF


cat > /etc/sysconfig/modules/ipvs.modules <<EOF 
#!/bin/bash 
modprobe -- ip_vs 
modprobe -- ip_vs_rr 
modprobe -- ip_vs_wrr 
modprobe -- ip_vs_sh 
modprobe -- nf_conntrack_ipv4 
EOF


cat > /etc/sysctl.d/k8s.conf << EOF 
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

cat > /etc/docker/daemon.json << EOF
 { "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] }
EOF


kubeadm join 192.168.0.201:6443 --token etj3qd.wux7kdk2l0b2l5rj \--discovery-token-ca-cert-hash sha256:8fde72a8defcd909b9b28ecb661b049b33da4419cd89d0f08cadab67a0c1d501 


-----------

查看jenkins密码 
kubectl logs $(kubectl get pods -n kube-ops| awk '{print $1}' | grep jenkins) -n kube-ops  #kube-ops是你的namespace

kubectl get namespaces  #查看命名空间(命名空间包含了pods)
kubectl get pod --namespace=kube-ops  #查看具体命名空间下的pod
kubectl get pod jenkins-0 -n kube-ops -o yaml | kubectl replace --force -f - # 重启 namespace kube-ops下面的pod:jenkins-0,此命令执行后,查看pod状态为终止,稍等片刻会变成running

安装docker-compose因为版本问题,一直下载不了,换了个版本 就OK了


构建镜像
docker build -t  镜像名 .   #.代表默认路径

查看镜像
docker images
推送镜像到harbor报错,需要在vi /etc/docker/daemon.json 把harbor地址(192.168.0.208:85)加进去,
还需要用镜像加速器:"registry-mirrors": ["https://z1n7jdsa.mirror.aliyuncs.com"]  ,每个人阿里控制台 容器镜像服务,镜像工具里都有自己的地址,建议使用自己的 
然后重启docker
还需要登录才可以  docker login -u admin -p Harbor12345 192.168.0.208:85   一开始登录不上,重装harbor服务器上面的docker-compose 版本 1.24.0  harbor重装,再登录好了


----接下来测试Jenkins-Slave是否可以创建,需要编写piepeline脚本


1、服务器重启后,jenkins访问不了了。重启jenkins容器(重启了服务器master,重启kubelet后才可以访问)
2、服务器重启后,harbor无法访问,执行harbor stop 全部done以后再start (也尝试重启了docker kubelet)
3、pipeline动态创建jenkins-slave节点,一直阻塞住。改k8s 云配置,k8sURL   jenkins URL(刚开始是按照文档写的,不行,改了,还不行,改回去好了)好了
动态创建jenkins-slave节点,随着构建job结束,容器也会自动销毁 (构建的时候,在master服务器上观察kubectl get pod --namespace=kube-ops,动态的节点会从创建中,到运行,到终止,到消失)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

励志重写JDK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值