K8S搭建流程
淘宝教学视频推荐
K8s 环境搭建以及服务部署 59.00元
5.0超高评分
快~少量库存!!赶紧冲拼手速!!
h:/07¥ CA6496 vd7CWj9QZLj¥
1.环境准备
建议最小硬件配置:2核CPU、2G内存、20G硬盘 服务器最好可以访问
centos7一定要是7.9,否则你要手动升级linux内核
1.查看内核命令
`cat /etc/redhat-release
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