centOS内网安装kubernetes集群

最近需要在公司内部不能访问外部网络的主机上安装k8s,内部机器是没法访问外网的,只能访问内部的镜像仓库,和yum库。 记录一下:

安装过程

    实际上还是参考的这两篇文章【文章一】和 【文章二】。只不过重要的几个步骤需要特殊处理下

1,更新yum源

     添加kubernetes YUM软件源,这个是内网的源。不是公网的,确保内部yum源有资源。

     中途可能会遇到错误提示

在这里插入图片描述

这里需要手动安装一下 kubernetes-cni

yum -y install kubernetes-cni = 0.6.0

    然后再执行安装命令 ,我遇到的问题是三个一起装会【遇到问题:kubelet版本一直是最新版本】,所以分开安装。

yum install -y kubelet-1.16.10-0
yum install -y  kubeadm-1.16.10-0 kubectl-1.16.10-0

2,部署k8s master(10.xx.xxx.xx是你部署master节点机器的IP)

kubeadm init 
\--apiserver-advertise-address=10.xx.xxx.xx 
\--image-repository your-inner-registry.cn/google-containers 
\--kubernetes-version v1.16.10 
\--service-cidr=10.1.0.0/16 
\--pod-network-cidr=10.244.0.0/16

     请注意,上面我安装的版本是 1.16.10

     注意这个参数:image-repository 这个参数的值your-inner-registry.cn/google-containers,是指定一个内部的镜像仓库,这个仓库必须要包含下面几个镜像,注意版本一致性:

kube-apiserver:v1.16.10
kube-controller-manager:v1.16.10
kube-scheduler:v1.16.10
kube-proxy:v1.16.10

pause:3.1
etcd:3.3.15-0
coredns:1.6.2

     这些镜像需要你从阿里云或者google的镜像仓库,拉到本地,然后推送到你自己的内部的镜像仓库【your-inner-registry.cn/google-containers】里面去。

如果你安装低版本的kubeadm,可能不支持这个image-repository参数,这时候需要你手动将镜像pull到本地,然后重新打tag如下:

k8s.gcr.io/kube-apiserver:v1.16.10
k8s.gcr.io/kube-controller-manager:v1.16.10
k8s.gcr.io/kube-scheduler:v1.16.10
k8s.gcr.io/kube-proxy:v1.16.10

k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.15-0
k8s.gcr.io/coredns:1.6.2

3,安装flannel网络插件。

     这个也需要一个镜像,手动推送过去或者也放到内部仓库里面去。

     注意各个版本之间的对应关系【看这里

4,node节点也需要手动pull一下flannel以及pause/coredns/etcd等镜像

    安装步骤就走完了


troubleshooting

1,如果node节点一直处于notReady状态 用这个命令 查看日志
journalctl -f -u kubelet
2, join进集群的时候,这个错误 [ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1

    解决办法:

kubeadm reset
echo 1 > /proc/sys/net/ipv4/ip_forward
3, 如果pod一直启动不起来,通过`kubectl decribe pod xxxx` 查看日志 如果报错 network: failed to set bridge addr: “cni0“ already has an IP address different

    解决办法:

ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down
ip link delete cni0
ip link delete flannel.1
systemctl restart docker
4, 如果安装了calico网络插件,需要删除calico

    除了执行这个命令

kubectl delete -f  <yaml>

    还要去/etc/cni/net.d/目录下 删掉与calico相关的所有配置文件, 然后重启机器。 不然pod起不来,会报错 network: error getting ClusterInformation: connection is unauthorized: Unauthorized . 在这里发现的解决办法:source


     如果遇到需要卸载k8s重装的情况,参考这个链接: https://www.devopscat.tech/2018/10/completely-remove-kubernetes-from-machine-on-centos/


    其他docker简洁命令


停止所有容器
docker stop $(docker ps -aq)
删除所有的容器
docker rm $(docker ps -aq)
删除所有的镜像
docker rmi $(docker images -q)

    

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值