centos7 关闭selinux_Centos 7搭建k8s集群
背景由于运维同学短缺,需要自己搭建一套k8s集群环境部署开发的高可用服务给测试使用,自己参考了网络上的k8s集群搭建文章,都或多或少存在一定的问题,故把自己搭建环境的过程记录下来,作为以后参考。环境真实的环境搭建在公司私有云上,不太方便记录,故这次的搭建过程使用本地的虚拟机环境,步骤基本一致,为方便部署,以下步骤均在root权限下进行。本次部署包含两台虚拟机,一个为master节点,一个为node
背景
由于运维同学短缺,需要自己搭建一套k8s集群环境部署开发的高可用服务给测试使用,自己参考了网络上的k8s集群搭建文章,都或多或少存在一定的问题,故把自己搭建环境的过程记录下来,作为以后参考。
环境
真实的环境搭建在公司私有云上,不太方便记录,故这次的搭建过程使用本地的虚拟机环境,步骤基本一致,为方便部署,以下步骤均在root权限下进行。
本次部署包含两台虚拟机,一个为master节点,一个为node1节点,要部署更多节点的步骤和添加一个节点的方式一致。
虚拟机软件:Oracle VM VirtualBox
虚拟机系统:Centos 7.5
步骤
1.搭建虚拟机环境
此过程参考文章
从零开始搭建Kubernetes集群(二、搭建虚拟机环境)www.jianshu.com![908f2c65f5ffe0dbfeead1f09fabc0eb.png](https://i-blog.csdnimg.cn/blog_migrate/ebd2d8c337d46587035da8943a6ef884.jpeg)
2.配置host-only网络
![f9077c0b8f7cdc057c574f77bf5e53e0.png](https://i-blog.csdnimg.cn/blog_migrate/e0e657d6fcd427e8dd07b776e4b12415.jpeg)
修改完网络配置之后,启动虚拟机,使用ifconfig查看网络情况,发现host-only网络已经配置成功
![62bea40ff641514818ca379918c0e9a5.png](https://i-blog.csdnimg.cn/blog_migrate/0eeddfa331760ac2ad1048f334181374.jpeg)
3. 配置国内yum源
不建议使用CentOS 7自带的yum源,因为安装软件和依赖时会非常慢甚至超时失败。使用阿里云的源予以替换,执行如下命令:
&& mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum -y update
![28abe71e26c6f6f178682f1ab2deae83.png](https://i-blog.csdnimg.cn/blog_migrate/6d8adf86fef05a7d2abb45c17d2a6b92.jpeg)
4.关闭防火墙、selinux和swap
a. 关闭防火墙
防火墙一定要提前关闭,否则在后续安装k8s集群的时候是个麻烦。执行下面语句关闭,病禁用开机启动。
systemctl stop firewalld & systemctl disable firewalld
![74ec516e0f40ca808e27297451795758.png](https://i-blog.csdnimg.cn/blog_migrate/b69eb5e0a1bf5b9ee7655b1638f2b16d.png)
b. 关闭selinux
执行以下命令:
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
![c89211fb3a7b3165d6c7bee999764619.png](https://i-blog.csdnimg.cn/blog_migrate/6c810c372e319375406cf48d86627175.jpeg)
c. 关闭swap
在安装k8s集群时,Linux的swap内存交换机制是一定要关闭的,否则会因为内存交换而影响性能以及稳定性。这里,我们可疑提前进行设置:
- 执行swapoff -a可临时关闭,但系统重启后恢复
- 编辑/etc/fstab,注释掉包含swap的那一行即可,重启后可永久关闭
命令如下:
swapoff -a
ed -ri '/^[^#]*swap/s@^@#@' /etc/fstab
执行后的文件如下所示:
![956f27d40a5303905edded2bd2c3d931.png](https://i-blog.csdnimg.cn/blog_migrate/b10b950ac6bfeea13d6b14825422b5c2.jpeg)
此时,用top查看swap情况,会看到swap的使用为0。
![bcba14deec068cb9e45433b068f47fad.png](https://i-blog.csdnimg.cn/blog_migrate/a277c1f00f3c1cf48307e2039ff3c960.jpeg)
5.设置路由
配置内核参数,将桥接的IPv4流量传递到iptables的链
yum install -y bridge-utils.x86_64
modprobe br_netfilter # 加载br_netfilter模块,使用lsmod查看开启的模块
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 重新加载所有配置文件
6.安装docker
a. 配置docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache
b. 安装合适的docker版本
由于k8s支持的docker版本存在一定的滞后,要选择好合适的docker版本
此次,选择安装的docker版本为18.09
选择查看docker-ce各版本
yum list docker-ce --showduplicates | sort -r
![c1852799e10c52d0035fb1ed3a18c9cd.png](https://i-blog.csdnimg.cn/blog_migrate/f09feaebfabf2d91d1e9060d49beea33.jpeg)
安装指定版本的docker-ce
yum -y install docker-ce-18.09.9
![6b6cec1fa27fd82a60b5f950e7b7ae5d.png](https://i-blog.csdnimg.cn/blog_migrate/235ef028e7dbf8794ed8adfaaf62ada9.jpeg)
启动docker服务并激活开机启动
systemctl start docker & systemctl enable docker
查看docker版本
docker version
![4663369e0fdbbb7e6dd5ee5b75734005.png](https://i-blog.csdnimg.cn/blog_migrate/75b73b0f41e5d9635392794c158ee6c9.jpeg)
运行第一个docker容器
docker run hello-world
提示如下,则表示你的docker安装成功了
![e31d64d420f0a89a72b28959bbc14f8c.png](https://i-blog.csdnimg.cn/blog_migrate/407e956bc64783dc282c5ae72cab3d5a.jpeg)
c. 修改docker cgroup驱动,与k8s一致,使用systemd
# 修改docker cgroup驱动:native.cgroupdriver=systemd
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
systemctl restart docker # 重启使配置生效
7.安装k8s组件
a. 配置k8s yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
b. 在master节点安装kubelet kubeadm kubectl
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
可以看出当前安装的k8s的版本为1.16.3-0
![0b35f305faf17cb1460ea7c22f5d62ab.png](https://i-blog.csdnimg.cn/blog_migrate/d3d7be53b2c46481545f21aca885d2cc.png)
c. 开机启动kubelet
systemctl enable --now kubelet # 开机启动kubelet
8.克隆虚拟机
至此,单个虚拟机配置完毕,接下来会clone一个虚拟机来配置集群环境
克隆前需要退出虚拟机,选择“正常关机”。右键虚拟机点击Clone:
![4181cc1e424abb3a6d829d03f867f5b9.png](https://i-blog.csdnimg.cn/blog_migrate/dacdd8c5f252058fe67457e69dfe2ac6.jpeg)
![32319c18efaea462c140d7464f123541.png](https://i-blog.csdnimg.cn/blog_migrate/a24443401648875cb2ffdb6c49d5779d.jpeg)
如上,新的节点命名为centos-node1,注意一定要选择“Generate new MAC address for all network adapters”。点击“Clone”,稍等几分钟,即可完成Clone:
![dbaec6d69fc3ad3d93dcc0f506c8250c.png](https://i-blog.csdnimg.cn/blog_migrate/d04d5bc18e20d9d87c3711e75956e8f6.jpeg)
9.修改hostname
以master节点为例:
- 编辑/etc/hostname,将hostname修改为centos-master
- 编辑/etc/hosts,追加内容192.168.56.5 centos-master
具体命令为:
hostnamectl set-hostname centos-master
cat <<EOF >>/etc/hosts
192.168.56.5 centos-master
EOF
Clone出来的其他虚拟机节点做类似的操作
10.部署master节点
a. 在master进行k8s集群初始化
根据前一步安装信息,安装相应版本的k8s(此处为1.16.3)
kubeadm init --kubernetes-version=1.16.3
--apiserver-advertise-address=192.168.56.5
--image-repository registry.aliyuncs.com/google_containers
--service-cidr=192.1.0.0/16
--pod-network-cidr=192.244.0.0/16
定义POD的网段为:192.244.0.0/16,api server地址就是master本机IP地址。
集群初始化成功后返回如下信息:
![5c9bc062cd5071a2f437c761abbd2d16.png](https://i-blog.csdnimg.cn/blog_migrate/c28c0b4ee94472465084a415558fa3da.jpeg)
记录生成的最后部分内容,此内容需要在其它节点加入k8s集群时执行。
kubeadm join 192.168.56.5:6443 --token bvkgue.f5zpauffltb6zkzi
--discovery-token-ca-cert-hash sha256:3113f037dce468decbf284d3ef7d19809513906ddaa79e6b4496f1d4a1a98c88
b. 配置kubectl工具
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
11.在master节点部署flannel网络
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
![36759e2fdd9fd8071ea8604729551e8d.png](https://i-blog.csdnimg.cn/blog_migrate/44fdc4b054dbc00ab5993c84ea5e0e7b.jpeg)
12.将master节点作为工作节点
k8s集群默认不会将Pod调度到master上,这样master的资源就浪费了。在master上,可以运行以下命令使其作为一个工作节点:
kubectl taint nodes --all node-role.kubernetes.io/master-
执行成功后提示:
![739f316ee22b4d5a067f1f23797a9310.png](https://i-blog.csdnimg.cn/blog_migrate/c08c9b9dbfa7daea211601192ee62b05.png)
13.加入node节点
在centos-node1节点执行上面步骤中保存的k8s join命令
加入成功后,提示:
![b43352170c166fb9be80f2dc948904dc.png](https://i-blog.csdnimg.cn/blog_migrate/b1bd8a38f601a8b88b8f52a10589f303.jpeg)
14. 验证集群是否正常
当所有节点加入集群后,稍等片刻,在master节点上运行kubectl get nodes可以看到:
![45da7fd3f3bb7884fe29f138d8c571b2.png](https://i-blog.csdnimg.cn/blog_migrate/484b393fcc552f33e7ac058ce423a4c0.png)
如上,若提示notReady则表示节点尚未准备好,可能正在执行其他初始化操作,等待全部变为Ready即可。
另外,建议查看所有pod状态,运行kubectl get pods -n kube-system:
![5d5f6bfe86a29ca717fd7f0abca1b1f4.png](https://i-blog.csdnimg.cn/blog_migrate/5629cae9961aaa680724bcbdf7657a9e.jpeg)
如上,全部Running则表示集群正常。至此,k8s集群就搭建完成了。
参考内容
从零开始搭建Kubernetes集群(一、开篇)www.jianshu.com![8b2b6c32eebaa8c00dc98d344807ee9c.png](https://i-blog.csdnimg.cn/blog_migrate/fed7fc46b7e4c7aa87dd2805661af483.jpeg)
![1bfa03bcdd8dd4571633128486b09e3d.png](https://i-blog.csdnimg.cn/blog_migrate/5d2aa8e5570ea063af21ce4b6c6275bf.png)
更多推荐
所有评论(0)