此處只做學(xué)習(xí)使用,配置單master環(huán)境。
一、環(huán)境準(zhǔn)備
1、ip+主機(jī)規(guī)劃(準(zhǔn)備五臺(tái)新機(jī))==>修改各個(gè)節(jié)點(diǎn)的主機(jī)名
注意:關(guān)閉防火墻與selinux
節(jié)點(diǎn) | 主機(jī)名 | ip | 身份 |
joshua1 | kubernetes-master.openlab.cn |
192.168.134.151 | master |
joshua2 | kubernetes-work1.openlab.cn | 192.168.134.152 | work1 |
joshua3 | kubernetes-work2.openlab.cn | 192.168.134.153 | work2 |
joshua4 | kubernetes-work3.openlab.cn | 192.168.134.154 | work3 |
joshua5 | kubernetes-register.openlab.cn | 192.168.134.155 | register |
2、設(shè)置hosts解析
tail -n 5 /etc/hosts
192.168.134.151 kubernetes-master.openlab.cn kubernetes-master
192.168.134.152 kubernetes-work1.openlab.cn kubernetes-work1
192.168.134.153 kubernetes-work2.openlab.cn kubernetes-work2
192.168.134.154 kubernetes-work3.openlab.cn kubernetes-work3
192.168.134.155 kubernetes-register.openlab.cn kubernetes-register
3、時(shí)間同步
yum install chrony -y
vim /etc/chrony.conf
修改處如下:
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntp1.aliyun.com iburst
啟動(dòng)
systemctl enable --now chronyd
chronyc sources
4、禁用swap分區(qū)
sed -i 's/.*swap.*/#&/' /etc/fstab
臨時(shí)關(guān)閉
swapoff -a # 非常重要,如果沒(méi)有設(shè)置,則報(bào)錯(cuò)
5、修改其內(nèi)核參數(shù)
cat >> /etc/sysctl.d/k8s.conf << EOF
vm.swappiness=0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
執(zhí)行以下幾個(gè)命令
modprobe br_netfilter
modprobe overlay
sysctl -p /etc/sysctl.d/k8s.conf
6、配置ipvs功能
安裝ipset和ipvsadm:yum install ipset ipvsadm -y
添加需要加載的模塊寫(xiě)入腳本文件
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
EOF
為腳本文件添加執(zhí)行權(quán)限
chmod +x /etc/sysconfig/modules/ipvs.modules
執(zhí)行腳本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules
查看對(duì)應(yīng)的模塊是否加載成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
二、容器環(huán)境準(zhǔn)備
1、定制軟件源并且安裝最新版docker
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y
2、配置docker加速器并且啟動(dòng)
cat >> /etc/docker/daemon.json <<-EOF
{
"registry-mirrors": [
"http://74f21445.m.daocloud.io",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
],
"insecure-registries": ["kubernetes-register.openlab.cn"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl daemon-reload
systemctl enable --now docker
三、cri環(huán)境準(zhǔn)備
解壓包并且放到指定位置
tar xf cri-dockerd-0.3.4.amd64.tgz -C /usr/local/
mv /usr/local/cri-dockerd/cri-dockerd /usr/local/bin/
檢查軟件版本
cri-dockerd --version
cri-dockerd 0.3.4 (e88b1605)
配置文件的修改
cat > /etc/systemd/system/cri-dockerd.service<<-EOF
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/local/bin/cri-dockerd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9 --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --container-runtime endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --docker-endpoint=unix:///var/run/docker.sock --
cri-dockerd-root-directory=/var/lib/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/systemd/system/cri-dockerd.socket <<-EOF
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=/var/run/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF
啟動(dòng)服務(wù)
systemctl daemon-reload
systemctl enable --now cri-dockerd.service
四、harbor倉(cāng)庫(kù)配置(只在倉(cāng)庫(kù)那臺(tái)機(jī)子上操作)
1、安裝docker-compose
install -m 755 docker-compose-linux-x86_64 /usr/local/bin/docker-compose
查看版本
docker-compose version
Docker Compose version v2.20.3
2、安裝harbor軟件
mkdir -p /data/server/
tar xf harbor-offline-installer-v2.8.4.tgz -C /data/server/
cd /data/server/harbor/
docker load -i harbor.v2.8.4.tar.gz # 導(dǎo)入鏡像
cp harbor.yml.tmpl harbor.yml
修改配置文件(以下只列出修改過(guò)的地方)
hostname: kubernetes-register.openlab.cn
# https related config
#https:
# https port for harbor, default is 443
# port: 443
# The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
data_volume: /data/server/harbor/data
./install.sh # 啟動(dòng)
定制一個(gè)服務(wù)啟動(dòng)文件
vim /etc/systemd/system/harbor.service
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
#需要注意harbor的安裝位置
ExecStart=/usr/local/bin/docker-compose --file /data/server/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose --file /data/server/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target
啟動(dòng)腳本
systemctl daemon-reload
systemctl enable --now harbor.service
測(cè)試:在除倉(cāng)庫(kù)外集群的任意一個(gè)節(jié)點(diǎn)測(cè)試
docker pull busybox
docker login kubernetes-register.openlab.cn -u admin -p Harbor12345
docker tag busybox:latest kubernetes-register.openlab.cn/library/busybox:latest
docker push kubernetes-register.openlab.cn/library/busybox:latest
五、k8s的集群初始化
1、定制軟件源
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
2、安裝軟件,然后設(shè)置自啟動(dòng)
yum install kubeadm kubectl kubelet -y
systemctl enable --now kubelet
3、記得在倉(cāng)庫(kù)中創(chuàng)建項(xiàng)目,google_containers ,然后編寫(xiě)腳本(此處我們使用的kubernetes版本為1.28.1),最后要執(zhí)行腳本
cat images.sh
#!/bin/bash
images=$(kubeadm config images list --kubernetes-version=1.28.1 | awk -F'/' '{print $NF}')
for i in ${images}
do
docker pull registry.aliyuncs.com/google_containers/$i
docker tag registry.aliyuncs.com/google_containers/$i kubernetes-register.openlab.cn/google_containers/$i
docker push kubernetes-register.openlab.cn/google_containers/$i
docker rmi registry.aliyuncs.com/google_containers/$i
done
sh images.sh # 執(zhí)行腳本
4、初始化master節(jié)點(diǎn)
kubeadm init --kubernetes-version=1.28.1 \ # 自己使用的版本
--apiserver-advertise-address=192.168.134.151 \ # 自己的master節(jié)點(diǎn)ip
--image-repository kubernetes-register.openlab.cn/google_containers \ # 自己的主機(jī)名加項(xiàng)目名
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=Swap \
--cri-socket=unix:///var/run/cri-dockerd.sock # 非常重要,不可刪除
5、初始化成功后悔提示下一步安裝步驟(根據(jù)自己初始化后提示的命令來(lái)安裝)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
6、加入work節(jié)點(diǎn)(先在master節(jié)點(diǎn)上執(zhí)行) ==> 接著在多個(gè)work節(jié)點(diǎn)執(zhí)行
kubeadm join 192.168.134.151:6443 --token hgxtuj.gehto17fynyiglxy --cri-socket=unix:///var/run/cri-dockerd.sock --discovery-token-ca-cert-hash sha256:00e2bac5c90162ac991e9eff77fdceaa331cb0c1b9cd170186be3587dd5e964d # 一切按照自己的ip和初始化之后給定的值來(lái)加入
7、在master的環(huán)境文件中加入以下內(nèi)容
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo "source <(kubeadm completion bash)" >> ~/.bashrc
source ~/.bashrc
8、配置網(wǎng)絡(luò)環(huán)境
下載kube-flannel.yml
# cat flannel.sh # 寫(xiě)腳本
#!/bin/bash
for i in $(grep image kube-flannel.yml | grep -v '#' | awk -F '/' '{print $NF}')
do
docker pull flannel/$i
docker tag flannel/$i kubernetes-register.openlab.cn/google_containers/$i
docker push kubernetes-register.openlab.cn/google_containers/$i
docker rmi flannel/$i
done
sh flannel.sh # 腳本啟動(dòng)
sed -i '/ image:/s#docker.io/flannel#kubernetes-register.openlab.cn/google_containers#' kube-flannel.yml # 修改內(nèi)容
應(yīng)用配置文件
kubectl apply -f kube-flannel.yml # 應(yīng)用配置文件
9、如果上面的步驟都沒(méi)有出問(wèn)題,那么整體部署基本成功
六、驗(yàn)證(執(zhí)行以下命令,所有狀態(tài)都為running才是真正的部署成功)
?kubectl get pod -n kube-system
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-684714.html
七、還可以將這個(gè)工作環(huán)境在工作節(jié)點(diǎn)上運(yùn)行
scp -r $HOME/.kube kubernetes-work1.openlab.cn:$HOME/
然后使用kubectl get pod -n kube-system查看是否狀態(tài)全部running,如果全部running即可以運(yùn)行。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-684714.html
到了這里,關(guān)于Kubernetes(K8s)基本環(huán)境部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!