原创:佛布朗斯基 程序员技术笔记

基本环境配置

以下这些操作master节点跟node节点都是需要操作的步骤。

1、关闭防火墙

systemctl stop firewalldsystemctl disable firewalld

2、关闭selinux

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

3、修改主机名

我们根据master、node节点修改主机名

#master主机hostnamectl set-hostname k8s-master#node主机hostnamectl set-hostname k8s-node1

修改完之后重启服务器进行生效

reboot

4、关闭 swap

我们编辑 /etc/fstab文件,注释掉swap这一行

vi /etc/fstab

或者临时关闭

swapoff -a

检查是否生效

free -m

5、修改hosts

添加主机名与 IP 对应的关系,/etc/hosts 添加如下内容​​​​​​​

vi /etc/hosts95.214.113.168 k8s-master45.136.235.229 k8s-node1

6、允许 iptables 检查桥接流量​​​​​​​

cat <<EOF | sudo tee /etc/modules-load.d/k8s.confbr_netfilterEOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF

重启配置

sysctl --system

7、安装docker

建议按照指定版本安装,后面不知道出现什么奇奇怪怪的问题

先卸载旧的 docker​​​​​​​

yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

安装组件​​​​​​​

yum install -y yum-utils \device-mapper-persistent-data \lvm2

添加 docker 安装源​​​​​​​

yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo

如果服务器是国内的,建议docker安装源切换成这个比较快​​​​​​​

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

查看docker可安装列表

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

安装 docker

yum install -y containerd.io-1.2.10 docker-ce-19.03.4 docker-ce-cli-19.03.4

安装成功后,查看 docker 版本

docker --version

修改docker配置​​​​​​​

mkdir -p /etc/dockervi /etc/docker/daemon.json

内容为以下​​​​​​​

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

设置开机启动​​​​​​​

systemctl enable dockersystemctl start docker

查看docker信息

docker info | grep Driver

9、时间同步

由于我的master节点服务器是美国服务器,node节点是美国服务器,但是有时机器是不同地区,时间需要同步,我直接将

master、node节点的服务器时间都同步成国内时间,这一步大家根据自身情况进行修改。​​​​​​​

yum install -y ntp 
systemctl enable ntpd 
systemctl start ntpd
timedatectl set-timezone Asia/Shanghai 
timedatectl set-ntp yes
ntpq -p

配置安装k8s

以下这些操作master节点跟node节点都是需要操作的步骤,建议按照教程指定版本安装,我试过最高版本安装,出现奇奇怪怪的问题。

1、修改Kubernetes yum源配置

修改/etc/yum.repos.d/kubernetes.repo,这里我是按照官网的教程来写​​​​​​​

cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpgEOF

2、安装k8s

所有节点安装kubeadm、kubectl、kubelet

yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3 --disableexcludes=kubernetes

3、设置 k8s 开机启动

systemctl enable kubelet

4、启动 k8s 后台 daemon

systemctl start kubelet

master 节点操作

以下操作只在 master 节点运行,如果操作失败,可以通过以下命令来清理环境重新安装​​​​​​​

rm -rf $HOME/.kubekubeadm reset

1、部署 Kubernetes Master

如果不知道kubeadm版本号多少,可以通过以下命令查看

kubeadm version

初始化启动Kubernetes​​​​​​​

kubeadm init \  --apiserver-advertise-address=95.214.113.168 \  --image-repository registry.aliyuncs.com/google_containers \  --kubernetes-version v1.17.3 \  --service-cidr=10.96.0.0/12 \  --pod-network-cidr=10.244.0.0/16 \  --ignore-preflight-errors=all

​​​​​​​​​​​​​​

# 说明--apiserver-advertise-address 集群通告地址,这里我选的是当前master节点的IP--image-repository  由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址--kubernetes-version K8s版本,与上面安装的一致--service-cidr 集群内部虚拟网络,Pod统一访问入口--pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致

这一步如果报错可以通过以下命令后重置​​​​​​​

rm -rf $HOME/.kubekubeadm reset

安装后需要将这一截保存,后面子节点加入需要用到

图片

记录生成的最后部分内容,此内容需要在其它节点加入 Kubernetes 集群之前就执行。根据 init 后的提示,创建kubectl

配置文件​​​​​​​

mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config

查看 docker 镜像:

sudo docker images

使用 kubectl 命令查看节点情况

kubectl get node

发现master 节点状态为NotReady(由于我们还没安装网络扩展),此时可执行以下命令查看服务状态

systemctl status kubelet

发现kubectl此时已经处于运行状态。

2、安装calico网络

下载配置文件

wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml

  修改配置文件,大概在625行左右

找到 625 行左右的 192.168.0.0/16 ,并修改为我们初始化时配置的 10.244.0.0/16

加载配置文件

 kubectl apply -f calico.yaml

查看 calico网络是否创建成功

kubectl get pods -n kube-system

图片

再次查看 node,可以看到 master 节点状态为 ready

kubectl get node

至此,k8s master节点创建完毕,下面我们操作node节点。

node 节点操作

在操作前,我们需要先把基本环境配置以及配置安装k8s这两节操作完成,然后在node节点输入以下命令加入集群​​​​​​​

kubeadm join 95.214.113.168:6443 --token 6btq2l.x3srd3m00d99y98u \        --discovery-token-ca-cert-hash sha256:3e13582a0a673519680545fc690767f9b80f456ec1d07c3d98ab7f5b3d508016

出现如下情况表示成功

图片

如果令牌过期了,可以使用这个命令重新生成令牌

kubeadm token create --print-join-command

master 节点查看集群节点数

kubectl get nodes

我们可以看到node1节点加入了。

我们重新输入以下命令查看运行结果,这里要等一段时间才可以。

kubectl get pods -n kube-system

图片

发现全部处于Running,并且都有一个可用,这样我们就完成了k8s集群的搭建。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐