概述
文章目录
- 一、前言
- 二、安装(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集群搭建所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复