本文使用的操作系统环境为centos7.6最小化安装(安装的时候勾选开发工具选项),CPU内存资源为2核4G,硬盘100G
一、master节点安装
1、环境准备
#更改主机名,关闭防火墙和核心防护功能
[root@localhost ~]# hostnamectl set-hostname master
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
[root@master ~]# setenforce 0
[root@master ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
#关闭linux的swap系统交换区
[root@master ~]# swapoff -a
2、安装docker环境
docker安装可参考–Docker部署安装及常规操作
3、安装kubeadm
#先配置kubernetes的yum源
[root@master ~]# 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=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
#安装kubeadm、kubectl、kubelet
[root@master ~]# yum install -y kubeadm kubectl kubelet
[root@master ~]# systemctl start kubelet
[root@master ~]# systemctl enable kubelet
4、修改kubeadm的默认配置
#运行kubeadm config print init-defaults命令,获得默认的初始化配置文件
[root@master ~]# kubeadm config print init-defaults > init-config.yaml
#更改配置文件
[root@master ~]# vi init-config.yaml
apiVersion: kubeadm.k8s.io/v1beta3
......
localAPIEndpoint:
advertiseAddress: 1.2.3.4 //将此处的地址更换为master节点安装的地址
bindPort: 6443
......
kind: ClusterConfiguration
kubernetesVersion: 1.22.2 //可更改需要安装的kubernetes的版本号
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12 //可更改需要的pod的地址范围
scheduler: {}
5、下载kubernetes的相关镜像
#使用命令kubeadm config images list,可查看到镜像列表
[root@master ~]# kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.22.2
k8s.gcr.io/kube-controller-manager:v1.22.2
k8s.gcr.io/kube-scheduler:v1.22.2
k8s.gcr.io/kube-proxy:v1.22.2
k8s.gcr.io/pause:3.5
k8s.gcr.io/etcd:3.5.0-0
k8s.gcr.io/coredns/coredns:v1.8.4
#直接下载会提示报错无法连接到“https://k8s.gcr.io/v2/”,需要先从阿里云下载相关的镜像源
[root@master ~]# kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers
#下载完成后使用docker tag命令将镜像名称改为上面对应的镜像名称
[root@master ~]# docker tag 更改前的镜像名:版本 更改后的镜像名:版本
6、使用kubeadm init命令安装master节点
#因为kubernetes默认的设置cgroup驱动为“systemd”,而docker服务的cgroup驱动默认值为“cgroups”,需要将其改为“systemd”,与kubernetes保持一致
#修改docker的配置文件
[root@master ~]# vi /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
......
}
#使用kubeadm init命令安装master节点
[root@master ~]# kubeadm init --config=init-config.yaml
#执行命令后如出现“[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1”报错,执行如下命令即可
[root@master ~]# echo "1">/proc/sys/net/bridge/bridge-nf-call-iptables
[root@master ~]# echo "1">/proc/sys/net/bridge/bridge-nf-call-ip6tables
#提示"Your Kubernetes control-plane has initialzied successfully!"表示master节点安装完成
#安装安装完成的提示执行命令
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
#下面就可以使用kubectl命令对kubernetes集群进行访问了
[root@master ~]# kubectl get pods -A
二、添加node节点
1、安装kubeadm(系统准备环境与master节点安装的1,2步骤一致)
#先配置kubernetes的yum源
#安装kubeadm、kubelet
[root@node1 ~]# yum install -y kubeadm kubelet
[root@node1 ~]# systemctl start kubelet
[root@node1 ~]# systemctl enable kubelet
2、使用kubeadm join命令加入集群,可以从master节点安装完成的提示复制过来
#先依照master节点安装的第5步骤,下载相关的镜像
[root@node1 ~]# kubeadm join 192.168.7.110:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:bba000fdae5710be28aa2cc55bb22538a324dd4e4ee4dc5b9753e16aa7ca6eb8
#添加完成后在master节点执行命令kubectl get nodes
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
node NotReady control-plane,master 22h v1.22.2
node1 NotReady <none> 22h v1.22.2
3、此时查看到的所有节点的状态为“NotReady”,需要安装CNI插件
[root@master ~]# kubectl apply -f "https://docs.projectcalico.org/manifests/calico.yaml"
#安装完成后再次查看状态为“Ready”,kubernetes集群安装完成
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
node Ready control-plane,master 22h v1.22.2
node1 Ready <none> 22h v1.22.2
[root@master ~]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-75f8f6cc59-l6jbg 1/1 Running 9 (1h ago) 1h
kube-system calico-node-nlsz2 1/1 Running 1 (1h ago) 1h
kube-system calico-node-zvl7w 1/1 Running 1 (1h ago) 1h
kube-system coredns-78fcd69978-ks5fl 1/1 Running 1 (1h ago) 1h
kube-system coredns-78fcd69978-pkhw2 1/1 Running 1 (1h ago) 1h
kube-system etcd-node 1/1 Running 1 (1h ago) 1h
kube-system kube-apiserver-node 1/1 Running 1 (1h ago) 1h
kube-system kube-controller-manager-node 1/1 Running 4 (1h ago) 1h
kube-system kube-proxy-hdrjh 1/1 Running 1 (1h ago) 1h
kube-system kube-proxy-wzxhv 1/1 Running 1 (1h ago) 1h
kube-system kube-scheduler-node 1/1 Running 4 (1h ago) 1h