我是靠谱客的博主 负责大神,最近开发中收集的这篇文章主要介绍centos7 Kubernetes集群搭建,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • 一、前言
    • 二、安装(master和node均要安装)
    • 三、配置
    • 四、安装问题


一、前言

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
#一般不建议这种操作

最后

以上就是负责大神为你收集整理的centos7 Kubernetes集群搭建的全部内容,希望文章能够帮你解决centos7 Kubernetes集群搭建所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部