Kubernetes 的安装与使用
目录
一. 安装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仓库的地址
查看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: 指定命名空间
更多推荐
所有评论(0)