Linux上部署kubernetes
一. 前言:本次小熙分享下Linux上部署kubernetes。二. 准备环境:准备三台Linux服务器(这里小熙准备的是虚拟机):检查服务器的版本,本次配置要求在centos7.5版本或者以上版本[root@k8s-master etc]# cat /etc/redhat-releaseCentOS Linux release 7.6.1810 (Core)为了以下流程理解方便,在每个节点的ho
一. 前言:
本次小熙分享下Linux上部署kubernetes,以下操作如果没有标注指定节点执行,则都需要执行。
二. 准备环境:
-
准备三台Linux服务器(这里小熙准备的是虚拟机):
检查服务器的版本,本次配置要求在centos7.5版本或者以上版本[root@k8s-master etc]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
-
为了以下流程理解方便,在每个节点的hosts文件上配置对应地址映射 :
vi /etc/hosts 192.168.186.130 k8s-master 192.168.186.131 k8s-node1 192.168.186.132 k8s-node2
-
时间同步:
k8s要求集群中的节点时间必须精确一致,这里使用chronyd服务从网络同步时间
chronyd配置集群链接# 启动服务 [root@k8s-master /]# systemctl start chronyd # 设置服务自启动 [root@k8s-master /]# systemctl enable chronyd # 查看时间 [root@k8s-master /]# date Tue Jan 11 18:03:53 CST 2022
-
禁用firewalld和iptables服务:
kubernetes在运行中以及相关拓展会用到很多iptables规则和端口,所以都禁用了。[root@k8s-master /]# systemctl stop firewalld [root@k8s-master /]# systemctl disable firewalld [root@k8s-master /]# systemctl stop iptables [root@k8s-master /]# systemctl disable iptables
-
禁用selinux:
selinux是linux系统的一个安全服务,如果不关闭将造成集群各种问题# 编辑、/etc/selinux/config 文件 # 修改之后需要重启服务 SELINUX=disabled
-
禁用swap分区:
临时关闭:swapoff -a
永久关闭:注释掉/etc/fstab文件中的swap行 -
将桥接的IPv4流量传递到iptables的链(也可以用ipvs实现):
cat > /etc/sysctl.d/k8s.conf << EOF > net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
-
重启服务(生效修改配置):
reboot
三. 安装docker服务:
-
设置镜像源:
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
-
查看镜像源列表(可选择对应版本安装):
yum list docker-ce --showduplicates
-
安装特定版本的docker-ce:
yum install docker-ce-19.03.15-3.el7
-
添加一个配件:
(1) 创建文件夹:mkdir /etc/docker
(2)添加配件:
# Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes荐庚用systemd来代曾cgroupfs cat<<EOF > /etc/docker/daemon.json { "registry-mirrors": [ "https://kfwkfulq.mirror.aliyuncs.com", "https://2lqq34jg.mirror.aliyuncs.com", "https://pee6w651.mirror.aliyuncs.com", "https://registry.docker-cn.com", "http://hub-mirror.c.163.com"], "exec-opts":["native.cgroupdriver=systemd"] } EOF
-
重启docker:
systemctl restart docker
四. 安装k8s相关组件:
由于kubernetes的镜像源在国外,速度比较慢,这里切换成国内的镜像源
编辑 /etc/yum.repos.d/kubernetes.repo,添加下面的配置
-
修改镜像源:
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
-
安装kubeadnu kubelet和kubectl(这里选择定制版本):
(1)定制版本:yum install --setopt=obsoletes=0 kubeadm-1.17.4 kubelet-1.17.4 kubectl-1.17.4 -y
(2)最新版本:
yum install -y kubelet kubeadm kubectl
(3)查看kubelet版本:
kubelet --version
(4)查看kubeadm版本:
kubeadm version
-
重新加载配置文件:
systemctl daemon-reload
-
启动kubelet:
(1)启动:systemctl start kubelet
(2)查看启动状态(报错可以先不用管,后面kubeadm会初始化拉起):
systemctl status kubelet
(3)设置开机自启:
systemctl enable kubelet
(4)查看kubelet开机启动状态 (enabled:开启, disabled:关闭):
systemctl is-enabled kubelet
(5)查看日志命令:
journalctl -xefu kubelet
五. 初始化集群:
-
准备kubernetes相关镜像:
(1)查看相关镜像版本(可选择对应版本安装):kubeadm config images list
(2)安装对应版本镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.17.4 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.17.4 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.17.4 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.17.4 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.5
(3)更改镜像名称新增镜像:
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.17.4 k8s.gcr.io/kube-apiserver:v1.17.4 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.17.4 k8s.gcr.io/kube-controller-manager:v1.17.4 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.17.4 k8s.gcr.io/kube-scheduler:v1.17.4 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.17.4 k8s.gcr.io/kube-proxy:v1.17.4 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5
(4)删除原先下载的镜像:
docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.17.4 docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.17.4 docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.17.4 docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.17.4 docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.5
-
初始化集群(master节点):
(1)执行初始化命令:kubeadm init --kubernetes-version v1.17.4 --pod-network-cidr 10.244.0.0/16 --ignore-preflight-errors=NumCPU
(2)创建必要的文件:
mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config
-
node节点加入master节点(node节点):
子节点执行如上图所要执行的命令:kubeadm join 192.168.186.130:6443 --token zb65ub.dkfhjl007osls160 \ --discovery-token-ca-cert-hash sha256:1707cbb30fa0d1b60028fd5f1cb00f2ef87df5cd045c6040b07387ee5d2894d8
-
安装网络插件(master节点):
(1)创建文件夹:mkdir flannel && cd flannel
(2)下载文件:
curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
(3)kube-flannel.yml里需要下载镜像:
docker pull quay.io/coreos/flannel:v0.14.0-rc1
(4)创建flannel网络插件:
kubectl apply -f kube-flannel.yml
-
查看kubernetes集群节点状态(等一会都变成ready就成功了):
kubectl get nodes
六. 后语:
以上就是相关部署了。下次介绍下相关kubernetes-dashboard的部署和使用。
更多推荐
所有评论(0)