k8s安装实践-centos7

环境要求

这里准备三台机器 ,本机192.168.30.68同时也是harbor仓库所在主机

[root@master1 yum.repos.d]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost
127.0.0.1 master14.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.30.68 master reg.westos.org
192.168.30.69 node1
192.168.30.70 node2
192.168.30.71 node3

一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令
每台机器 2 GB 或更多的 RAM (如果少于这个数字将会影响你应用的运行内存)
2 CPU 核或更多
集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)
禁用交换分区。为了保证 kubelet 正常工作,必须禁用交换分区。

[root@master1 yum.repos.d]# free -m  #查看内存
              total        used        free      shared  buff/cache   available
Mem:           7821        1632         835          49        5353        5832
Swap:             0           0           0
[root@master1 yum.repos.d]# swapoff -a #关闭swap分区
[root@master1 yum.repos.d]# vim /etc/fstab  #注释此文件swap一行

在这里插入图片描述

前期开始

禁用防火墙
systemctl stop firewalld
systemctl disable firewalld

#将 SELinux设置为permissive 模式(相当于将其禁用)
setenforce 0
sed -i ‘s/^SELINUX=enforcing$/SELINUX=permissive/’ /etc/selinux/config

创建/etc/sysctl.d/k8s.conf文件,添加如下内容:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

开启内核 ipv4 转发需要加载 br_netfilter 模块,所以加载下该模块:
modprobe br_netfilter

执行如下命令使修改生效:
sysctl -p /etc/sysctl.d/k8s.conf

安装docker

# step 1: 安装必要的一些系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
systemctl start docker
systemctl enable docker


配置镜像加速
 mkdir -p /etc/docker  # 如果没有这个目录先创建,然后添加 daemon.json 文件
 vi /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "registry-mirrors" : [
    "https://ot2k4d59.mirror.aliyuncs.com/"
  ]
}

接着我们再把docker重启一下
systemctl restart docker

#docker info 查看cGroup Driver是systemd
在这里插入图片描述

安装k8s

基于redhat(centos)发行版本
阿里云源
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



yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

在这里插入图片描述
以上的步骤需要在3个节点都做

因为生产环境中部署服务肯定是批量的,这里私有仓库的搭建就起作用了。
我们把主节点上拉取的镜像推送到私有仓库,这样其他节点就可以直接拉取了。
PS:如果之前没有搭建harbor仓库,需要重新搭建一下harbo仓库搭建

提前新建一个k8s项目
PS:搭建过程中出现输入用户名、密码harbor登录不上情况,检查配置文件并重新执行install.sh
在这里插入图片描述

拉取镜像
[root@master1 yum.repos.d]# kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
I1231 22:13:31.956040   20707 version.go:255] remote version is much newer: v1.23.1; falling back to: stable-1.22
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-apiserver:v1.22.5
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-controller-manager:v1.22.5
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-scheduler:v1.22.5
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-proxy:v1.22.5
[config/images] Pulled registry.aliyuncs.com/google_containers/pause:3.5
[config/images] Pulled registry.aliyuncs.com/google_containers/etcd:3.5.0-0
[config/images] Pulled registry.aliyuncs.com/google_containers/coredns:v1.8.4



[root@master1 yum.repos.d]# docker images|grep ^reg|grep -v nginx
registry.aliyuncs.com/google_containers/kube-apiserver            v1.22.5             059e6cd8cf78        2 weeks ago         128MB
registry.aliyuncs.com/google_containers/kube-scheduler            v1.22.5             935d8fdc2d52        2 weeks ago         52.7MB
registry.aliyuncs.com/google_containers/kube-proxy                v1.22.5             8f8fdd6672d4        2 weeks ago         104MB
registry.aliyuncs.com/google_containers/kube-controller-manager   v1.22.5             04185bc88e08        2 weeks ago         122MB
registry.aliyuncs.com/google_containers/etcd                      3.5.0-0             004811815584        6 months ago        295MB
registry.aliyuncs.com/google_containers/coredns                   v1.8.4              8d147537fb7d        7 months ago        47.6MB
registry.aliyuncs.com/google_containers/pause                     3.5                 ed210e3e4a5b        9 months ago        683kB

#过滤镜像并整理格式
[root@master1 yum.repos.d]# docker images|grep ^reg|grep -v nginx|awk '{print $1":"$2}'
registry.aliyuncs.com/google_containers/kube-apiserver:v1.22.5
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.22.5
registry.aliyuncs.com/google_containers/kube-scheduler:v1.22.5
registry.aliyuncs.com/google_containers/kube-proxy:v1.22.5
registry.aliyuncs.com/google_containers/etcd:3.5.0-0
registry.aliyuncs.com/google_containers/coredns:v1.8.4
registry.aliyuncs.com/google_containers/pause:3.5

#给镜像打上私有仓库的标签便于下一步上传
[root@master1 yum.repos.d]# docker images|grep ^reg|grep -v nginx|awk '{print $1":"$2}'|awk -F / '{system("docker tag "$0" reg.westos.org/k8s/"$3"")}'

如下图,镜像就被上传到私有仓库了

在这里插入图片描述
主节点上
[root@master1 harbor]# kubeadm config images list --image-repository reg.westos.org/k8s
I0101 11:06:27.107533 29126 version.go:255] remote version is much newer: v1.23.1; falling back to: stable-1.22
reg.westos.org/k8s/kube-apiserver:v1.22.5
reg.westos.org/k8s/kube-controller-manager:v1.22.5
reg.westos.org/k8s/kube-scheduler:v1.22.5
reg.westos.org/k8s/kube-proxy:v1.22.5
reg.westos.org/k8s/pause:3.5
reg.westos.org/k8s/etcd:3.5.0-0
reg.westos.org/k8s/coredns:v1.8.4
[root@master1 harbor]# kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.westos.org/k8s

安装网络插件flannel

拉取镜像并上传到私有仓库中

[root@master1 ~]# docker pull quay.io/coreos/flannel:v0.14.0
v0.14.0: Pulling from coreos/flannel
801bfaa63ef2: Pull complete 
e4264a7179f6: Pull complete 
bc75ea45ad2e: Pull complete 
78648579d12a: Pull complete 
3393447261e4: Pull complete 
071b96dd834b: Pull complete 
4de2f0468a91: Pull complete 
Digest: sha256:4a330b2f2e74046e493b2edc30d61fdebbdddaaedcb32d62736f25be8d3c64d5
Status: Downloaded newer image for quay.io/coreos/flannel:v0.14.0
[root@master1 ~]# docker tag quay.io/coreos/flannel:v0.14.0 reg.westos.org/k8s/flannel:v0.14.0
[root@master1 ~]# docker push reg.westos.org/k8s/flannel:v0.14.0
The push refers to repository [reg.westos.org/k8s/flannel]
814fbd599e1f: Pushed 
8a984b390686: Pushed 
b613d890216c: Pushed 
eb738177d102: Pushed 
2e16188127c8: Pushed 
815dff9e0b57: Pushed 
777b2c648970: Pushed 
v0.14.0: digest: sha256:635d42b8cc6e9cb1dee3da4d5fe8bbf6a7f883c9951b660b725b0ed2c03e6bde size: 1785

并将kube-flannel.yml文件中镜像开头都替换为reg.westos.org
在这里插入图片描述
安装

[root@master1 ~]# kubectl apply -f kube-flannel.yml 
Warning: policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
podsecuritypolicy.policy/psp.flannel.unprivileged configured
clusterrole.rbac.authorization.k8s.io/flannel unchanged
clusterrolebinding.rbac.authorization.k8s.io/flannel unchanged
serviceaccount/flannel unchanged
configmap/kube-flannel-cfg unchanged
daemonset.apps/kube-flannel-ds configured

其他节点配置

vim /etc/hosts
在这里插入图片描述

由于之前配置过,导致主节点初始化后join命令不见了,可以通过这个命令找回来
[root@master1 ~]# kubeadm token create --print-join-command
kubeadm join 192.168.30.68:6443 --token bz92fi.l5iy7q0lwwdu5zds --discovery-token-ca-cert-hash sha256:520eacddeb308018afe4ed0537a2cf48b287c83ff84a76e33161dc3f01913ae5

接着在node1节点执行

[root@node1 ~]# kubeadm join 192.168.30.68:6443 --token bz92fi.l5iy7q0lwwdu5zds --discovery-token-ca-cert-hash sha256:520eacddeb308018afe4ed0537a2cf48b287c83ff84a76e33161dc3f01913ae5 
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
	[ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists
	[ERROR Port-10250]: Port 10250 is in use
	[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher

可以看见node节点是ready状态了在这里插入图片描述
到这里k8s部署算初步结束了

为了批量部署
我们在主节点上复制证书文件到相应节点
[root@master1 ~]# scp -r /data1/certs/westos.org.crt node1:/etc/docker/

node1节点上
[root@node1 certs.d]# mkdir /etc/docker/certs.d/reg.westos.org/ -p
[root@node1 certs.d]# mv /etc/docker/westos.org.crt  /etc/docker/certs.d/reg.westos.org/
现在拉取直接从仓库下载的
[root@node1 certs.d]# docker pull reg.westos.org/k8s/flannel:v0.14.0
v0.14.0: Pulling from k8s/flannel
801bfaa63ef2: Pull complete 
e4264a7179f6: Pull complete 
bc75ea45ad2e: Pull complete 
78648579d12a: Pull complete 
3393447261e4: Pull complete 
071b96dd834b: Pull complete 
4de2f0468a91: Pull complete 
Digest: sha256:635d42b8cc6e9cb1dee3da4d5fe8bbf6a7f883c9951b660b725b0ed2c03e6bde
Status: Downloaded newer image for reg.westos.org/k8s/flannel:v0.14.0
reg.westos.org/k8s/flannel:v0.14.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值