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段访问的地址段,可以根据需要修改