从头开始linux到k8s 过程(错误收录)

分享一个自己以前从0开始搭建linux到k8s+jenkins环境遇到过的问题解决方案

安装k8s可参考例子 带flannel http://www.cnblogs.com/xiaochangwei/p/kubernetes-03.html

1、安装好虚拟机后,配置网络虚拟机可以ping通外网,但是宿主机无法ping通虚拟机

点击编辑->虚拟网络编辑器,选择VMnet8.选择桥接模式,不共享主机ip 这样别的局域网机器可以连接上,nat模式其他机器连不上虚拟机

NAT模式(与虚拟机共享主机的IP地址),然后把将主机虚拟适配器连接到此网络打钩

具体操作见https://jingyan.baidu.com/article/5553fa82a2 d48665a2393432.html

2、怎样开通docker端口供外部推送镜像

在/usr/lib/systemd/system/docker.service ,进入编辑模式后,将ExecStart这一行后面加上
-H tcp://0.0.0.0:2375 -H unix: ///var/run/docker.sock**

3、netstat命令找不到

yum install net-tools

4、Kubernetes创建pod一直处于ContainerCreating排查和解决

yum install *rhsm*安装完成后

执行一下

docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest

如果依然报错,可参考下面的方案:

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm

rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem

然后在执行上面docker pull命令

5、接下来k8s配置安装k8s全文指南配置

6、etcd错误[Error: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused](https://www.cnblogs.com/lkun/p/9486156.html)

vim /etc/etcd/etcd.conf 在 ETCD_LISTEN_CLIENT_URLS="http://192.168.7.78:2379,http://127.0.0.1:2379"里面添加一下127.0.0.1:2379

7、设置k8s开机启动时候找不到文件,

各种文件存在于 /usr/lib/systemd/system/

8、使用yum install kubernetes安装的k8s找不到master

在/etc/kubernetes/config文件里面有默认配置需要修改apiserver地址

确认端口是否开放2379 8080

9、centos7中安装java

yum -y install java-1.8.0-openjdk*

10、cengos7中安装git

https://www.cnblogs.com/liter7/p/6581344.html (这个是git仓库,选择是否需要安装)

https://blog.csdn.net/javaee_sunny/article/details/80450153(安装新版git)

yum –y install git**(yum install git 安装的Git版本过低,应该用jenkins安装插件或自行 安装更高版本)**

11、centos7中安装maven

http://www.cnblogs.com/qiyuan880794/p/9407342.html

12、在 master中安装jenkins

https://blog.csdn.net/linjingke32/article/details/77799878

13、刚安装好的jenkins 创建好用户后主页空白页

重新启动jenkins服务后解决

14、安装好mysql以后外网无法连接数据库

mysql>

mysql>use mysql;

mysql>select ‘host’ from user where user=‘root’;

update user set host = ‘%’ where user =‘root’;

#修改host值(以通配符%的内容增加主机/IP地址,当然也可以直接增加某个特定IP地址,如果执行update语句时出现ERROR 1062 (23000): Duplicate entry ‘%-root’ for key ‘PRIMARY’ 错误,需要select host from user where user = ‘root’;

查看一下host是否已经有了%这个值,如果有了直接执行下面的flush privileges;即可)

15、安装harbor

https://blog.csdn.net/aixiaoyang168/article/details/73549898

16、在jenkins配置git There's no such executable git in PATH: /sbin, /usr/sbin, /bin, /usr/bin.

https://blog.csdn.net/wangfei0904306/article/details/56011877

在出错的地方填入: “whereis git"的地址 + “/bin/git” (如上面"whereis git"的地 址为”/usr/local/git",则应该填入 “/usr/local/git/bin/git”) 并保存

17、git安装完了但是git --version 找不到

因为我git安装到了/usr/local/git/bin 所以要设置一下环境变量

18、jenkins使用readMavenPom

添加插件Pipeline Utility Steps,在readMavenPom出错时,要在scriptApproval允许Approvals

19、 No such DSL method 'withMaven' found among step

缺少插件pipeline-Maven-integration

20、jenkins pipeline运行 提示mvn命令找不到

应该是配置centos7中的路径错误 ,暂时使用自动安装maven解决

21、流水线命令 def app = docker.build"192.168.146.133/hello:${env.BUILD_NUMBER} " app.push()错误 dial unix /var/run/docker.sock: connect: permission denied

将jenkins用户加入docker组

重启Jenkins服务

sudo gpasswd -a jenkins docke sudo service jenkins restart

sudo groupadd docker //如果不存在,创建docker用户组

貌似需要重启服务器

22、 dial tcp 192.168.146.133:443: getsockopt: connection refused

内网搭建自己的docker 仓库时遇到这个问题,原因是docker 默认不支持http的registry ,

vim /etc/docker/daemon.json 添加 { “insecure-registries”:[“hub.zuobiao.com”] }

重启 docker

systemctl restart docker.service

23、Jenkins的Credentials(证书)管理 特别重要。。harbor账户认证也在这里配置

https://blog.csdn.net/zzy1078689276/article/details/77494012

24、pipeline删除镜像失败 。提示坏的替换

因为使用了${env.BUILD_NUMBER} 写在了单引号中, 需要写在双引号中

sh “docker rmi 192.168.146.133/hello/hello:${env.BUILD_NUMBER}”

25、docker打包后的镜像运行后Error: Could not find or load main class jar

dockerfile文件写错。测试后如下可用

FROM frolvlad/alpine-oraclejdk8:slim

VOLUME /tmp

ADD target/hello-0.0.1-SNAPSHOT.jar /app.jar

CMD [“bash”,"-c",“touch /app.jar”]

ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar",“app.jar”]

26、运行完删除旧镜像报错

可以使用try catch语句写入删除

27、使用pipeline修改rc文件 无法打开临时文件 /home/fengfan/kubernetes/sedwsAlt9: 权限不够

暂时把文件放在了项目中 ,待解决?、

28、pod日志Error from server: Get https://192.168.146.132:10250/containerLogs/default/hello-q84f9/hello?follow=true: dial tcp 192.168.146.132:10250: getsockopt: no route to host

给node节点开启10250端口

29、 Error syncing pod, skipping: failed to "StartContainer" for "hello" with ErrImagePull: "image pull failed for 192.168.146.133/hello/hello:64, this may be because there are no credentials on this request. details: (Get https://192.168.146.133/v1/_ping: dial tcp 192.168.146.133:443: getsockopt: connection refused)"

原因是node节点没有给docker设置harbor仓库地址

解决方法见https://www.jianshu.com/p/1409967439d6

30、kuberneter滚动升级 不能用rc要用Dployment 否则会出现名称重复报错

Kubernetes集群中Service的滚动更新

https://tonybai.com/2017/02/09/rolling-update-for-services-in-kubernetes-cluster/

31、node2节点运行端口没启用

在/etc/kubernetes/kubelet文件中放开 KUBELET_PORT="–port=10250"?????

node1安装了flannel node2没有安装配置的问题

然后/etc/kubernetes/config通用配置别忘记改

32、使用nginx做负载均衡和反向代理

修改nginx.conf文件

upstream hello{

​ server 192.168.146.132:30002 weight=1 max_fails=2 fail_timeout=30s;

​ server 192.168.146.135:30002 weight=1 max_fails=2 fail_timeout=30s;

​ }

location / {

​ proxy_pass http://hello;

​ }

33、添加keepalived 实现高可用

http://blog.51cto.com/superpcm/2095395

34、使用keepalived时节点不会生成vip

virtual_ipaddress {

​ 192.168.146.139

​ }要写一个使用ip段中间的ip

35、如果keepalived运行正常但是本机的nginx运行错误导致不会切换到子节点

写一个脚本2秒运行一次检测nginx是否正常 ,如果不正常则停止keepalived

#!/bin/bash

while true

do

if [ $(netstat -tlnp|grep nginx|wc -l) -ne 1 ]

then

​ systemctl stop keepalived

fi

sleep 2

done

36、局域网无法访问本虚拟机服务

在虚拟机上设置端口代理转发

至此完成简单的k8s整合jenkins docker的ci/cd完整例子

项目在git hello

37、Kubernetes暴露端口给本机调用端口不通问题

通过k8s暴漏端口,外部访问就是端口不通,后发现ip规则问题
这是新版本docker导致的问题,默认情况下这个是DROP
执行以下命令就可以了
iptables -P FORWARD ACCEPT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值