centos7 Kubernetes集群搭建


一、前言

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
准备工作:
master机:192.168.1.1
node机:192.168.1.10
关闭swap、防火墙、selinux

[root@www html]# swapoff -a          #临时关闭swap
[root@localhost ~]# iptables -F        #关闭防火墙
[root@localhost ~]# setenforce 0     #临时关闭selinux

二、安装(master和node均要安装)

[root@localhost ~]# yum install docker      #docker安装
[root@localhost ~]# systemctl start docker  #启动docker
[root@localhost ~]# echo "1">/proc/sys/net/bridge/bridge-nf-call-iptables  #启用iptables
[root@localhost ~]# cat <<EOF> /etc/yum.repos.d/kubernetes.repo   #配置阿里源
[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
[root@localhost ~]# yum install kubelet-1.16.0 kubeadm-1.16.0 kubectl-1.16.0 -y  #安装k8s相关服务

三、配置

1、master配置

[root@localhost ~]# kubeadm init \        #master初始化,node不需要执行
> --apiserver-advertise-address=192.168.1.1 \     #指定master
> --image-repository registry.aliyuncs.com/google_containers \    #指定使用阿里云的镜像
> --kubernetes-version v1.16.0 \     #指定k8s版本
> --service-cidr=10.1.0.1/16 \          #选择一个和本机网络、pod不冲突的地址
> --pod-network-cidr=10.244.0.0/16   #k8s内部pod节点的地址

安装完后,按照提示需要执行以下命令,同时记录kubeadm join等,node加入时需要

[root@localhost ~]# mkdir -p $HOME/.kube
[root@localhost ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@localhost ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@localhost ~]# kubectl get node           #查看集群
NAME                    STATUS     ROLES    AGE     VERSION
localhost.localdomain   NotReady   master   2m54s   v1.16.0

2、节点加入
按照master在kubeadm init得到得信息,加入集群中

[root@node ~]# kubeadm join 192.168.1.1:6443 --token 4s6t1z.9x1ggsrd2fmq4ddy \
> --discovery-token-ca-cert-hash sha256:263374aef1325baf7d7b07f7253b3ce6358f6f6ee6d37ce70d2a3c619025bbd1

再次查看集群

[root@localhost ~]# kubectl get node
NAME                    STATUS     ROLES    AGE   VERSION
localhost.localdomain   NotReady   master   18h   v1.16.0
node                    NotReady   <none>   12s   v1.16.0

四、安装问题

1、master在安装时,2G1C,kubeadm init 报错,同时kubelet一直报错。虚拟机修改成2G2U后该报错未出现,kubelet报错发现是未配置阿里源,导致kubelet版本不一致,全卸载后重新安装正常。
2、在指定master时,IP地址输入错误,多加了个1,报错Unable to connect to the server: dial tcp 192.168.11.1:6443: i/o timeout。网上查看修改太麻烦,就卸载重装一次

[root@localhost ~]# kubeadm reset            #kubeadm重置 
[root@localhost ~]# yum remove kubelet kubeadm kubectl kubernetes-cni  #卸载

3、在节点配置,不是全新环境,之前有配置过,有包含docker,到安装完k8s服务后,加入集群报错 [WARNING SystemVerification]: this Docker version is not on the list of validated versions:只能卸载重装docker。重装完毕后docker服务异常。docker.service failed。同时kubectl也报错 [WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'。为解决这2个问题,将docker和k8s服务全卸载重装一次才正常。
4、journalctl -f -u kubelet查看Unable to update cni config: no networks found in /etc/cni/net.d报错。

[root@master01 ~]# vi /var/lib/kubelet/kubeadm-flags.env   #修改,将--network-plugin=cni去掉
KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd --pod-infra-container image=registry.aliyuncs.com/google_containers/pause:3.1"
[root@master01 ~]# systemctl restart kubelet       #重启服务

5、journalctl -f -u kubelet查看unknown container "/system.slice/kubelet.service"报错

[root@master01 ~]# vi /var/lib/kubelet/kubeadm-flags.env   #添加末尾添加--runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice
[root@master01 ~]# systemctl daemon-reload
[root@master01 ~]# systemctl restart kubelet
[root@master01 ~]# kubectl get node     #master和node全改完后再次查看master状态恢复正常
NAME       STATUS   ROLES    AGE    VERSION
master01   Ready    master   106m   v1.16.0
node01     Ready    <none>   104m   v1.16.0

6、node节点创建kubectl create ns testError from server (Forbidden): namespaces is forbidden: User "system:node:node01" cannot create resource "namespaces" in API group "" at the cluster scope in the namespace "default": can only create tokens for individual service accounts。报错
[root@node01 ~]# whereis kubectl #查看路径
kubectl: /usr/bin/kubectl
[root@node01 ~]# vi /usr/bin/kubectl #从master复制/root/.kube/config内容到这里
[root@node01 .kube]# kubectl create ns test
namespace/test created
#一般不建议这种操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值