目錄
一、基礎(chǔ)環(huán)境配置(所有主機(jī)均要配置)
1、配置IP地址和主機(jī)名、hosts解析
2、關(guān)閉防火墻、禁用SELinux
3、安裝常用軟件
4、配置時間同步
5、禁用Swap分區(qū)
6、修改linux的內(nèi)核參數(shù)
7、配置ipvs功能
二、容器環(huán)境操作
1、定制軟件源
2、安裝最新版docker
3、配置docker加速器
4、啟動docker
三、cri環(huán)境操作
1、cri-dockerd-0.3.4.amd64.tgz 下載
2、解壓到指定目錄并查看
?3、定制配置文件
4、啟動服務(wù)
四、harbor倉庫操作
1、docker-compose-linux-x86_64下載
2、給權(quán)限并解壓到創(chuàng)建的目錄中
3、加載鏡像
4、修改配置文件
5、定制服務(wù)啟動文件
6、測試
?五、k8s集群初始化
1、定制軟件源--所有節(jié)點
2、環(huán)境部署--所有節(jié)點
3、檢查鏡像文件列表--只在一個節(jié)點操作
4、在harbor倉庫中創(chuàng)建項目
?5、在master節(jié)點上獲取鏡像文件
6、master節(jié)點初始化
7、node節(jié)點加入
六、k8s環(huán)境收尾操作--master節(jié)點操作
1、權(quán)限操作
2、命令補(bǔ)全
3、下載kube-flannel.yml
4、編輯腳本并執(zhí)行
?5、修改配置文件
6、應(yīng)用配置文件
?7、檢查效果
?8、查看集群狀態(tài)
七、擴(kuò)展:kubectl可以在node節(jié)點上運行嗎?
一、基礎(chǔ)環(huán)境配置(所有主機(jī)均要配置)
主機(jī)名規(guī)劃:
序號 | 主機(jī)ip | 主機(jī)名規(guī)劃 | 用途 |
1 | 192.168.226.150 | kubernetes-master.openlab.cn | kubernetes-master |
2 | 192.168.226.151 | kubernetes-node1.openlab.cn | kubernetes-node1 |
3 | 192.168.226.152 | kubernetes-node2.openlab.cn | kubernetes-node2 |
4 | 192.168.226.153 | kubernetes-node3.openlab.cn | kubernetes-node3 |
5 | 192.168.226.155 | kubernetes-register.openlab.cn | kubernetes-register |
環(huán)境準(zhǔn)備:Centos7.9 ? ?2顆CPU ?4G內(nèi)存 ? 50G硬盤
1、配置IP地址和主機(jī)名、hosts解析
主機(jī)名修改:
hostnamectl set-hostname kubernetes-master.openlab.cn
hosts解析
[root@localhost ~]# vi /etc/hosts
192.168.226.150 kubernetes-master.openlab.cn kubernetes-master
192.168.226.151 kubernetes-node1.openlab.cn kubernetes-node1
192.168.226.152 kubernetes-node2.openlab.cn kubernetes-node2
192.168.226.153 kubernetes-node3.openlab.cn kubernetes-node3
192.168.226.155 kubernetes-register.openlab.cn kubernetes-register
2、關(guān)閉防火墻、禁用SELinux
[root@kubernetes-master ~]# systemctl stop firewalld
[root@kubernetes-master ~]# systemctl disable firewalld
[root@kubernetes-master ~]# sed -i '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config
[root@kubernetes-master ~]# setenforce 0
3、安裝常用軟件
[root@kubernetes-master ~]# yum install -y wget tree bash-completion lrzsz psmisc net-tools vim
4、配置時間同步
[root@kubernetes-master ~]# yum install chrony -y
[root@kubernetes-master ~]# vim /etc/chrony.conf
...
注釋第三行到第六行
:3,6 s/^/#
使用阿里云的時間服務(wù)器
server ntp1.aliyun.com iburst
啟動服務(wù)
[root@kubernetes-master ~]# systemctl enable --now chronyd
測試
[root@kubernetes-master ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
=====================================================================
^* 120.25.115.20 2 6 17 4 +145us[ +123us]
5、禁用Swap分區(qū)
臨時禁用
[root@localhost ~]# swapoff -a
永久禁用
[root@localhost ~]# sed -i 's/.*swap.*/#&/' /etc/fstab
檢測:
[root@kubernetes-node1 ~]# free -m
total used free shared buff/cache available
Mem: 1819 385 229 9 1204 1259
Swap: 0 0 0
6、修改linux的內(nèi)核參數(shù)
cat >> /etc/sysctl.d/k8s.conf << EOF
#內(nèi)核參數(shù)調(diào)整
vm.swappiness=0
#配置iptables參數(shù),使得流經(jīng)網(wǎng)橋的流量也經(jīng)過iptables/netfilter防火墻
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
#配置生效
#加載網(wǎng)橋過濾模塊
# modprobe br_netfilter
# modprobe overlay
#重新加載
[root@kubernetes-master ~]# sysctl -p /etc/sysctl.d/k8s.conf
vm.swappiness = 0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
7、配置ipvs功能
# 1 安裝ipset和ipvsadm
[root@kubernetes-master ~]# yum install ipset ipvsadm -y
# 2 添加需要加載的模塊寫入腳本文件
[root@kubernetes-master ~]# 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
# 3 為腳本文件添加執(zhí)行權(quán)限
[root@kubernetes-master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules
# 4 執(zhí)行腳本文件
[root@kubernetes-master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules
# 5 查看對應(yīng)的模塊是否加載成功
[root@kubernetes-master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4
ip_vs_sh 12688 0
ip_vs_wrr 12697 0
ip_vs_rr 12600 0
ip_vs 145458 6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack 139264 1 ip_vs
libcrc32c 12644 3 xfs,ip_vs,nf_conntrack
二、容器環(huán)境操作
1、定制軟件源
[root@kubernetes-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@kubernetes-master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2、安裝最新版docker
yum install -y docker-ce
3、配置docker加速器
[root@kubernetes-master ~]# 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
4、啟動docker
[root@kubernetes-master ~]# systemctl daemon-reload
[root@kubernetes-master ~]# systemctl enable --now docker
三、cri環(huán)境操作
1、cri-dockerd-0.3.4.amd64.tgz 下載
地址:Releases · Mirantis/cri-dockerd (github.com)
2、解壓到指定目錄并查看
[root@kubernetes-master ~]# tar xf cri-dockerd-0.3.4.amd64.tgz -C /usr/local/
[root@kubernetes-master ~]# mv /usr/local/cri-dockerd/cri-dockerd /usr/local/bin/
[root@kubernetes-master ~]# cri-dockerd --version
cri-dockerd 0.3.4 (e88b1605)
?3、定制配置文件
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
4、啟動服務(wù)
啟動服務(wù)
設(shè)置服務(wù)開機(jī)自啟動
[root@kubernetes-master ~]# systemctl daemon-reload
[root@kubernetes-master ~]# systemctl enable --now cri-dockerd.service
四、harbor倉庫操作
只在倉庫機(jī)器上執(zhí)行
1、docker-compose-linux-x86_64下載
下載地址:Releases · docker/compose · GitHub
2、給權(quán)限并解壓到創(chuàng)建的目錄中
給權(quán)限
install -m 755 docker-compose-linux-x86_64 /usr/local/bin/docker-compose
創(chuàng)建目錄
mkdir -p /data/server
解壓
tar xf harbor-offline-installer-v2.8.4.tgz -C /data/server/
進(jìn)入目錄
cd /data/server/harbor/
3、加載鏡像
docker load -i harbor.v2.8.4.tar.gz
4、修改配置文件
復(fù)制文件
cp harbor.yml.tmpl harbor.yml
修改文件
vim harbor.yml
修改如下:
hostname: kubernetes-register.openlab.cn
#https:
# port: 443
# certificate: /your/certificate/path
# private_key: /your/private/key/path
harbor_admin_password: 123456
data_volume: /data/server/harbor/data
運行
./prepare
./install.sh
5、定制服務(wù)啟動文件
/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
重啟
# systemctl daemon-reload
# systemctl enable harbor.service
# systemctl restart harbor
6、測試
只在k8s集群某一個節(jié)點
在master
下載鏡像
# docker pull busybox
登錄倉庫
# docker login kubernetes-register.openlab.cn -u admin -p 123456
定制鏡像標(biāo)簽
# docker tag busybox:latest kubernetes-register.openlab.cn/library/busybox:latest
推送鏡像
# docker push kubernetes-register.openlab.cn/library/busybox:latest
?五、k8s集群初始化
1、定制軟件源--所有節(jié)點
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、環(huán)境部署--所有節(jié)點
# yum install kubeadm kubectl kubelet -y
3、檢查鏡像文件列表--只在一個節(jié)點操作
kubeadm config images list
4、在harbor倉庫中創(chuàng)建項目
網(wǎng)頁:http://192.168.226.155
賬號:admin 密碼:123456
?5、在master節(jié)點上獲取鏡像文件
# cat images.sh
#!/bin/bash
images=$(kubeadm config images list --kubernetes-version=1.28.0 | 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
執(zhí)行腳本文件
sh images.sh
6、master節(jié)點初始化
kubeadm init --kubernetes-version=1.28.0 \
####注意修改下面一行的地址為自己的master地址
--apiserver-advertise-address=192.168.226.150 \
--image-repository kubernetes-register.openlab.cn/google_containers \
--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
7、node節(jié)點加入
kubeadm join 192.168.226.150:6443 --token jie7an.cr33vmg6iwxu4jod \
--cri-socket=unix:///var/run/cri-dockerd.sock \
--discovery-token-ca-cert-hash sha256:7258022a0aeead42dd63fbcca3e1418df26b2f59f89ffce238066ee22032b435
注意不要直接復(fù)制,修改為自己的
六、k8s環(huán)境收尾操作--master節(jié)點操作
1、權(quán)限操作
定制k8s的登陸權(quán)限
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
2、命令補(bǔ)全
放到master主機(jī)的環(huán)境文件中
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo "source <(kubeadm completion bash)" >> ~/.bashrc
source ~/.bashrc
3、下載kube-flannel.yml
如果找不到下載,可以QQ聯(lián)系我:1445144210
4、編輯腳本并執(zhí)行
# cat flannel.sh
#!/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
執(zhí)行腳本文件:sh flannel.sh
?5、修改配置文件
sed -i '/ image:/s#docker.io/flannel#kubernetes-register.openlab.cn/google_containers#' kube-flannel.yml
6、應(yīng)用配置文件
# kubectl apply -f kube-flannel.yml
?7、檢查效果
[root@kubernetes-master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
kubernetes-master.openlab.cn Ready control-plane 18m v1.28.0
kubernetes-node1.openlab.cn Ready <none> 16m v1.28.0
kubernetes-node2.openlab.cn Ready <none> 16m v1.28.0
kubernetes-node3.openlab.cn Ready <none> 16m v1.28.0
[root@kubernetes-master ~]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-76f899b8cf-f5d5g 1/1 Running 0 18m
coredns-76f899b8cf-qd5zl 1/1 Running 0 18m
etcd-kubernetes-master.openlab.cn 1/1 Running 0 18m
kube-apiserver-kubernetes-master.openlab.cn 1/1 Running 0 18m
kube-controller-manager-kubernetes-master.openlab.cn 1/1 Running 0 18m
kube-proxy-c5lbh 1/1 Running 0 18m
kube-proxy-h5s6t 1/1 Running 0 16m
kube-proxy-lkpxq 1/1 Running 0 16m
kube-proxy-zqbrh 1/1 Running 0 16m
kube-scheduler-kubernetes-master.openlab.cn 1/1 Running 0 18m
#使用第二條命令全是Running就表示完成了
?8、查看集群狀態(tài)
[root@kubernetes-master ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
etcd-0 Healthy ok
scheduler Healthy ok
七、擴(kuò)展:kubectl可以在node節(jié)點上運行嗎?
kubectl的運行是需要進(jìn)行配置的,它的配置文件是$HOME/.kube,如果想要在node節(jié)點運行此命令,需要將master上的.kube文件復(fù)制到node節(jié)點上,即在master節(jié)點上執(zhí)行下面操作:
scp -r $HOME/.kube kubernetes-node1.openlab.cn:$HOME/
?scp -r $HOME/.kube kubernetes-node2.openlab.cn:$HOME/
?scp -r $HOME/.kube kubernetes-node3.openlab.cn:$HOME/
?測試:在node節(jié)點文章來源:http://www.zghlxwxcb.cn/news/detail-699188.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-699188.html
到了這里,關(guān)于Kubernetes(K8s 1.28.x)部署---創(chuàng)建方式Docker(超詳細(xì))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!