k8s集群搭建
本次搭建操作基于 Debian9.6 系统,大致步骤如下:
- 安装docker
- 配置网络环境,关闭防火墙
- 安装 k8s 相关组件
- 克隆机器
- 配置节点ip和hostname
# 一、k8s安装
# 1)安装docker
# 2)安装K8S
# 配置docker驱动,添加 "exec-opts":["native.cgroupdriver=systemd"]
$ cat /etc/docker/daemon.json
{
"exec-opts":["native.cgroupdriver=systemd"]
}
1
2
3
4
5
6
2
3
4
5
6
# k8s 安装步骤
0). docker安装参见我另一篇文章
1). docker成功运行后配置k8s的更新源,推荐阿里云
# 添加 k8s 源
$ cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
# 添加公钥
$ curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
1
2
3
4
5
6
7
2
3
4
5
6
7
2). 关闭虚拟内存
# 暂时关闭
$ swapoff -a
# 或永久关闭,注释掉swap那一行,推荐永久关闭
$ nano /etc/fstab
1
2
3
4
5
2
3
4
5
3). 安装最新版的k8s
$ apt-get update
$ apt-get install kubelet kubeadm kubectl kubernetes-cni
1
2
2
4). 其中kubeadm用于初始化环境,kubectl用于操作kubelet。 设置开机启动
# 设置开机启动
$ systemctl enable kubelet && systemctl start kubelet
# 查看kubectl版本
$ kubectl version
1
2
3
4
5
2
3
4
5
5). 克隆当前机器,配置集群,配置静态 IP
机器配置如下: 192.168.88.100 master
192.168.88.101 node1
192.168.88.102 node2
6). 配置Master节点的k8s,并使用 kubeadm 拉取镜像
统一 k8s 和 docker 的 cgroup dirver
Docker 使用 cgroup,而 k8s 使用 systemd,两者需要统一。
修改或创建 /etc/docker/daemon.json,加入下面的内容:
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
1
2
3
2
3
重启 docker:
$ sudo systemctl restart docker
$ sudo systemctl status docker
1
2
2
使用kubeadm init进行初始化操作
# 启动 kubelet, 并设置为开机启动
$ systemctl daemon-reload
$ systemctl enable --now kubelet
$ cat > kubeadm-config.yaml << EOF
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.18.0
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
controlPlaneEndpoint: "master:16443"
networking:
serviceSubnet: "10.96.0.0/16"
podSubnet: "192.168.0.0/16"
dnsDomain: "cluster.local"
EOF
$ kubeadm init \
--apiserver-advertise-address=192.168.88.100 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--pod-network-cidr=10.244.0.0/16
$ kubeadm init --config kubeadm-config.yaml
$ mkdir -p $HOME/.kube
$ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ chown $(id -u):$(id -g) $HOME/.kube/config
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
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
====================分割线=======================
debian环境搭建K8S集群
# 防火墙,swap,selinux修改
$ echo -e "net.bridge.bridge-nf-call-ip6tables =1\nnet.bridge.bridge-nf-call-iptables =1\nnet.ipv4.ip_forward = 1" >> /etc/sysctl.conf;sysctl -p;swapoff -a;sed -ri "/swap/s@(.*)@#/&@g" /etc/fstab;echo "SELINUX=disabled" > /etc/selinux/config
# 时间同步
$ apt -y install ntpdate
$ echo " */5 * * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn" >> /var/spool/cron/crontabs/root
$ echo 'KUBELET_EXTRA_ARGS="--cgroup-driver=cgroupfs --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause:3.2"' >/etc/default/kubelet
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
上次更新: 2021/06/08, 01:06:00