零基础使用kubeadm搭建kubernetes

本文使用的操作系统环境为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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值