3.入门篇:用过都说好的大宝剑之kubeadm
3.入门篇:用过都说好的大宝剑之kubeadm
kubeadm是一个提供了kubeadm init和kubeadm join最佳实践命令,且用于快速构建一个kubernetes集群的工具,你可以使用此工具快速构建一个kubernetes学习环境。
通过本章节的学习,你将能够使用kubeadm工具,成功构建出一个基础的kubernetes集群的学习环境
1.环境准备
ip | 主机名 | 角色 | 操作系统 |
---|---|---|---|
192.168.0.104 | centos-1.shared master | Master | Centos 7.7.1908 |
192.168.0.108 | centos-2.shared node01 | Node | Centos 7.7.1908 |
192.168.0.109 | centos-3.shared node01 | Node | Centos 7.7.1908 |
2.Hosts文件准备
#cat /etc/hosts192.168.0.104 centos-1.shared master 192.168.0.108 centos-2.shared node01 192.168.0.109 centos-3.shared node02
3.Docker环境配置
3.1.关闭系统默认防火墙和SELINUX
setenforce 0 sed -i -r "/^SELINUX=/c SELINUX=disabled" /etc/selinux/config which systemctl && systemctl stop firewalld which systemctl && systemctl disable firewalld which systemctl && systemctl stop iptables || service iptables stop which systemctl && systemctl disable iptables || chkconfig iptables off
3.2.卸载旧版本Docker
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine \ docker \ docker-ce \ docker-ee
3.3.安装DockerCE环境
# 1.安装所需的包 # yum-utils 提供了 yum-config-manager 实用程序,并且 devicemapper 存储驱动需要 device-mapper-persistent-data 和 lvm2 yum install -y yum-utils device-mapper-persistent-data lvm2 # 2.更新xfsprogs yum update xfsprogs # 3.使用以下命令设置源 #官方源 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo #阿里源(建议使用) yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 4.安装最新版本的Docker CE yum install -y docker-ce #或者安装指定版本 yum list docker-ce --showduplicates | sort -r yum install -y docker-ce-17.12.1.ce-1.el7.centos
3.4.启动Docker并设置开机运行
systemctl start docker systemctl enable docker systemctl status docker
3.5.常见问题
WARINING提示: WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled #解决方案 cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system
4.其他准备工作
4.1.关闭防火墙
systemctl stop firewalld.service systemctl stop iptables.service systemctl disable firewalld.service systemctl disable iptables.service
4.2.禁用SELINUX
#临时关闭: setenforce 0 #永久关闭: vim /etc/selinux/config SELINUX=disabled
4.3.禁用swap设备
(影响性能,k8s集群初始化会报错)
#临时禁用 swapoff -a #永久禁用 Vim /etc/fstab 注释 /dev/mapper/VolGroup-lv_swap swap 所在的行
4.4.启用ipvs内核模块
创建内核模块载入相关的脚本文件/etc/sysconfig/modules/ipvs.modules,设定自动载入的内核模块。文件内容如下(用到再配置也可以)
#!/bin/bash ipvs_mods_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs" for i in $(ls $ipvs_mods_dir | grep -o "^[^.]*"); do /sbin/modinfo -F filename $i &> /dev/null if [ $? -eq 0 ]; then /sbin/modprobe $i fi done # 赋权、运行并检查 chmod +x /etc/sysconfig/modules/ipvs.modules /etc/sysconfig/modules/ipvs.modules lsmod |grep ip_vs
4.5.docker文件配置
(docker unit file: /usr/lib/systemd/system/docker.service)
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT ExecReload=/bin/kill -s HUP $MAINPID TimeoutSe=0 RestartSec=2 Restart=always #重启docker systemctl daemon-reload systemctl restart docker #变量查看,确认是否载入成功 docker info
5.使用Kubeadm部署k8s集群
5.1.首先安装k8s相关软件包。
你也可以在阿里云镜像仓库获取相关帮助。
配置如下所示:
cd /etc/yum.repos.d/ vi k8s.repo [kubernetes] name=Kubernetes Repository baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
5.2.yum仓库载入情况检查
#yum repolist [root@centos-1 yum.repos.d]# yum list all |grep "^kube" kubeadm.x86_64 1.16.3-0 kubernetes kubectl.x86_64 1.16.3-0 kubernetes kubelet.x86_64 1.16.3-0 kubernetes kubernetes.x86_64 1.5.2-0.7.git269f928.el7 extras kubernetes-client.x86_64 1.5.2-0.7.git269f928.el7 extras kubernetes-cni.x86_64 0.7.5-0 kubernetes kubernetes-master.x86_64 1.5.2-0.7.git269f928.el7 extras kubernetes-node.x86_64 1.5.2-0.7.git269f928.el7 extras
5.3.使用yum安装kubeadm 、kubectl和kubelet
yum install kubeadm kubectl kubelet
如果阿里云仓库更新了,可以使用以下命令安装指定(v1.16)版本:
#查看相关版本,然后来选择 yum list kubelet --showduplicates | sort -r yum list kubeadm --showduplicates | sort -r yum list kubectl --showduplicates | sort -r #安装,默认最新版 yum install -y kubelet kubeadm kubectl #安装指定版本 yum install -y kubeadm-1.16.3-0 kubelet-1.16.3-0 kubectl-1.16.3-0
5.4.检查相关软件包是否完整
[root@centos-1 yum.repos.d]# rpm -ql kubelet /etc/kubernetes/manifests /etc/sysconfig/kubelet /usr/bin/kubelet /usr/lib/systemd/system/kubelet.service
5.5.配置kubelet。
swap处于启用状态时,不会报错(如果上面配置了关闭swap,可省略)
vim /etc/sysconfig/kubelet KUBELET_EXTRA_ARG="--fail-swap-on=false”
5.6.初始化集群(Master节点)
#首先将集群初始化配置文件导出 kubeadm config print init-defaults --kubeconfig ClusterConfiguration > kubeadm.yml #将`imageRepository`换成阿里云镜像,然后保存 imageRepository: registry.aliyuncs.com/google_containers # 查看所需镜像列表 kubeadm config images list --config kubeadm.yml # 拉取镜像,等拉取完毕再执行后续操作 kubeadm config images pull --config kubeadm.yml #方式一:命令行(--dry-run:试运行,不会有改动) kubeadm init --kubernetes-version=v1.16.0 --pod-network-cidr="10.244.0.0/16" --dry-run #方式二:Yml配置文件,使用—config string #集群初始化完毕后,创建用户(最好用普通账号创建): mkdir -p $HOME/.kube #切换至Root用户操作: 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 #Pod情况查看: kubectl get pods -n kube-system #集群初始化完毕 kubectl get nodes
5.7.Node节点
从主节点复制repo配置到对应node节点上:
scp k8s.repo node01:/etc/yum.repos.d/ scp /etc/sysconfig/kubelet node01:/etc/sysconfig scp k8s.repo node02:/etc/yum.repos.d/ scp /etc/sysconfig/kubelet node02:/etc/sysconfig scp /run/flannel/subnet.env node01: /run/flannel/subnet.env scp /run/flannel/subnet.env node02: /run/flannel/subnet.env
5.8.在主节点打包node所需镜像,并scp到各node节点
docker save -o k8s-node.tar k8s.gcr.io/coredns quay.io/coreos/flannel k8s.gcr.io/pause scp k8s-node.tar node01:/ scp k8s-node.tar node02:/
5.9.Node节点:
加载镜像( coredns、 flannel、 pause):
cd / && docker load —input k8s-node.tar yum install kubelet kubeadm
添加集群。注意这个token是第六步初始化集群给你的,用于node节点加入节点时候用的。
kubeadm join 192.168.0.104:6443 --token z9kmma.p8ak2ffytr7gjnsv \ --discovery-token-ca-cert-hash sha256:82ee3a673e99fa8f46a8f515fa430819b595d532f3fcb21d9c3114f3394b4b0d
5.10.部署完毕,并检查集群状态(Master节点上)
此时一个基础的kubernetes集群已经构建完成了。
kubectl get nodes NAME STATUS ROLES AGE VERSION centos-1.shared Ready master 41m v1.16.3 centos-2.shared Ready <none> 19m v1.16.3 centos-3.shared Ready <none> 18m v1.16.3
对于刚学习的各位,这个环境还是比较脆弱的。强烈建议大家先做好快照再进行后面的学习实践 !!!
@版权声明:51CTO独家出品,未经允许不能转载,否则追究法律责任
文章目录
关闭