kubeadm部署kubernetes集群


1. 环境说明

2. 环境准备

2.1 host解析(all)

配置主机名

[root@centos7 ~]# hostnamectl set-hostname node01
[root@centos7 ~]# bash
[root@node01 ~]# 

host域名解析

[root@node01 ~]# cat >> /etc/hosts << EOF
10.100.1.121 node01
10.100.1.122 node02
10.100.1.123 node03
EOF

2.2 Host互信(node01)

在node01生产密钥对

[root@node01 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:9nJ3sNnRdgXjYbwNhPlsMdcujd7nmkdwtzFI/SzbCZE root@node01
The key's randomart image is:
+---[RSA 2048]----+
|             =O .|
|            oE==o|
|            .o+%o|
|             oX+X|
|        S   .ooOX|
|       . .   =o=*|
|        . o + oo.|
|         o . . .o|
|              oo |
+----[SHA256]-----+

拷贝公钥至其他节点

[root@node01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub node02
[root@node01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub node03

2.3 关闭防火墙(all)

关闭selinux、firewalld、netfilter/iptables

3. 安装docker(all)

3.1 安装依赖包

[root@node01 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

3.2 配置docker源

[root@node01 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.3 安装docker-ce

[root@node01 ~]# yum install -y docker-ce

3.4 设置cgroup driver类型为systemd

[root@node01 ~]# cat <daemon.json
{
 "exec-opts": ["native.cgroupdriver=systemd"],
 "log-driver": "json-file",
 "log-opts": {
 "max-size": "100m"
 },
 "storage-driver": "overlay2"
}
EOF

3.5 启动docker并校验

[root@node01 ~]# systemctl restart docker 
[root@node01 ~]# systemctl enable docker
[root@node01 ~]# docker info |grep Cgroup
 Cgroup Driver: systemd  #system类型
 Cgroup Version: 1

4. 安装kubeadm

4.1 配置内核参数

[root@node01 ~]# cat <k8s.conf
br_netfilter
EOF
[root@node01 ~]# cat <k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
[root@node01 ~]# sysctl --system

开启ip_forward转发参数

[root@node01 ~]# sed -i '/ip_forward/ s/0/1/g' /etc/sysctl.conf
[root@node01 ~]# sysctl -p
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

4.2 配置kubernetes源

cat < /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
EOF

4.3 安装kube组件

kubectl,命令?交互?具

kubeadm,集群初始化?具

kubelet,管理容器运?时组建

[root@node01 ~]# yum install -y kubeadm kubectl kubelet

报错:

 Failing package is: cri-tools-1.19.0-0.x86_64
 GPG Keys are configured as: https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

原因是key 校验,--nogpgcheck跳过校验。

[root@node01 ~]# yum install -y kubelet kubeadm kubectl --nogpgcheck
[root@node01 ~]# systemctl enable kubelet

5. 初始化集群

 5.1 通过kubeadm init初始化集群

[root@node01 ~]# kubeadm init --apiserver-advertise-address 10.100.1.121 --apiserver-bind-port 6443 --pod-network-cidr 172.16.0.0/16

--apiserver-advertise-address apiserver的地址,默认会选择访问外?的地址

--apiserver-bind-port apiserver访问端?,默认为6443

--image-repository registry.aliyuncs.com/google_containers 国内?法访问gcr.io仓库

--pod-network-cidr 指定pod段访问的地址段,可以根据需要修改