0%

k8s-kubeadm安装k8s

前言

本文主要介绍Docker和Kubernetes的安装步骤,安装Docker采用官网提供的安装方式,安装k8s采用官网提供的kubeadm方式。其中镜像地址都采用了国内阿里镜像地址。

k8s集群服务器初始化(准备工作)

关闭防火墙

1
2
systemctl stop firewalld	#临时关闭
systemctl disable firewalld #永久关闭

关闭swap分区

1
2
3
4
5
6
#临时关闭
swapoff -a

#永久关闭
vi /etc/fstab
#注释掉/dev/mapper/centos-swap swap 整行

允许 iptables 检查桥接流量

1
2
3
4
5
6
7
8
9
10
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sudo sysctl --system

将 SELinux 设置为 permissive 模式

1
2
3
# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0 #临时关闭
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config #永久关闭

设置主机名称并在master节点添加hosts

  1. 分别修改主机名

    1
    2
    3
    4
    5
    hostnamectl set-hostname k8smaster01

    hostnamectl set-hostname k8snode01

    hostnamectl set-hostname k8snode02
  2. 在master节点添加hosts,IP改为对应主机IP

    1
    2
    3
    4
    5
    cat >> /etc/hosts << EOF
    192.168.211.142 k8smaster01
    192.168.211.143 k8snode01
    192.168.211.144 k8snode02
    EOF

如果集群主机日期不一致请同步日期

此处省略

参考内容

kubeadm官网安装教程

安装Docker

参考内容:Docker官网安装教程
这里选择的是centos安装

卸载旧版本

1
2
3
4
5
6
7
8
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

安装Dokcer安装包

1
sudo yum install -y yum-utils

设置镜像

1
2
3
4
5
6
7
8
9
#官网镜像
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

#国内阿里镜像(推荐)
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker Engine

1
sudo yum install docker-ce docker-ce-cli containerd.io

启动Dokcer

1
sudo systemctl start docker

配置 Docker 守护程序

1
2
3
4
5
6
7
8
9
10
11
12
sudo mkdir /etc/docker

cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF

设置 Docker 并在启动时启用

1
2
3
sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

安装 kubeadm、kubelet 和 kubectl

添加yum源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 官网google源(不推荐)
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

# 国内阿里源(推荐)
cat <<EOF | sudo tee /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=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

安装 kubeadm、kubelet 和 kubectl

1
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

设置kubelet开机启动

1
sudo systemctl enable --now kubelet

在Master节点初始化平面节点

image-repository:指定国内阿里镜像

pod-network-cidr:指定pod网络(不与主机在同一网段即可)

1
sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16

在Master节点使用kubectl工具

执行kubeadm init之后生成的,复制粘贴即可。

1
2
3
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

安装 Pod 网络附加组件

任一方式均可

flannel方式

在master中配置网络映射

1
2
3
4
#因网站被墙,需要在/etc/hosts文件添加映射
cat >> /etc/hosts << EOF
199.232.68.133 raw.githubusercontent.com
EOF

在master中下载kube-flannel.yml文件

1
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

下载flannel docker镜像

  1. 访问:https://github.com/flannel-io/flannel/releases

    下载flannel

  2. 下载对应版本flannel docker镜像,如flanneld-v0.14.0-amd64.docker,并上传到3台服务器。

导入docker仓库

3台机器把flannel镜像导入docker仓库

1
docker load < flanneld-v0.14.0-amd64.docker

运行flannel插件

在master机器运行flannel插件

1
kubectl apply -f kube-flannel.yml

查看k8s集群状态

1
2
3
4
5
6
#查看所有节点是否ready
kubectl get nodes
#查看flannel节点是否运行正常
kubectl get pod -n kube-system | grep flannel
#查看kube-system启动的所有pod
kubectl get pod -n kube-system

参考内容

部署k8s的时候kube-flannel.yml下载不下来解决

CentOS-7.9通过kubeadm搭建k8s集群

calico方式

下载calico.yaml

1
curl https://docs.projectcalico.org/manifests/calico.yaml -O

如果使用CIDR为192.168.0.0/16,或者使用 kubeadm,不需要修改CALICO_IPV4POOL_CIDR。其他平台需要修改CALICO_IPV4POOL_CIDR

创建使用calico

1
2
3
kubectl create -f calico.yaml

kubectl apply -f calico.yaml

参考内容

官网安装方式

加入node节点

执行kubeadm init之后生成的,复制粘贴即可。

1
2
kubeadm join 192.168.211.142:6443 --token nzz2t6.os75i5sh03o1l2zr \
--discovery-token-ca-cert-hash sha256:6747e5cd75d5ac8ce63694e6c8dbe32dedb0a29a2215b3b172e62efbc633e51e

测试kubernetes集群

在 Kubernetes 集群中创建一个 pod,验证是否正常运行

1
2
3
4
5
6
7
8
#创建pod
kubectl create deployment nginx --image=nginx

#暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort

#执行查看
kubectl get pod,svc

执行结果

1
2
3
4
5
6
7
[root@k8smaster01 ~]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-6799fc88d8-hnwx9 1/1 Running 0 37m

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 114m
service/nginx NodePort 10.109.186.229 <none> 80:31444/TCP 6s

访问地址:http://NodeIP:Port

如我的ip为:http://192.168.211.144:31444/

欢迎关注我的其它发布渠道