单master节点部署k8s集群(Centos)
一、安装前准备
1、修改主机名
按照资源准备修改即可
# master01
hostnamectl set-hostname master01 ; bash
# node1
hostnamectl set-hostname node1 ; bash
# node2
hostnamectl set-hostname node2 ; bash
2、修改hosts文件
- 以下命令所有节点都要执行
cat > /etc/hosts <<EOF
192.168.2.10 master01
192.168.2.20 node1
192.168.2.30 node2
EOF
3、系统优化
- 安装依赖文件(以下命令所有节点都要执行)
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
- 关闭防火墙,设置防火墙为iptables,并清空规则(以下命令所有节点都要执行)
systemctl stop firewalld && systemctl disable firewalldyum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
- 关闭swap分区和selinux(以下命令所有节点都要执行)
# 关闭swap分区
swapoff -a && sed -i 's/.*swap.*/#&/g' /etc/fstab
# 关闭selinux
setenforce 0 &&sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
- 调整内核参数(以下命令所有节点都要执行)
modprobe br_netfilter
modprobe overlayyum -y install ipset ipvsadmcat > /etc/sysconfig/modules/ipvs.modules <<EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
EOFkernel_version=$(uname -r | cut -d- -f1)
echo $kernel_versionif [ `expr $kernel_version \> 4.19` -eq 1 ]thenmodprobe -- nf_conntrackelsemodprobe -- nf_conntrack_ipv4
fichmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrackcat <<EOF> /etc/sysctl.d/kubernetes.conf
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
EOFsysctl -p /etc/sysctl.d/kubernetes.conf
echo 1 > /proc/sys/net/ipv4/ip_forwardcat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
二、部署Containered
- 以下命令所有节点都要执行
##部署源并安装containerd
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum list |grep containerd
yum -y install containerd.io-1.6.4-3.1.el7.x86_64
mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
##修改cgroup Driver为systemd
sed -ri 's#SystemdCgroup = false#SystemdCgroup = true#' /etc/containerd/config.toml
##应用配置
systemctl daemon-reload && systemctl enable containerd --now##设置crictl
cat << EOF >> /etc/crictl.yaml
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 10
debug: false
EOF# 启动完成后就可以使用 containerd 的本地 CLI 工具 ctr 和 crictl 了,比如查看版本:
ctr version
crictl version
三、安装kubernetes
1、配置安装源
- 以下命令所有节点都要执行
# 网络原因,这里使用阿里源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repocat <<EOF > /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.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOFyum makecache fast
2、安装
- 以下命令所有节点都要执行
yum install -y kubeadm-1.22.10 kubelet-1.22.10 kubectl-1.22.10systemctl enable --now kubelet
四、初始化master添加node
1、初始化master节点
- 以下命令只在master01执行
kubeadm init \--kubernetes-version=v1.22.10 \--apiserver-advertise-address=192.168.2.10 \--image-repository registry.aliyuncs.com/google_containers \--pod-network-cidr=10.244.0.0/16 \--token-ttl=0 \--upload-certsmkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
- 初始化完成后会输出一段日志
.....
.....
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxyYour Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configYou 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/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.2.151:6443 --token v2r5a4.veazy2xhzetpktfz \--discovery-token-ca-cert-hash sha256:daded8514c8350f7c238204979039ff9884d5b595ca950ba8bbce80724fd65d4# 最后这个kubeadm json... 是node节点加入集群的命令,需要在要加入集群的node节点上执行
2、node节点加入集群
- 以下命令只在node节点执行
kubeadm join 192.168.2.151:6443 --token v2r5a4.veazy2xhzetpktfz \--discovery-token-ca-cert-hash sha256:daded8514c8350f7c238204979039ff9884d5b595ca950ba8bbce80724fd65d4
五、安装网络插件flannel
- 以下命令只在master01节点执行
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
以上是centos7部署k8s的步骤,希望能够帮助到你!