k8s部署-centos7版本
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
设置主机名和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 ~]#
仓库更新使用阿里云或者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
安装依赖包
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
设置时间同步还有时区
yum -y install ntpdate chrony
编辑下/etc/chrony.conf 添加阿里云的同步时间服务器ntp1,aliyun.com
timedatectl set-timezone Asia/Shanghai
设置时区为中国上海
设置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
关闭系统中的一些不使用的服务
清空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
二,安装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
systemctl start docker
systemctl enable docker
docker version
配置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
三, 安装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 就行了
这里安装有一个坑,因为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
执行初始化命令过后会叫你输入一段命令并且得到一段token,node机器直接复制黏贴就行了
四, 安装网络组件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
新鲜出炉。速速围观,初衷,写这篇文章,是因为最近找工作发现都要问点k8s,的东西,闲来无事,给自己做个备忘录。
总结下:
上面有坑1,就是kubelet起不来,2,就是网络组件起不来。解决方案,有空再说。