(亲测无坑)Centos7.x使用kubeadm安装K8s集群1.15.0版本

基础环境配置

三台Centos7.x的服务器,主节点 cpu >=2,node节点>=1

注:(上述cpu为最低配置,否则集群安装部署会报错,无法启动,对其他硬件无硬性要求)

以下操作若无特殊说明并指定服务器,默认三台执行一样的操作!!!

配置静态网络后需确认是否可以上网;
在这里插入图片描述
ping通百度即可 ;
在这里插入图片描述

cat <<EOF >> /etc/hosts

10.0.2.15 server01

10.0.2.16 server02

10.0.2.17 server03

EOF

配置主机ip映射及主机名;

hostnamectl set-hostname xxxxxx

设置主机名,重启后生效;

systemctl disable firewalld

禁止防火墙开机自启;

systemctl stop firewalld

关闭防火墙;

sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

关闭selinux;

swapoff -a

临时关闭swap分区;

sed -i 's/.*swap.*/#&/' /etc/fstab

永久关闭swap分区;

cat <<EOF > /etc/sysctl.d/k8s.conf

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

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

net.ipv4.ip_forward = 1

EOF

修改内核参数;

modprobe br_netfilter

模块开机自启;

sysctl -p /etc/sysctl.d/k8s.conf

刷新策略生效;

cat > /etc/sysconfig/modules/ipvs.modules <<EOF

#!/bin/bash

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack_ipv4

EOF

节点重启后能自动加载所需模块;

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

授权并查看;

yum install -y wget vim net-tools epel-release yum-utils device-mapper-persistent-data lvm2 ipvsadm ipvs

安装工具及依赖包;

cd /etc/yum.repos.d

wget http://mirrors.aliyun.com/repo/Centos-7.repo

mv CentOS-Base.repo CentOS-Base.repo.bak

mv Centos-7.repo CentOS-Base.repo

配置阿里云yum源;

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

EOF

配置k8s yum源;

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

添加docker的repo源;

yum list docker-ce --showduplicates |sort -r

查看支持的docker版本;

yum remove docker-ce -y

移除之前安装过的docker;

rpm -qa | grep docker

查看已有的docker rpm包;

rpm -e --nodeps 包名

全部删除,重新安装所需版本;

yum install -y docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7

安装docker-ce服务端及客户端;

docker --version

查看版本;

systemctl enable docker

开机自启docker;

systemctl start docker

启动docker;

vim /etc/docker/daemon.json

{ "exec-opts": ["native.cgroupdriver=systemd"] }

修改docker启动参数,docker cgroup driver为systemd;

systemctl restart docker

重启docker;

docker info | grep Cgroup

Cgroup Driver: systemd

查看刚才配置的Cgroup;

安装K8S

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

指定版本安装,不指定默认最新版本安装;

-------以上所有操作三台服务器都要执行-------以上所有操作三台服务器都要执行-------以上所有操作三台服务器都要执行-----

-------以下在server01服务器上执行-------------以下在server01服务器上执行--------------以下在server01服务器上执行------------

kubeadm config images list

查看此版本k8s所需镜像版本;
在这里插入图片描述
使用脚本下载docker镜像并且更改标签后删除原镜像;

vim images.sh

#!/bin/bash

set -e

KUBE_VERSION=v1.16.2

KUBE_PAUSE_VERSION=3.1

ETCD_VERSION=3.3.15-0

CORE_DNS_VERSION=1.6.2

 

GCR_URL=k8s.gcr.io

ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers

 

images=(kube-proxy:${KUBE_VERSION}

kube-scheduler:${KUBE_VERSION}

kube-controller-manager:${KUBE_VERSION}

kube-apiserver:${KUBE_VERSION}

pause:${KUBE_PAUSE_VERSION}

etcd:${ETCD_VERSION}

coredns:${CORE_DNS_VERSION})

 

for imageName in ${images[@]} ;

do

    docker pull $ALIYUN_URL/$imageName 

    docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName

    docker rmi $ALIYUN_URL/$imageName

done

chmod +x images.sh

./images.sh

docker images

查看下载后的镜像是否都在,如不全,重新执行脚本;

systemctl enable kubelet

开机启动kubelet;

sudo kubeadm init \

--apiserver-advertise-address 10.0.2.15 \

--kubernetes-version=v1.15.0 \

--pod-network-cidr=10.244.0.0/16

初始化master;

初始化成功后会给出如下提示;
在这里插入图片描述
最后生成的命令记录下来,后边使用kubeadm join往集群中添加节点时会用到;

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

执行初始化成功后上图中给出的命令;

----以下操作在server02/server03上执行----以下操作在server02/server03上执行----以下操作在server02/server03上执行----

kubeadm join 10.0.2.15:6443 --token 33x0lt.vqzfnhj0m16c7ssp \

--discovery-token-ca-cert-hash sha256:51256ae406a5d2c1d7a6ba5d78d54203a6f32d95c3376e63a1b77c03f1b04247 \

--ignore-preflight-errors=all

(注意:此处不可直接粘贴,token值不一样)

将节点添加进集群;
在这里插入图片描述

-------以下在server01服务器上执行-------------以下在server01服务器上执行--------------以下在server01服务器上执行-----------

kubectl delete node node名字

删除节点的命令;

kubeadm reset

添加节点失败或者重新添加时使用的命令;

reset后,需要重新执行添加命令,尽量不要在master上使用,它会删除所有kubeadm配置;

kubectl get nodes

查看集群添加状态;
在这里插入图片描述
(注:如果kubectl get nodes 报错509,是因为没有执行初始化后给出的命令,执行下面命令;)

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

再次kubectl get nodes成功;

NotReady是因为没有安装网络查件,别急这就开始安装!

安装flannel

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

下载flannel配置文件;

使用脚本拉取flannel镜像;

vim flannel.sh

#!/bin/bash

set -e

FLANNEL_VERSION=v0.11.0

QUAY_URL=quay.io/coreos

QINIU_URL=quay-mirror.qiniu.com/coreos

images=(flannel:${FLANNEL_VERSION}-amd64

flannel:${FLANNEL_VERSION}-arm64

flannel:${FLANNEL_VERSION}-arm

flannel:${FLANNEL_VERSION}-ppc64le

flannel:${FLANNEL_VERSION}-s390x)

for imageName in ${images[@]} ;

do

    docker pull $QINIU_URL/$imageName

    docker tag $QINIU_URL/$imageName $QUAY_URL/$imageName

    docker rmi $QINIU_URL/$imageName

done

chmod +x flannel.sh

./flannel.sh

docker images

查看下载后的镜像是否都在,如不全,重新执行脚本;
在这里插入图片描述

kubectl apply -f kube-flannel.yml

拉取镜像成功之后,安装;

kubectl -n kube-system get pods

查看pod状态;
在这里插入图片描述
发现有几个没有ready,是因为node节点没有对应镜像,打包传过去load加载应用以下即可;

docker save -o pause.tar k8s.gcr.io/pause:3.1

docker save -o kube-proxy.tar k8s.gcr.io/kube-proxy

将k8s.gcr.io/pause:3.1和k8s.gcr.io/kube-proxy镜像打成包;

打完包scp到server02/server03,并在server02,server03分别执行:

docker load -i pause.tar

docker load -i kube-proxy.tar

load加载应用;

kubectl delete -f kube-flannel.yml

重新安装一次flannel;

kubectl create -f kube-flannel.yml

重新创建一次flannel;

再次kubectl -n kube-system get pods,已经全部running;
在这里插入图片描述
注:此区间三台全操作;

vim /var/lib/kubelet/kubeadm-flags.env

删除–network-plugin=cni参数;

systemctl restart kubelet

重启kubelet

注:此区间三台全操作;


再次kubectl get nodes,全部ready了;
在这里插入图片描述
这里还发现一个问题,k8s 1.16和1.15 kubectl get cs 格式不一样 获取结果显示不同;

1.16 kubectl get cs 如下:
在这里插入图片描述
1.15 kubectl get cs 如下:
在这里插入图片描述

kubectl get cs -o=go-template='{{printf "|NAME|STATUS|MESSAGE|\n"}}{{range .items}}{{$name := .metadata.name}}{{range .conditions}}{{printf "|%s|%s|%s|\n" $name .status .message}}{{end}}{{end}}'

输出的格式为:

|controller-manager|True|ok|

|scheduler|True|ok|

|etcd-0|True|{"health":"true"}|

测试dns

kubectl run curl --image=radial/busyboxplus:curl -it

nslookup kubernetes.default

出现此显示为dns没有问题;
在这里插入图片描述
至此完成Centos7.x使用kubeadm安装K8s集群1.15.0版本!

参考链接 :

(亲测无坑)Centos7.x使用kubeadm安装K8s集群1.15.0版本 :https://mp.weixin.qq.com/s/okqu2b3u98NAXygqbveB5g

### 回答1: 在CentOS系统中使用kubeadm安装Kubernetes 1.24版本的全部命令如下: 1. 安装必需的包和软件: ``` sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ``` 2. 添加Kubernetes存储库: ``` sudo yum-config-manager --add-repo https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ ``` 3. 安装kubeadm、kubelet和kubectl: ``` sudo yum install -y kubeadm-1.24.0 kubelet-1.24.0 kubectl-1.24.0 ``` 4. 启动并启用kubelet服务: ``` sudo systemctl start kubelet && sudo systemctl enable kubelet ``` 5. 初始化集群: ``` sudo kubeadm init --kubernetes-version=1.24.0 --pod-network-cidr=10.244.0.0/16 ``` 6. 配置kubectl: ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 7. 安装网络插件: ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml ``` 8. 加入节点: ``` kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash> ``` 请注意,在实际使用时,您需要替换`<control-plane-host>`、`<control-plane-port>`、`<token>`和`<hash>`的值。 ### 回答2: 在CentOS系统中使用kubeadm安装Kubernetes 1.24版本需要执行以下步骤: 1. 确保系统已经安装CentOS操作系统并更新到最新版本。 2. 安装Docker,首先安装Docker的相关依赖: ``` sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ``` 接下来,添加Docker的yum源并安装Docker: ``` sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io ``` 启动Docker并设置为开机自启动: ``` sudo systemctl start docker sudo systemctl enable docker ``` 3. 安装kubeadm、kubelet和kubectl,添加Kubernetes的yum源: ``` sudo tee /etc/yum.repos.d/kubernetes.repo <<EOF [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kube* EOF ``` 安装kubeadm、kubelet和kubectl: ``` sudo yum install -y kubeadm-1.24.0 kubelet-1.24.0 kubectl-1.24.0 --disableexcludes=kubernetes ``` 启动kubelet并设置为开机自启动: ``` sudo systemctl start kubelet sudo systemctl enable kubelet ``` 4. 创建Kubernetes集群,首先选择一个主节点,执行以下命令初始化主节点: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 初始化完成后,根据输出的提示执行以下命令设置kubeconfig: ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 安装网络插件(这里以Flannel为例): ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 接下来,将其他节点加入集群,运行输出的`kubeadm join`命令即可。 通过以上步骤,在CentOS系统中使用kubeadm成功安装Kubernetes 1.24版本。 ### 回答3: 在CentOS系统上使用kubeadm安装Kubernetes 1.24版本,可以按照以下步骤操作: 1. 确保系统已经预先安装好Docker,并且启动Docker服务。 ``` systemctl start docker systemctl enable docker ``` 2. 更新系统的软件包,并安装所需的依赖项。 ``` yum update yum install -y curl wget kubelet kubeadm kubectl ``` 3. 配置kubeadm使用国内镜像源,以提高下载速度。 ``` echo "KUBELET_EXTRA_ARGS=--image-repository=registry.aliyuncs.com/google_containers" > /etc/sysconfig/kubelet ``` 4. 初始化kubeadm并指定使用版本。 ``` kubeadm init --kubernetes-version=1.24.0 ``` 5. 完成初始化后,根据kubeadm提供的输出信息执行以下命令,将kubectl与集群进行连接。 ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 6. 部署Pod网络插件,以便集群中的Pod可以相互通信。 这里以Calico网络插件为例: ``` kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml ``` 7. 等待一段时间,直到所有的节点状态都变为Ready。 ``` kubectl get nodes ``` 8. 完成上述步骤后,Kubernetes集群已经成功安装。 请注意,以上步骤仅适用于CentOS系统上使用kubeadm安装Kubernetes 1.24版本。具体版本号和网络插件可以根据需要进行调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值