kubernetes 简单集群安装 一master,一worker

网上有不少kubernetes的安装博客,之所以要花时间再写一篇,是因为不少博文都是旧的。时间来到2021年6月,不少博客是2019年的,所以比教旧。还有国内的安装方法和国外的安装方法有稍稍不同,因为我们有防火墙,需要用自己的镜像。

本文是基于好几篇博文集合而成,参考文献都会在文后列出,读者可以自行查考。

1. 背景

本文采用 centos 8.3 的版本,centOS还是国内用的比较多的,虽然centOS未来真不知道会怎样发展,笔者日后也会建立kubernetes集群在Ubuntu之上,所以日后我们一起分享。kubernetes 的文档说2G内存,2核cpu就行。我们选择 两台16G内存,8核的虚拟机。一台为master,一台为worker. 先写master,然后写worker。部署在公司的内网里。所以,有些firewall的设置步骤就省略了。 

2. 设置master

虽然kubernetes自己不支持docker,但开源组织会让docker支持或兼容kubernetes。所以,我们还是选择docker为容器。

I) 前期准备:

a. 首先让机器处于更新状态

dnf -y upgrade

b. 设置 setenforce 为 0,并写入文件 /etc/sysconfig/selinux

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

c. 这个步骤笔者也不懂,把英文原文之际放在这里:Enable transparent masquerading and facilitate Virtual Extensible LAN (VxLAN) traffic for communication between Kubernetes pods across the cluster.

modprobe br_netfilter

d. 接下来 disable firewalld,iptables, 简单干脆,在内网,我们先简单粗暴点,需要firewalld的读者,可以参考  https://upcloud.com/community/tutorials/install-kubernetes-cluster-centos-8/

sudo systemctl disable firewalld
sudo systemctl stop firewalld
sudo systemctl disable iptables
sudo systemctl stop iptables

e. 请注意,一定要将swap off,不然kubernetes有时不工作。而且,每一次重启机器,都要执行这行命令。熟练的读者可以将 sudo swapoff -a 设置在启动开始脚本里。

sudo sysctl --system
sudo swapoff -a

f. 设置hostname

sudo hostnamectl set-hostname master-1

g. 设置host文件

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.xxx.x.xxx master-1

 

II)  安装docker

a. 加入repository新的地址

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

 b. 因为没有被repository管理组件列入,所以先要安装container.io.

dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

c. 下面我们就开始安装docker的社区版本

dnf install docker-ce --nobest -y

d. 启动docker,并设置当服务器重启时,docker自动启动

sudo systemctl start docker
sudo systemctl enable docker

e. docker 成功安装后,验证一下。

sudo docker version
sudo docker images
REPOSITORY   TAG   IMAGE ID   CREATED   SIZE

至此,docker 就安装好了。

III) 安装kubernetes

a. 先要将kubernetes的repository加入到master里。主要,国内不能用google的。我们采用aliyun的镜像。

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

b. 更新repsoitory。

dnf upgrade -y

c. 开始安装

dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

d. 激活kubelet。

sudo systemctl enable kubelet
sudo systemctl start kubelet

e. 读者可以用下面命令看看kubelet的状态

sudo systemctl status kubelet

至此,kubelet 就安装好了,接下来就是配置了。 

IV) 配置kubernetes

a. 这里要用国内的镜像源来pull,pull完之后再改名。

sudo kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers

这里要注意,coredns 从这个镜像下载不下来,要去https://hub.docker.com/ 注册,并下载。

sudo docker login
sudo docker pull coredns/coredns:1.8.0

b. 然后将下载的image改名为google的。请将hashcode改为读者自己机器上的hashcode。

sudo docker image tag e16544fd47b0 k8s.gcr.io/kube-controller-manager:v1.21.1
sudo docker image tag a4183b88f6e6 k8s.gcr.io/kube-scheduler:v1.21.1
sudo docker image tag 4359e752b596 k8s.gcr.io/kube-proxy:v1.21.1
sudo docker image tag 0f8457a4c2ec k8s.gcr.io/pause:3.4.1
sudo docker image tag 0369cf4303ff k8s.gcr.io/etcd:3.4.13-0
sudo docker image tag 771ffcf9ca63 k8s.gcr.io/kube-apiserver:v1.21.1
sudo docker image tag 296a6d5035e2 k8s.gcr.io/coredns/coredns:v1.8.0

c. 我们使用calico, 读者可以使用其他网路组件。

sudo kubeadm init --pod-network-cidr 192.168.0.0/16

d. 请注意,在master上,每次init后,下面的步骤一定要重新做一次,如果有.kube目录,先删除。

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

也可以下载calico.yaml文件为本地文件,那么每次kubeadm init 后就不用每次下载。

e. 每次成功的kubeadm init后,都会有下面的提示语句,读者可以用在worker端。

kubeadm join 94.237.41.193:6443 --token 4xrp9o.v345aic7zc1bj8ba \
--discovery-token-ca-cert-hash sha256:b2e459930f030787654489ba7ccbc701c29b3b60e0aa4998706fe0052de8794c

f. 但忘记了,也不要紧,可以用下面的命令找回来:

sudo kubeadm token create --print-join-command

g. 至此,master端的kubernetes就安装好了:

kubectl get nodes
NAME  STATUS     ROLES  AGE  VERSION
master  NotReady  master   91s     v1.18.0

3. 复原

1. 简单的两个命令就可以:

kubeadm reset
rm -rf /etc/cni/net.d

4. 参考文献

1. https://upcloud.com/community/tutorials/install-kubernetes-cluster-centos-8/

2. https://zhuanlan.zhihu.com/p/55740564

3. https://www.cnblogs.com/lifan1998/p/14326761.html

4. https://blog.csdn.net/qq_31024251/article/details/115752033

5. https://blog.csdn.net/networken/article/details/84571373

6. https://www.cnblogs.com/xuziyu/p/11726068.html

7. https://www.cnblogs.com/ericnie/p/7749588.html

8. https://github.com/kubernetes/kubernetes/issues/54918

5. 编辑历史

1. 2021年6月4日 初版

 

 

 

 

 

 

 
 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值