k8s系列(一)k8s集群搭建(centos)
·
准备工作
机器配置
准备3台机器,一台master节点,2台node节点。
192.168.110.103 master
192.168.110.180 node1
192.168.110.128 node2
分别给每台机设置别名
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
将别名分别写入各个节点的hosts文件中,编译访问
cat >> /etc/hosts << EOF
192.168.110.103 k8s-master
192.168.110.180 k8s-node1
192.168.110.128 k8s-node2
EOF
配置yum源与安装软件
更新centos的yum源和安装必要软件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install lrzsz vim net-tools
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinux.
sed -i 's/enforcing/disabled/' /etc/selinux/config
安装ntpdate
yum install ntpdate -y
集群所有服务器实现时间同步
ntpdate -u ntp1.aliyun.com
关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab
配置网络
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.ipv4.tcp_tw_recycle = 0
EOF
sysctl -p
modprobe br_netfilter
lsmod | grep br_netfilter
查看并更新内核
uname -a
yum update
配置ipvs功能
安装ipset和ipvsadm
yum install ipset ipvsadmin -y
如果提示No package ipvsadmin available.需要使用
yum install ipvsadm
创建运行脚本
cat <<EOF > /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod +x /etc/sysconfig/modules/ipvs.modules
执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
重启
reboot
安装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 enable docker && systemctl start docker
配置国内源
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://docker.hpcloud.cloud","https://docker.m.daocloud.io","https://docker.unsee.tech","https://docker.1panel.live","http://mirrors.ustc.edu.cn","https://docker.chenby.cn","http://mirror.azure.cn","https://dockerpull.org","https://dockerhub.icu","https://hub.rat.dev"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
}
EOF
重启
systemctl restart docker
安装 cri-dockerd
通过 wget 命令获取 cri-dockerd软件
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.12/cri-dockerd-0.3.12-3.el7.x86_64.rpm
如果服务器无法下载离线上传
通过 rpm 命令执行安装包
rpm -ivh cri-dockerd-0.3.12-3.el7.x86_64.rpm
修改cri-docker.service 配置文件
vim /usr/lib/systemd/system/cri-docker.service
修改对应的配置项
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
重启
systemctl daemon-reload
systemctl enable cri-docker && systemctl start cri-docker
systemctl enable cri-docker.socket && systemctl start cri-docker.socket
systemctl status cri-docker.service
添加国内yum源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装 kubeadm、kubelet 和 kubectl
yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0
systemctl start kubelet
systemctl enable kubelet
Master 节点初始化 K8s
注意需要更改ip为自己服务器ip 192.168.110.103
kubeadm init \
--apiserver-advertise-address=192.168.110.103 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.28.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket=unix:///var/run/cri-dockerd.sock \
--ignore-preflight-errors=all
执行后会出现
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/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.110.103:6443 --token x9jc0s.p06jhxfu7iub6wx7 --discovery-token-ca-cert-hash sha256:c9537946eef4bc5bf9012fa3b280f92c840969429c1b19a602b98d5ed623d294 --cri-socket unix:///var/run/cri-dockerd.sock
显示成功之后需要master执行以下命令
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubernetes强化tab
echo 'source <(kubectl completion bash)' >> ~/.bashrc
节点加入master集群
kubeadm join 10.0.0.70:6443 --token x3jlhw.ymjilbj6aiqyjelh --discovery-token-ca-cert-hash sha256:e0222e1db79bd45841dbf390f9060d208b03bfa1c88c76067e2de6d5322bc845 --cri-socket=unix:///var/run/cri-dockerd.sock
安装网络插件 (master执行)
wget https://docs.projectcalico.org/manifests/calico.yaml
sed -i 's#docker.io/##g' calico.yaml
修改caloco.yaml
搜索CALICO_IPV4POOL_CIDR 将其放开
- name: CALICO_IPV4POOL_CIDR
value: "10.244.0.0/16"
运行calico
kubectl apply -f calico.yaml
kubectl apply -f calico.yaml --request-timeout=300s
删除
kubectl delete -f calico.yaml
重启
systemctl restart kubelet
验证
创建一个Deployment
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod.svc
访问


当虚拟机关闭后,重新启动
systemctl restart kubelet
所有的kubectl 都需要在master节点执行,是否可以在其他node节点运行
- 将master节点中
/etc/kubernetes/admin.conf拷贝到需要运行的服务器的/etc/kubernetes目录中
scp /etc/kubernetes/admin.conf root@k8s-node1 :/etc/kubernetes
- 在对应的服务器上配置环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
- 环境变量生效
source ~/.bash_profile
更多推荐




所有评论(0)