centos环境下搭建k8s
在操作前,我们需要先把基本环境配置以及配置安装k8s这两节操作完成,然后在node节点输入以下命令加入集群。修改/etc/yum.repos.d/kubernetes.repo,这里我是按照官网的教程来写。以下操作只在 master 节点运行,如果操作失败,可以通过以下命令来清理环境重新安装。添加主机名与 IP 对应的关系,/etc/hosts 添加如下内
原创:佛布朗斯基 程序员技术笔记
基本环境配置
以下这些操作master节点跟node节点都是需要操作的步骤。
1、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2、关闭selinux
setenforce 0
sed -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/hosts
95.214.113.168 k8s-master
45.136.235.229 k8s-node1
6、允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
重启配置
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/docker
vi /etc/docker/daemon.json
内容为以下
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
设置开机启动
systemctl enable docker
systemctl 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=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
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
EOF
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/.kube
kubeadm 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/.kube
kubeadm reset
安装后需要将这一截保存,后面子节点加入需要用到
记录生成的最后部分内容,此内容需要在其它节点加入 Kubernetes 集群之前就执行。根据 init 后的提示,创建kubectl
配置文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo 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集群的搭建。
更多推荐
所有评论(0)