kubeadm 概述
Kubeadm
是一个工具,它提供了 kubeadm init
以及 kubeadm join
这两个命令作为快速创建 kubernetes 集群
的最佳实践。
环境
- 阿里云两台
CentOS 7.7 64位 ECS
- 安装
K8S v1.16.3
版本 pod-network-cidr
地址段划分为10.96.0.0/12
service-cluster-ip-range
地址段划分为10.244.0.0/16
名称 | 内部IP | 系统配制 |
---|---|---|
k8s-master1 | 172.17.94.205 | 2核CPU,4G内存 |
k8s-node1 | 172.17.94.206 | 2核CPU,4G内存 |
主机用途划分
名称 | 用途 |
---|---|
k8s-master1 | etcd kubeadm kube-apiserver kube-scheduler kube-controller-manager kubelet flanneld docker |
k8s-node1 | kubeadm kubelet flanneld docker |
初始化基础环境
运行下面 init.sh
shell 脚本,脚本完成下面四项任务
- 设置服务器
hostname
- 安装
k8s依赖环境
升级系统内核
(升级Centos7系统内核,解决Docker-ce版本兼容问题)- 安装
docker ce
最新版本
1 | # 添加脚本执行权限并初始化 k8s-master1 机器 |
1 |
|
注意:
脚本只支持 Centos
系统,支持重复运行
,下面是脚本第二次运行结果
1
2
3
4
5
6
7
8
9
10
11
12$ ./init.sh k8s-master1
系统为 CentOS Linux release 7.7.1908 (Core)
k8s-master1
主机名已设置,退出设置主机名步骤
已完成依赖环境安装,退出依赖环境安装步骤
docker-ce-cli-19.03.5-3.el7.x86_64
docker-ce-19.03.5-3.el7.x86_64
已安装docker,退出安装docker步骤
k8s 部署
配置
k8s源
1
2
3
4
5
6
7
8
9
10
11
12# k8s-master1 和 k8s-node1 机器都需要操作
# 添加 k8s yum 源
$ 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=0
EOF
# 重建 yum缓存
$ yum makecache fast安装
kubeadm、kubelet、kubectl
1 | # k8s-master1 机器上操作 |
换国内镜像源拉取镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43# k8s-master1 机器上操作
# 查看镜像版本
$ kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.16.3
k8s.gcr.io/kube-controller-manager:v1.16.3
k8s.gcr.io/kube-scheduler:v1.16.3
k8s.gcr.io/kube-proxy:v1.16.3
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.15-0
k8s.gcr.io/coredns:1.6.2
# 使用如下脚本下载国内镜像,并修改tag为google的tag
$ vim kubeadm.sh
set -e
KUBE_VERSION=v1.16.3
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.15-0
CORE_DNS_VERSION=1.6.2
GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers
images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})
for imageName in ${images[@]} ; do
docker pull $ALIYUN_URL/$imageName
docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName
docker rmi $ALIYUN_URL/$imageName
done
# 运行脚本,拉取镜像
$ bash kubeadm.shmaster 节点安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25# k8s-master1 机器上操作
$ sudo kubeadm init \
--apiserver-advertise-address 172.17.94.205 \
--kubernetes-version=v1.16.3 \
--pod-network-cidr=10.244.0.0/16
# 返回结果
# 下面是添加节点需要执行以下命令
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 172.17.94.205:6443 --token g59i0k.4ccldean82uvhuq2 \
--discovery-token-ca-cert-hash sha256:2d815a28094ac4c4659407117b5975c6a7dc8aa1cfd003660cb270e4e58ff6fd
# 添加 k8s config 文件到 .kube 目录
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 需要安装多个master节点,则使用下面初始化命令
$ kubeadm init --apiserver-advertise-address 172.17.94.205 --control-plane-endpoint 172.17.94.205 --kubernetes-version=v1.16.3 --pod-network-cidr=10.244.0.0/16 --upload-certs
# 添加master节点命令
# 注:这里的token会不同,不要直接复制。kubeadm init成功后会输出添加 master节点的命令
$ kubeadm join 172.17.94.205:6443 --token g34zaa.ur84appk8h9r3yik --discovery-token-ca-cert-hash sha256:abe426020f2c6073763a3697abeb14d8418c9268288e37b8fc25674153702801 --control-plane --certificate-key 9b9b001fdc0959a9decef7d812a2f006faf69ca44ca24d2e557b3ea81f415afeNode 节点安装
1
2
3
4
5
6
7
8
9
10
11# k8s-node1 机器上操作
# 安装 kubeadm kubelet
$ yum install -y kubeadm-1.16.3 kubectl-1.16.3 kubelet-1.16.3 --disableexcludes=kubernetes && systemctl enable --now kubelet
# 添加 node 节点,暂时先忽略错误
$ kubeadm join 172.17.94.205:6443 --token g59i0k.4ccldean82uvhuq2 \
--discovery-token-ca-cert-hash sha256:2d815a28094ac4c4659407117b5975c6a7dc8aa1cfd003660cb270e4e58ff6fd \
--ignore-preflight-errors=all
# 如果添加节点失败,或是想重新添加,可以使用命令,不要在 master 节点使用
$ kubeadm reset安装网络组件 flanneld
1
2
3# k8s-master1
# 下载flannel配置文件
$ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
1 | # k8s-master1 和 k8s-node1 机器都需要操作 |
1 | # k8s-master1 机器上操作 |
1 | # k8s-master1 |
---本文结束感谢您的阅读。微信扫描二维码,关注我的公众号---
本文作者:
Peng Yang
本文链接: https://www.yp14.cn/2019/11/24/K8S-之-kubeadm-安装/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://www.yp14.cn/2019/11/24/K8S-之-kubeadm-安装/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!