栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

CentOS7安装K8S集群

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CentOS7安装K8S集群

本来打算用Rancher安装,rancher安装好了之后,在master和node节点上执行命令,一直不成功。公司网管告诉我公司网络的各种限制,也没听懂,没办法,只能自己手动安装k8s集群了。记录一下成功的过程。

机器配置
机器ip地址配置
master192.188.1.2414核、16G内存、CentOS7.8
node1192.188.1.2424核、32G内存、CentOS7.8
node2192.188.1.2434核、32G内存、CentOS7.8
node3192.188.1.2444核、32G内存、CentOS7.8

待安装的版本:

Docker:20.10.10、K8S:1.21.0

安装Docker

四台机器都要安装

1、设置稳定的安装源(存储库)

​yum install yum-utils -y
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

2、导入证书

rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7

3、安装
 

#yum list docker-ce --showduplicates | sort -r
yum install -y docker-ce-20.10.10 docker-ce-cli-20.10.10 containerd.io

4、启动

systemctl start docker
systemctl enable docker

5、验证

docker version
docker run hello-world
更改主机名

更改四台机器的名称,分别是:Master、node1、node2、node3

[root@localhost ~]# hostname node1

[root@localhost ~]# bash

[root@node1 ~]#

SSH设置

master机器上,vi /etc/hosts,添加

192.168.2.10 node1
192.168.2.20 node2
192.168.2.30 node3

生成ssh公钥,并传输到3台node节点:

[root@localhost ~]# ssh-keygen
[root@localhost ~]# ssh-copy-id -i root@node1
[root@localhost ~]# ssh-copy-id -i root@node2
[root@localhost ~]# ssh-copy-id -i root@node3

传输hosts文件到3台node节点:

[root@localhost ~]# scp /etc/hosts root@node1:/etc
[root@localhost ~]# scp /etc/hosts root@node2:/etc
[root@localhost ~]# scp /etc/hosts root@node3:/etc

环境设置

在四台机器:

swapoff –a
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

vi /etc/fstab
#将分区类型为swap的一行注释掉
/dev/mapper/centos-swap swap

yum install epel-release -y

在master机器:

将桥接的IPv4流量传递到iptables的链:

vi /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

$ sysctl --system  # 生效

在所有四台机器:

时间同步:

$ yum install ntpdate -y
$ ntpdate time.windows.com
安装K8S

在Master机器执行

yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
systemctl enable kubelet

kubeadm init 
  --apiserver-advertise-address=192.188.1.241 
  --image-repository registry.aliyuncs.com/google_containers 
  --kubernetes-version v1.21.0 
  --service-cidr=10.96.0.0/12 
  --pod-network-cidr=10.244.0.0/16 
  --ignore-preflight-errors=all
  • –apiserver-advertise-address 集群master地址
  • –image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
  • –kubernetes-version K8s版本,与上面安装的一致
  • –service-cidr 集群内部虚拟网络,Pod统一访问入口
  • –pod-network-cidr Pod网络,下面部署的CNI网络组件yaml中要填入这个值

命令执行成功后,会生成kubeadm join命令。 

到3台node上执行

yum install --enablerepo="kubernetes" kubelet-1.21.0-0.x86_64 kubeadm-1.21.0-0.x86_64 kubectl-1.21.0-0.x86_64

kubeadm join 192.188.1.241:6443 --token 1qcuuj.z66au8xyztjx58m3 
        --discovery-token-ca-cert-hash sha256:9cd5c251200e193e8c7ded71ae74e6381a0f64dc5e0bcc401591d70e8c67d1df

这儿的kubeadm命令是刚刚master机器上kubeadm init生成的。

回到master,部署容器网络(CNI)

​wget https://docs.projectcalico.org/manifests/calico.yaml

修改calico.yml文件,查找里面的CALICO_IPV4POOL_CIDR,去掉注释,将value的ip地址改为:10.244.0.0,也就是kubeadm init命令时填入的ip地址

执行命令

kubectl apply -f calico.yaml
修改配置

这时查看集群状态是:

需要等一段时间变成:

再查看pods状态,会发现有点问题:

kubectl get pods -n kube-system

因为阿里云上没有coredns这个镜像。

通过下面命令获取pod运行在哪台机器以及使用的镜像:

kubectl get pods coredns-545d6fc579-n94zl  -o wide  -n kube-system

kubectl get pods coredns-545d6fc579-n94zl -n kube-system -o yaml | grep image:

 在pod运行的node1上拉取镜像:

docker pull coredns/coredns:1.8.0

将拉取下来的镜像改tag:

docker tag 296a6d5035e2 registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0

两个有问题的pod都执行以上两步,再回到master查看状态,成功!

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/642309.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号