k8s部署-centos7版本

1,部署环境,vmware下的三台centos主机
emporer-k8s-master 192.168.5.128
emporer-k8s-node1 192.168.5.129
emporer-k8s-node2 192.168.5.130

一,系统初识化

三台主机都需要同样设置
设置静态ip
编辑/etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none  
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=2550ad17-d2c8-48f4-9b01-5a7f9f10ed53  
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.5.128  #对应的主机ip
PREFIX=24
GATEWAY=192.168.5.2

image
设置主机名和hosts 绑定

hostnamectl	set-hostname	k8smaster k8snode1 k8snode2
[root@k8smaster ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.5.130 k8snode2 www.k8snode2.com
192.168.5.128 k8smaster www.k8smaster.com
192.168.5.129 k8snode1 www.k8snode1.com
[root@k8smaster ~]# 

image-1665297147748
仓库更新使用阿里云或者163都行

https://developer.aliyun.com/mirror/centos/?spm=a2c6h.25603864.0.0.59013584AGgaGT
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all 
yum makecache 

image-1665297174883
安装依赖包

yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git vim wget curl

关闭selinux和swap分区可以编辑/etc/fstab 把swap注释掉

swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

image-1665297211254
设置时间同步还有时区

yum -y install ntpdate chrony 
编辑下/etc/chrony.conf 添加阿里云的同步时间服务器ntp1,aliyun.com 
timedatectl set-timezone Asia/Shanghai 
设置时区为中国上海

image-1665297268481
设置k8s集群的内核优化参数

cat > kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.overcommit_memory=1 # 不检查物理内存是否够用
vm.panic_on_oom=0 # 开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
cp kubernetes.conf	/etc/sysctl.d/kubernetes.conf
sysctl -p /etc/sysctl.d/kubernetes.conf

image-1665297403997
关闭系统中的一些不使用的服务
清空iptables关闭防火墙等```

systemctl stop firewalld && systemctl disable firewalld yum -y install iptables-services && systemctl start iptables && systemctl enable iptables &&	iptables -F  &&  service iptables save

升级内核,因为k8s有些功能需要新一点的内核例如lvs mode,而默认的7版本为3.10
导入Public Key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装elrepo源
yum install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm -y
安装新版本内核(ml主线版本,lt长期支持版本)
yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt -y
时间可能会比较长(3分钟左右)
rpm -qa | grep kernel-ml
kernel-lt-devel- 5.4.127-1.el7.elrepo.x86_64
kernel-lt- 5.4.127-1.el7.elrepo.x86_64

配置使用新版本内核启动系统:
grub2-set-default " kernel-lt-5.4.127-1"
reboot
uname -r
5.4.127-1.el7.elrepo.x86_64
image-1665297705746

二,安装docker

配置docker仓库

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce

image-1665298035974

systemctl start docker 
systemctl enable docker
docker version

image-1665298364737
配置docker images 镜像加速,因为在部署k8s是需要拉取镜像,有些是国外地址,可以使用阿里云地址加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://uxb34x6m.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

image-1665298751990

三, 安装kubeadm,kubectl,kubelet

添加kubeadm,kubelet,kubectl,仓库地址

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
setenforce 0

yum list kubelet --showduplicates | sort -r 
yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0  #安装那个版本后面就跟指定版本号 安装可能会出错,是因为仓库地址会pgp校验检查,把他关了pgpcheck=0 就可以了
systemctl enable kubelet && systemctl start kubelet

提示如下 ,把gpgcheck=0 就行了
image-1665299645403
image-1665299763980
这里安装有一个坑,因为kubelet是一个服务,我们可以先装kubelet 再装kubeadm kubectl
在master初始化 kubernetes :
指定部署kubernetes版本: 1.23.0
kubernetes的docker image仓库地址: 阿里的加速站
pod-cidr网络: 10.244.0.0/16
service-cidr网络: 10.1.0.0/16

kubeadm init --kubernetes-version=1.23.0 --apiserver-advertise-address=192.168.5.128 --image-repository=registry.aliyuncs.com/google_containers --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16

image-1665307123463

执行初始化命令过后会叫你输入一段命令并且得到一段token,node机器直接复制黏贴就行了
image-1665307242130

四, 安装网络组件calico

但是我们发现我们的就node还是未就绪状态,是因为么有不是网络组件,可以使用calico或者flannel ,calico可以自定义网络策略,这里我们使用calico网络组件,给链接自己去下
flannel:https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
calico:https://docs.projectcalico.org/v3.2/manifests/calico.yaml
需要修改下这里指的是pod使用的网络地址池

           - name: CALICO_IPV4POOL_CIDR
               value: "10.244.0.0/16"

kubectl create -f calico.yaml
然后就是等,网络组件配置完成。node节点ready.

NAMESPACE     NAME                                       READY   STATUS    RESTARTS      AGE
kube-system   calico-kube-controllers-64d69886fd-2cs2z   1/1     Running   0             2m22s
kube-system   calico-node-2b22x                          1/1     Running   0             2m22s
kube-system   calico-node-4dkrw                          1/1     Running   0             2m22s
kube-system   calico-node-pz7qm                          1/1     Running   0             2m22s
kube-system   coredns-6d8c4cb4d-9crmw                    1/1     Running   0             63m
kube-system   coredns-6d8c4cb4d-xp4q7                    1/1     Running   0             63m
kube-system   etcd-k8smaster                             1/1     Running   0             63m
kube-system   kube-apiserver-k8smaster                   1/1     Running   0             63m
kube-system   kube-controller-manager-k8smaster          1/1     Running   0             63m
kube-system   kube-proxy-2gtkd                           1/1     Running   1 (50m ago)   62m
kube-system   kube-proxy-pb97s                           1/1     Running   0             58m
kube-system   kube-proxy-vcj5b                           1/1     Running   0             63m
kube-system   kube-scheduler-k8smaster                   1/1     Running   0             63m
[root@k8smaster ~]# kubectl get nodes  
NAME        STATUS   ROLES                  AGE   VERSION
k8smaster   Ready    control-plane,master   63m   v1.23.0
k8snode1    Ready    <none>                 58m   v1.23.0
k8snode2    Ready    <none>                 62m   v1.23.0

image-1665310268450
新鲜出炉。速速围观,初衷,写这篇文章,是因为最近找工作发现都要问点k8s,的东西,闲来无事,给自己做个备忘录。
总结下:
上面有坑1,就是kubelet起不来,2,就是网络组件起不来。解决方案,有空再说。

文章作者: emporer
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Emporer-Linux
kubernetes
喜欢就支持一下吧