Kubernetes系列之Kubernetes安装《Kubeadm方式安装》

Kubeadm方式安装

Posted by chyuan on 2022-11-11
Estimated Reading Time 5 Minutes
Words 1.2k In Total

前言

研究Kubernetes和实际项目使用kubernetes已经有一段时间了。Kubernetes系列,可以算是我个人学习的记录吧,先简要整理出一些学习笔记分享给大家,揭示一下当今非常火热,流行的Kubernetes到底是个啥玩意~,新技术的出现必有其道理,但也不要雾里看花,觉得特别神秘,其实也就那么回事儿,本次笔记先从安装开始。

1.安装前准备(每个server都要这么干)

1.1 关闭交换分区:

1
$  sudo swapoff -a

1.2 打开网桥:

1
$ sudo modprobe br_netfilter

1.3 调整防火墙设置:

1
2
3
4
5
$ cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF
1
$ sudo sysctl --system

1.4 获取k8s工具安装公钥:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

exclude=kubelet kubeadm kubectl

EOF

1.5 调整权限:

1
$ sudo setenforce 0
1
$ sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

1.6 设置docker代理:(如果有http proxy代理可以出海可以参考如下配置,如没有请跳过)

1
$ sudo mkdir -p /etc/systemd/system/docker.service.d
1
$ touch /etc/systemd/system/docker.service.d/http-proxy.conf

写入以下内容:

1
2
3
4
[Service]
Environment='HTTP_PROXY=http://10.25.192.8:3378/'
Environment='HTTPS_PROXY=http://10.25.192.8:3378/'
Environment='NO_PROXY=localhost,127.0.0.1'

使配置生效:

1
$ sudo systemctl daemon-reload
1
$ sudo systemctl restart docker

1.7 下载kubernetes必要的image包和工作包(如设置了1.6则可跳过,无可用出海http proxy可用以下方式)

本来打算自己上传的,发现了另一个大佬的已经在csdn有上传相关镜像和工具等:kubernetes 1.19.4版本镜像和工具
镜像使用方法:
下载后解压,直接上传至 server 中 使用 “docker load -i xxx.tar” 即可,别忘了主节点和工作节点都要导入,kubeadm,kubectl等安装包的安装方式请自查,哈哈,此处不做额外说明

1.8 检查kubernetes镜像

1
2
3
4
5
6
7
8
9
$ docker images 
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s.gcr.io/kube-proxy v1.19.4 635b36f4d89f 6 months ago 118MB
k8s.gcr.io/kube-controller-manager v1.19.4 4830ab618586 6 months ago 111MB
k8s.gcr.io/kube-apiserver v1.19.4 b15c6247777d 6 months ago 119MB
k8s.gcr.io/kube-scheduler v1.19.4 14cd22f7abe7 6 months ago 45.7MB
k8s.gcr.io/etcd 3.4.13-0 0369cf4303ff 9 months ago 253MB
k8s.gcr.io/coredns 1.7.0 bfe3a36ebd25 11 months ago 45.2MB
k8s.gcr.io/pause 3.2 80d28bedfe5d 15 months ago 683kB

2.安装k8s

2.1 安装kubeadm等工具(如采用下载离线包方式,可跳过本命令)

1
$ sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

2.2 在master节点执行:

1
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16

注:–pod-network-cidr=10.244.0.0/16不要乱改网段,否则会对后续步骤安装网络插件flannel有影响,flannel默认为此网段,若此处有修改,则安装flannel也需要有对应的调整,具体调整方式请自行上flannel的github issue搜索。别问我为什么知道~~我也不知道我怎么知道的。
安装结束后会打印类似如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 172.17.100.191:6443 --token rk5************ \
--discovery-token-ca-cert-hash sha256:9a478***************************************************************************

2.3 在工作节点执行:

1
2
$ kubeadm join 172.17.100.191:6443 --token rk5************ \
--discovery-token-ca-cert-hash sha256:9a478***************************************************************************

2.4 安装网络插件(网络插件必不可少,当然也可以选择其他类型,此处以flannel为例子)

1
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

3.检查集群状态

1
2
3
4
5
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready 65111to65139,master 187d v1.19.4
node1 Ready 65141to65169,node 187d v1.19.4
node2 Ready 65171to65199,node 187d v1.19.4

如都显示为ready则集群状态正常,至此,kubernetes集群安装完成

4.结束语

  • 见到新技术的时候,不要去怕深入,新技术的出现,肯定是因为有新需求的出现,新需求出现了,但原有的解决相应问题的解决方案不够用了,那么便会推进新的技术理论的出现和发展。
  • 不要为了学习新技术而学习新技术,因为如果没有具体的去使用新技术,是不那么容易理解的,从问题出发到解决方案和技术。
  • 搞不懂新技术是干什么的,要学会不求甚解,先学会用,然后再相辅相成的大胆猜测,小心求证。
  • 最后一句,干就完了,不怂。

如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !