云原生之Kubernetes:3、Kubeadm部署Kubernetes

kubeadm是一个提供了kubeadm init和kubeadm join最佳实践命令,且用于快速构建一个kubernetes集群的工具,你可以使用此工具快速构建一个kubernetes学习环境。

通过本章节的学习,你将能够使用kubeadm工具,成功构建出一个基础的kubernetes集群的学习环境

1、环境准备

IP主机名角色操作系统
192.168.0.11centos-1.shared masterMasterCentos 7.7
192.168.0.12centos-2.shared node01NodeCentos 7.7
192.168.0.13centos-3.shared node01NodeCentos 7.7

2、Hosts文件准备

#cat /etc/hosts
192.168.0.11 centos-1.shared master
192.168.0.12 centos-2.shared node01
192.168.0.13 centos-3.shared node02

3、Docker环境配置

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

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、安装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

4、启动Docker并设置开机运行

systemctl start docker
systemctl enable docker
systemctl status docker

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 -p
sysctl --system

4、其他准备工作

1、关闭防火墙

systemctl stop firewalld.service
systemctl stop iptables.service
systemctl disable firewalld.service
systemctl disable iptables.service

2、禁用SELINUX

#临时关闭:

setenforce 0     

#永久关闭:

vim /etc/selinux/config
SELINUX=disabled

3、禁用swap设备(影响性能,k8s集群初始化会报错)

#临时禁用

swapoff  -a

#永久禁用

Vim  /etc/fstab 
注释 /dev/mapper/VolGroup-lv_swap swap 所在的行

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

5、赋权、运行并检查

chmod +x /etc/sysconfig/modules/ipvs.modules
/etc/sysconfig/modules/ipvs.modules
lsmod |grep ip_vs	

6、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集群

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

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 

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

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、配置kubelet。swap处于启用状态时,不会报错(如果上面配置了关闭swap,可省略)

vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARG="--fail-swap-on=false”

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

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

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:/

9、Node节点:

加载镜像( coredns、 flannel、 pause):

cd / && docker load —input k8s-node.tar
yum install kubelet kubeadm    

添加集群。注意这个token是第六步初始化集群给你的,用于node节点加入节点时候用的。

kubeadm join 192.168.0.11:6443 --token z9kmma.p8ak2ffytr7okdsv \
--discovery-token-ca-cert-hash \
sha256:82ee3a673e99fa8f46a8f515fa430819b5957f32f3fcc21d9c3114f3394b4b0d 

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
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

湫一刀

希望大家多多支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值