目录

一. 安装Docker

1. 服务器列表

1.1. 三台服务器都添加hosts

2. 升级内核

2.1. 上传内核包

2.2. 升级内核

2.3.修改默认启动项到 最新的内核 

2.4.重启服务器观察内核

3. 开启核心路由转发

4. 补包

5.添加yum源

5.1. 添加阿里云yum源 aliyun.repo 

5.2. 添加docker源 docker-ce.repo

5.3. 建立yum源缓存

6. 安装docker

7. 添加阿里云k8s镜像源

8. 配置镜像加速器

二. 安装Kubernetes

1.  在master安装k8s相关组件

1.1 安装组件

1.2. 启动kubelet

1.3. 初始化k8s集群

1.4.复制密钥

1.5. 保存加入集群指令


一. 安装Docker

1. 服务器列表

192.168.10.11    master11
192.168.10.12    docker12
192.168.10.13    docker13
192.168.10.14    harbor14

1.1. 四台服务器都添加hosts

vim /etc/hosts
192.168.10.11    mster11
192.168.10.12   docker12
192.168.10.13   docker13

设置主机名
每台服务器修改主机名
hostnamectl set-hostname  master11/docker12/docker13/harbor14

2. 升级内核

2.1. 上传内核包

# kernel-ml-6.0.11-1.el7.elrepo.x86_64.rpm 
# kernel-ml-devel-6.0.11-1.el7.elrepo.x86_64.rpm

2.2. 升级内核

yum install -y kernel-ml-6.0.11-1.el7.elrepo.x86_64.rpm  kernel-ml-devel-6.0.11-1.el7.elrepo.x86_64.rpm

2.3.修改默认启动项到 最新的内核 

grub2-set-default  0

2.4.重启服务器观察内核

uname -r
6.0.11-1.el7.elrepo.x86_64


3. 开启核心路由转发

添加内核转发参数

echo  net.ipv4.ip_forward = 1 >> /etc/sysctl.conf 

echo  net.bridge.bridge-nf-call-ip6tables = 1 >> /etc/sysctl.conf 

echo  net.bridge.bridge-nf-call-iptables = 1 >> /etc/sysctl.conf 

查看sysctl配置文件

cat /etc/sysctl.conf 

加载sysctl配置文件

sysctl  -p

4. 补包

yum install -y yum-utils device-mapper-persistent-data lvm2

5.添加yum源

5.1. 添加阿里云yum源 aliyun.repo 

vim /etc/yum.repo.d/aliyun.repo
[aliyun-os]
name=aliyun-os
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
enabled=1
gpgcheck=0

[aliyun-epel]
name=aliyun-epel
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
enabled=1
gpgcheck=0

[aliyun-extra]
name=aliyun-extra
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
enabled=1
gpgcheck=0

5.2. 添加docker源 docker-ce.repo

# 方法1

yum-config-manager --add-repo  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 方法2

vim /etc/yum.repo.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

5.3. 建立yum源缓存

yum clear all

yum makecache

6. 安装docker

安装 docker-20.10.21

yum install -y docker-ce-20.10.21 docker-ce-cli-20.10.21 containerd.io

设置开机自启

systemclt start docker

systemclt enable docker

查看docker版本

docker -v

7. 添加阿里云k8s镜像源

vim /etc/yum.repo.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

建立yum源缓存

yum makecache fast

8. 配置镜像加速器

vim  /etc/docker/daemon.json
{
  "registry-mirrors": ["https://2q6ap672.mirror.aliyuncs.com"]
}

# 重载docker

systemctl daemon-reload

systemctl  restart docker 

###  以上操作四台服务器都需要执行  ###


二. 安装Harbor本地仓库

在harbor14服务器上安装harbor本地仓库

1. 安装docker-compose可执行程序

cd /usr/local/bin

上传docker-compose程序

chmod  750  docker-compose

docker-compose -version

2. 安装harbor

cd /usr/lcoal

上传harbor-offline-installer-v1.2.0.tgz

tar -zvxf harbor-offline-installer-v1.2.0.tgz

使用docker-compose安装harbor仓库

cd /usr/local/harbor

sh install.sh   # 执行脚本load镜像

3. 添加hosts

四台服务器(master11/docker12/docker13/harbor14)都添加hosts

echo "192.168.10.14    harbor.harbor14.com" >> /etc/hosts

4. 使用docker-compose安装harbor仓库

cd /usr/local/harbor

sh install.sh     # 执行脚本load镜像

保存harbor仓库的地址

http://harbor.harbor14.com

查看harbor的容器

5. 访问harbor仓库

windows上添加hosts

账号:admin
密码:Harbor12345

6. 添加信任地址

四台服务器(master11/docker12/docker13/harbor14)都添加

vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://2q6ap672.mirror.aliyuncs.com"],
  "insecure-registries":["http://harbor.harbor14.com"]
}

7. 重启docker

systemctl  daemon-reload
systemctl  restart docker

8. 登录仓库

在k8s服务器上登录仓库,就可以直接pull/push镜像了

docker login http://harbor.harbor14.com

9. 推送拉取镜像

9.1. 推送镜像

mkdir /data/images
cd /data/images
上传calico镜像包
docker load -i calico_cni.tar
docker load -i calico_kube-controllers.tar
docker load -i calico_node.tar
docker load -i calico_pod2daemon.tar
docker images
docker login http://harbor.harbor14.com

给镜像到标签,这样才能push到harbor.harbor14.com/library/仓库项目中

# 给镜像打仓库标签
docker tag calico/node:v3.14.2 harbor.harbor14.com/library/calico/node:v3.14.2
docker tag calico/pod2daemon-flexvol:v3.14.2 harbor.harbor14.com/library/calico/pod2daemon-flexvol:v3.14.2
docker tag calico/cni:v3.14.2 harbor.harbor14.com/library/calico/cni:v3.14.2
docker tag calico/kube-controllers:v3.14.2 harbor.harbor14.com/library/calico/kube-controllers:v3.14.2

# 推送镜像
docker push harbor.harbor14.com/library/calico/node:v3.14.2
docker push harbor.harbor14.com/library/calico/pod2daemon-flexvol:v3.14.2
docker push harbor.harbor14.com/library/calico/cni:v3.14.2
docker push harbor.harbor14.com/library/calico/kube-controllers:v3.14.2

9.2. 拉取镜像

在k8s三台服务器(master11/docker12/docker13)上拉取镜像

docker login http://harbor.harbor14.com  # 登录仓库

docker pull harbor.harbor14.com/library/calico/node:v3.14.2
docker pull harbor.harbor14.com/library/calico/pod2daemon-flexvol:v3.14.2
docker pull harbor.harbor14.com/library/calico/cni:v3.14.2
docker pull harbor.harbor14.com/library/calico/kube-controllers:v3.14.2


三. 安装Kubernetes

1.  在master安装k8s相关组件

(在master服务器操作)

# kubectl:客户端工具 
# kubeadm:管理集群程序
# kubelet:所有节点需要安装的代理服务

1.1 安装组件

yum install -y kubectl-1.21.14   kubeadm-1.21.14  kubelet-1.21.14

1.2. 启动kubelet

systemctl start kubelet
systemctl enable kubelet

1.3. 初始化k8s集群

# --kubernetes-version v1.21.14   指定k8s当前版本
# -advertise-address 192.168.10.11 指定当前服务器IP

执行以下kubeadm命令进行初始化

kubeadm init --image-repository  registry.aliyuncs.com/google_containers --kubernetes-version v1.21.14 \
 --apiserver-advertise-address 192.168.10.11 --pod-network-cidr=10.244.0.0/16  --token-ttl 0

1.4.复制密钥

将生成的k8s管理员密钥文件复制到当前用户的家命令/.kube目录下,授权
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

1.5. 保存加入集群指令

保存kubeadm的join命令 用于node节点加入集群

kubeadm join 192.168.10.11:6443 --token chd203.xmey8b7unpqy3ewb \
	--discovery-token-ca-cert-hash sha256:0ef2cbaba1210a2dc1bf7377fb73a0e91fe6ba911eb70004d325e36e99e01dcb

2. 在node节点安装k8s组件

2.1. 安装组件

yum install -y kubectl-1.21.14   kubeadm-1.21.14  kubelet-1.21.14 ipvsadm  ipset

2.2. 启动kubelet

systemctl start kubelet
systemctl enable kubelet

2.3. 加入k8s集群

kubeadm join 192.168.10.11:6443 --token chd203.xmey8b7unpqy3ewb \
 --discovery-token-ca-cert-hash sha256:0ef2cbaba1210a2dc1bf7377fb73a0e91fe6ba911eb70004d325e36e99e01dcb 

在master上查看node节点状态

kubectl get nodes # 查看node节点状态


四. 安装网络插件calico

实现跨主机通信

1. 上传calico.yaml配置文件

# master11节点操作

mkdir /data/yaml

cd /data/yaml

ls -l

2. 修改calico.yaml配置文件

# master11节点操作

vim calico.yaml

 value: "10.244.0.0/16"   # calico分配ip的网段

3. 下载calico镜像

# 有calico镜像的可以不用下载

# 拉取镜像
docker pull harbor.harbor14.com/library/calico/node:v3.14.2
docker pull harbor.harbor14.com/library/calico/pod2daemon-flexvol:v3.14.2
docker pull harbor.harbor14.com/library/calico/cni:v3.14.2
docker pull harbor.harbor14.com/library/calico/kube-controllers:v3.14.2

# 还原镜像标签
docker tag harbor.harbor14.com/library/calico/node:v3.14.2   calico/node:v3.14.2
docker tag harbor.harbor14.com/library/calico/pod2daemon-flexvol:v3.14.2  calico/pod2daemon-flexvol:v3.14.2
docker tag harbor.harbor14.com/library/calico/cni:v3.14.2   calico/cni:v3.14.2
docker tag harbor.harbor14.com/library/calico/kube-controllers:v3.14.2   calico/kube-controllers:v3.14.2

4. 应用calico.yaml

calico-node采集node节点上的网络信息给calico-kube-controllers控制器,由calico-kube-controllers控制器决定node节点应该用哪个网段

kubectl apply -f calico.yaml      # 应用calico.yaml文件
kubectl get nodes                 # 查看node节点状态(Ready)
kubectl get  pods -n kube-system  # 查看calico的pod


五. 资源清单

1. yaml文件

---                                         # 单个资源的开头
apiVersion: v1                              # namespace的版本
kind: Namespace                             # 资源类型是namespace
metadata:                                   # namespace的元数据
  name: namespace-1                         # namespace的名字叫namespace-1
  labels:                                   # namespace的标签
    N1: namespace1                          # 标签N1: namespace1
	N2: namespace2                          # 标签N2: namespace2

---                                         # 第一个Pod资源的开头
apiVersion: v1                              # Pod的版本
kind: Pod                                   # 资源类型是Pod
metadata:                                   # 这个Pod的元数据
  name: pod-1                               # Pod的名字是pod-1
  labels:                                   # pod-1的标签
    P1: pod1                                # 标签P1: pod1
	P2: pod2                                # 标签p2: pod2
spec:                                       # 定义这个Pod的详细信息
  containers:                               # 定义容器
  - name: nspod1                            # 第一个容器的名字nspod1
    image: busybox:latest                   # 容器使用的镜像
	command: ["/bin/sh","-c","sleep 3600"]  # 替换的根程序
  - name: nspod2                            # 第二个容器的名字nspod2
    image: busybox:latest                   # 使用的镜像
 
---                                         # 第二个Pod资源的开头
apiVersion: v1                              # Pod的版本
kind: Pod                                   # 资源类型是Pod
metadata:                                   # 这个Pod的元数据
  name: pod-2                               # Pod的名字是pod-2
  labels:                                   # Pod-2的标签
    P2: pod2                                # 标签P2: pod2
	P3: pod3                                # 标签P3: pod3
spec:                                       # 定义这个Pod的详细信息
  containers:                               # 定义容器
  - name: nspod1                            # 第一个容器的名字nspod1
    image: nginx:latest                     # 使用的镜像
  - name: nspod2                            # 第二个容器的名字nspod2
    image: busybox:latest                   # 使用的镜像

2. k8s的命令

kubectl get/create/delete/logs/describe/apply/explain/exec/label  pods
-o wide # 
-o yaml # 显示详细信息
--show-labels  # 显示标签
-l    # 筛选容器 (-l P2:pod2)

kubectl apply -f kube.yaml
kubectl explain pods/namespace/deployment/svc.xxxx  # 查看对应的键值
kubectl describe pods/pod1

kubectl exec -it pod1 -n namespace1 -c nspod1 -- /bin/sh
-c: 指定容器名
-n: 指定命名空间

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐