Kubernetes(k8s)搭建

K8S搭建流程

淘宝教学视频推荐

K8s 环境搭建以及服务部署 59.00元
5.0超高评分
快~少量库存!!赶紧冲拼手速!!
h:/07¥ CA6496 vd7CWj9QZLj¥

1.环境准备

建议最小硬件配置:2核CPU、2G内存、20G硬盘 服务器最好可以访问

centos7一定要是7.9,否则你要手动升级linux内核

1.查看内核命令
`cat /etc/redhat-release

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pjj5i7AT-1685091594408)(D:\weixinDownload\WeChat Files\wxid_yat6esimoede22\FileStorage\Temp\1684294679441.jpg)]

2.升级内核
查看可升级内核
yum info kernel -q
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
已安装的软件包
名称    :kernel
架构    :x86_64
版本    :3.10.0
发布    :1062.el7
[root@node2 ~]# yum info kernel -q
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
已安装的软件包
名称    :kernel
架构    :x86_64
版本    :3.10.0
发布    :1062.el7
大小    :64 M
源    :installed
来自源:anaconda
简介    : The Linux kernel
网址    :http://www.kernel.org/
协议    : GPLv2
描述    : The kernel package contains the Linux kernel (vmlinuz), the core of any
         : Linux operating system.  The kernel handles the basic functions
         : of the operating system: memory allocation, process allocation, device
         : input and output, etc.

可安装的软件包
名称    :kernel
架构    :x86_64
版本    :3.10.0
发布    :1127.19.1.el7
大小    :50 M
源    :updates/7/x86_64
简介    : The Linux kernel
网址    :http://www.kernel.org/
协议    : GPLv2
描述    : The kernel package contains the Linux kernel (vmlinuz), the core of any
         : Linux operating system.  The kernel handles the basic functions
         : of the operating system: memory allocation, process allocation, device
         : input and output, etc
升级内核
yum upgrade kernel

在这里插入图片描述

重启
reboot
删除旧的内核
无package-cleanup命令先进安装

在这里插入图片描述

sudo yum install yum-utils
package-cleanup --oldkernels --count=1
3.更新CentOS
# 查看centos版本
cat /etc/centos-release

# 清理缓存
yum clean all

#升级yum
yum update

#查看版本
cat /etc/centos-release

# 重启
reboot


ps:注意:
1 升级CentOS和内核之后,python,yum等都没任何变化;
python的版本不会升级到 python3
2 如果把python2升级到python3,会导致yum无法使用;因此,不要把python2删除掉;yum默认使用python2;
3 CentOS上同时安装python2和python3会导致奇怪的错误,这些错误解决起来十分棘手。

2.安装docker

1.配置docker阿里云yum源

cat >>/etc/yum.repos.d/docker.repo<<EOF
[docker-ce-edge]
name=Docker CE Edge - \$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/\$basearch/edge
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF

2.yum方式安装docker

# yum安装
yum -y install docker-ce

### 查看docker版本
docker --version  

###更换docker驱动
vim /etc/docker/daemon.json
加入
{
 "exec-opts":["native.cgroupdriver=systemd"]
}

### 设置系统自动启动docker
systemctl enable docker
### 启动docker
systemctl start docker

3.安装k8s V1.20.9

[k8s:截止2022.09.23(当前最新)的k8s软件版本支持docker容器引擎的情况:汇总信息]

Kubernetes 1.24.6±->Docker版本删除对Docker的依赖!!!随着dockershim的删除,核心Kubernetes不再需要跟踪Docker的最新验证版本。dockershim从kubelet中删除。在v1.20中被弃用后,dockershin组件已从kubelet中删除。从v1.24开始,您将需要使用其他支持的运行时之一(如containerd或CRI-O),或者如果您依赖Docker Engine作为容器运行时,则需要使用CRI-dokerd。

Kubernetes 1.23.12–>Docker版本Kubelet现在支持CRI v1 API,这是项目范围内的默认设置。如果容器运行时不支持v1 API,Kubernetes将退回到v1alpha2实现。最终用户不需要中间操作,因为v1和v1alpha2在实现上没有区别。v1alpha2很可能会在未来的一个Kubernetes版本中被删除,以便能够开发v1。

Kubernetes 1.22.15–>Docker版本删除Docker的cgroup驱动程序的自动检测和匹配。对于新的集群,如果你没有明确配置cgroup驱动程序,你可能会在驱动程序上的kubelet不匹配中失败(kubeadm集群应该使用“systemd”驱动程序)。在CRI上添加统一映射以支持cgroup v2。提到https://github.com/opencontainers/runtime-spec/blob/master/config-linux.md#unified.

Kubernetes 1.21.14–>Docker版本将Docker的最新验证版本更新至20.10。官方取消了对使用docker机器/远程docker构建kubernetes的支持。此更改不会影响在本地使用docker构建kubernetes

Kubernetes 1.20.15–>Docker版本Docker作为底层运行时正在被弃用。Docker生成的映像将一如既往地在集群中与所有运行时一起工作。
Kubernetes 1.19.16 -->Docker版本Update opencontainers/runtime-spec dependency to v1.0.2

Kubernetes 1.18.20 -->Docker版本【?】

Kubernetes 1.17.17 -->Docker版本Update the latest validated version of Docker to 19.03

Kubernetes 1.16.15 -->Docker版本1.13.1, 17.03, 17.06, 17.09, 18.06, 18.09

Kubernetes 1.15.12 -->Docker版本1.13.1, 17.03, 17.06, 17.09, 18.06, 18.09

Kubernetes 1.14.10 -->Docker版本1.13.1, 17.03, 17.06, 17.09, 18.06, 18.09

Kubernetes 1.13.12 -->Docker版本1.11.1, 1.12.1, 1.13.1, 17.03, 17.06, 17.09, 18.06

Kubernetes 1.12.10 -->Docker版本1.11.1, 1.12.1, 1.13.1, 17.03, 17.06, 17.09, 18.06

Kubernetes 1.11.10 -->Docker版本1.11.2 to 1.13.1 and 17.03.x

Kubernetes 1.10.13 -->Docker版本1.11.2 to 1.13.1 and 17.03.x

Kubernetes 1.9.1 -->Docker版本1.11.2 to 1.13.1 and 17.03.x

Kubernetes 1.8.15 -->Docker版本1.11.2, 1.12.6, 1.13.1, and 17.03.2. (Has knowned problem).

Kubernetes 1.7.16 -->Docker版本1.10.3, 1.11.2, 1.12.6. (Has knowned problem).

Kubernetes 1.6.13 -->Docker版本1.10.3, 1.11.2, 1.12.6. Drop the support for docker 1.9.x.

Kubernetes 1.5.8 -->Docker版本1.10.3 - 1.12.3.

1.修改主机名称

#1.各个机器设置自己的名称
hostnamectl set-hostname xxxx
#例如:
hostnamectl set-hostname k8s-master && bash
hostnamectl set-hostname k8s-node1 && bash
hostnamectl set-hostname k8s-node2 && bash


#2.添加域名绑定
cat >> /etc/hosts << EOF
192.168.19.131 k8s-one
192.168.19.132 k8s-two
192.168.19.133 k8s-three
EOF

2.基础环境设置

#1.关闭selinux
setenforce 0 && sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

#2.关闭swap分区
swapoff -a && sed -ri 's/.*swap.*/#&/' /etc/fstab

#3.允许 iptables 检查桥接流量
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

sysctl --system    #让配置生效

#4.设置时区为上海
timedatectl set-timezone Asia/Shanghai

#5.安装及开启时间同步
yum install chrony-3.4-1.el7.x86_64 -y &&  systemctl enable chronyd && systemctl start chronyd

#6.关闭防火墙
systemctl stop firewalld.service && systemctl disable firewalld.service

3.安装kubelet、kubeadm、kubectl

1.配置kubernetes docker yum源
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
   http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
2.安装
yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
3.设置开机自起
systemctl enable --now kubelet
#查看状态
systemctl status kubelet
4.下载要使用的镜像
tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF
   
#修改权限并执行
chmod +x ./images.sh && ./images.sh
5.初始化主节点
kubeadm init \
--apiserver-advertise-address=192.168.19.150 \
--control-plane-endpoint=k8s-one \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.10.0.0/16



kubernetes-version:指定kubernetes的版本号
pod-network-cidr:Pod可以用网络
service-cidr:Service可以用的网络
image-repository:指定国内的镜像仓库
#所有网络范围不重叠 这个特别重要,例子:即服务器内网是192.168为网段,那么pod-network-cidr即不为192.168网段
Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join k8s-one:6443 --token tfjjfx.ss96wyizxqig7ikg \
    --discovery-token-ca-cert-hash sha256:e1303d3f43016f6529015beb7a5358141853368ec6d200c53310e3acce59f6da \
    --control-plane 

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join k8s-one:6443 --token tfjjfx.ss96wyizxqig7ikg \
    --discovery-token-ca-cert-hash sha256:e1303d3f43016f6529015beb7a5358141853368ec6d200c53310e3acce59f6da 

#按提示输入

[root@k8s-one ~]# mkdir -p $HOME/.kube
[root@k8s-one ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-one ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

#查看集群状态

[root@k8s-one ~]#  kubectl get nodes      #查看集群所有节点
[root@k8s-one ~]#  kubectl get pods -A    #查看集群运行的所有pod
6.安装网络组件(k8s-master上安装即可)
[root@k8s-one ~]# curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O
[root@k8s-one ~]# kubectl apply -f calico.yaml
7、加入node节点(node节点执行)
#创建一个永不过期的token
kubeadm token create --print-join-command

#用新令牌加入node节点
kubeadm join k8s-one:6443 --token 9js4vs.08s0wy8o1b49emer     --discovery-token-ca-cert-hash sha256:e1303d3f43016f6529015beb7a5358141853368ec6d200c53310e3acce59f6da 


    
8.将主节点中的【/etc/kubernetes/admin.conf】文件拷贝到工作节点相同目录下:
#复制admin.conf,请在主节点服务器上执行此命令
scp /etc/kubernetes/admin.conf 192.168.19.151:/etc/kubernetes/admin.conf
scp /etc/kubernetes/admin.conf 192.168.19.152:/etc/kubernetes/admin.conf

然后分别在工作节点上配置环境变量:

#设置kubeconfig文件
export KUBECONFIG=/etc/kubernetes/admin.conf
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
9.验证集群
kubectl get nodes

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值