k8s環(huán)境規(guī)劃:
podSubnet(pod網(wǎng)段) 10.244.0.0/16
serviceSubnet(service網(wǎng)段): 10.96.0.0/12
實驗環(huán)境規(guī)劃:
操作系統(tǒng):centos7.5
配置: 2Gib內(nèi)存/4vCPU/50G硬盤
初始化安裝k8s集群的實驗環(huán)境
先建生產(chǎn)環(huán)境服務(wù)器,后面可以通過生成鏡像克隆node環(huán)境
修改主機名
hostnamectl set-hostname k8smaster1 && bash #k8smaster1 為服務(wù)器名稱
配置yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
yum makecache
關(guān)閉防火墻
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
firewall-cmd --state #查看防火墻狀態(tài)
yum install -y iptables-services #安裝iptables
service iptables stop && systemctl disable iptables #停用iptables并關(guān)閉開機啟動iptables
service iptables status
iptables -F #清空防火墻規(guī)則
關(guān)閉selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
getenforce #查看是否為Disabled
swapoff -a #關(guān)閉交換分區(qū)swap,提升性能
配置時間同步
yum install -y ntpdate ntp
ntpdate cn.pool.ntp.org
#每小時進行時間同步
echo "* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org" >>/var/spool/cron/root
systemctl restart crond #重啟計劃任務(wù)
配置主機 hosts 文件,相互之間通過主機名互相訪問 192.168.40.180為你的內(nèi)網(wǎng)IP
rm -rf /etc/hosts
cat > /etc/hosts <<EOF
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.40.180 k8smaster1
192.168.40.181 k8snode1
EOF
修改機器內(nèi)核參數(shù)
modprobe br_netfilter
echo "modprobe br_netfilter" >> /etc/profile
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
EOF
sysctl -p /etc/sysctl.d/k8s.conf
重啟后模塊會失效,配置開機自動加載模塊的腳本
cat> /etc/rc.sysinit <<EOF
#!/bin/bash
for file in /etc/sysconfig/modules/*.modules ; do
[ -x $file ] && $file
done
EOF
在/etc/sysconfig/modules/目錄下 新建文件如下
cat> /etc/sysconfig/modules/br_netfilter.modules <<EOF
modprobe br_netfilter
EOF
#增加權(quán)限
chmod 755 /etc/sysconfig/modules/br_netfilter.modules
lsmod |grep br_netfilter #重啟機器模塊也會自動加載
配置安裝k8s組件需要的阿里云的repo源
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
EOF
安裝基礎(chǔ)軟件包
yum install -y device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack telnet ipvsadm
備注:docker也要安裝,docker跟containerd不沖突,安裝docker是為了能基于dockerfile構(gòu)建鏡像
yum install yum-utils -y
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl enable docker --now
配置docker鏡像加速器和驅(qū)動
cat> /etc/docker/daemon.json <<EOF
{
"registry-mirrors":["https://vh3bm52y.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"]
}
EOF
systemctl restart docker #重啟docker
安裝containerd服務(wù)
yum install containerd.io-1.6.6 -y
mkdir -p /etc/containerd #生成 containerd 的配置文件
containerd config default > /etc/containerd/config.toml
vim /etc/containerd/config.toml
#把SystemdCgroup = false修改成SystemdCgroup = true
#把sandbox_image = "k8s.gcr.io/pause:3.6"修改成sandbox_image="registry.aliyuncs.com/google_containers/pause:3.7"
systemctl enable containerd --now #配置 containerd 開機啟動,并啟動 containerd
修改/etc/crictl.yaml文件
cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
配置containerd鏡像加速器,k8s所有節(jié)點均按照以下配置:
vim /etc/containerd/config.toml
#找到config_path = "",修改成如下目錄:
config_path = "/etc/containerd/certs.d"
mkdir /etc/containerd/certs.d/docker.io/ -p
cat>/etc/containerd/certs.d/docker.io/hosts.toml<<EOF
[host."https://vh3bm52y.mirror.aliyuncs.com",host."https://registry.docker-cn.com"]
capabilities = ["pull"]
EOF
systemctl restart containerd #重啟containerd
安裝初始化k8s需要的軟件包
安裝1.25
yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0
systemctl enable kubelet
設(shè)置容器運行時
crictl config runtime-endpoint /run/containerd/containerd.sock
k8smaster1和k8snode1都需要上傳k8s_1.25.0.tar.gz 鏡像包
k8s_1.25.0.tar.gz鏈接:https://pan.baidu.com/s/1ytLFwRB3oHxTGu1DPG9YIg?pwd=r5p1
提取碼:r5p1
ctr -n=k8s.io images import k8s_1.25.0.tar.gz
crictl images #查看鏡像
上傳calico.tar.gz到k8smaster1上
上傳calico.tar.gz到k8smaster1上,使用yaml文件安裝calico 網(wǎng)絡(luò)插件 。
鏈接:https://pan.baidu.com/s/17MW_un5N1-3w-yJOSNUYhw?pwd=seoz
提取碼:seoz
ctr -n=k8s.io images import calico.tar.gz
關(guān)閉服務(wù)器生成鏡像,克隆出node節(jié)點
使用kubeadm初始化k8s集群
在master執(zhí)行,確認服務(wù)啟動正常
systemctl restart docker
systemctl restart containerd
kubeadm config print init-defaults > kubeadm.yaml
使用kubeadm初始化k8s集群
根據(jù)我們自己的需求修改配置,比如修改 imageRepository 的值,kube-proxy 的模式為 ipvs,初始化節(jié)點的時候需要指定cgroupDriver為systemd
cat> kubeadm.yaml <<EOF
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.40.180 #控制節(jié)點的 ip
bindPort: 6443
nodeRegistration:
criSocket: unix:///run/containerd/containerd.sock
imagePullPolicy: IfNotPresent
name: k8smaster1 #控制節(jié)點主機名
taints: null
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers #指定阿里云鏡像倉庫地址
kind: ClusterConfiguration
kubernetesVersion: 1.25.0 #k8s 版本
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16 #指定 pod 網(wǎng)段, 需要新增加這個
serviceSubnet: 10.96.0.0/12 #指定 Service 網(wǎng)段
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
EOF
基于kubeadm.yaml初始化k8s集群
kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification
出現(xiàn)如下截圖就成功了
如果遺忘了節(jié)點的token可以在master節(jié)點執(zhí)行下列命令獲取token
kubeadm token create --print-join-command
配置kubectl的配置文件config,相當于對kubectl進行授權(quán),這樣kubectl命令可以使用這個證書對k8s集群進行管理
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
如果初始化有問題,k8smaster和node都可適用下列命令重新初始化
kubeadm reset
rm -rf /root/.kube
rm -rf /etc/cni/net.d
修改完一些配置比如kubeadm-config.yaml 后,重新初始化
kubeadm init --config kubeadm.yaml --ignore-preflight-errors=SystemVerification
添加第一個工作節(jié)點
在k8snode1服務(wù)器上修改主機名
hostnamectl set-hostname k8snode1 && bash #k8snode1 為服務(wù)器名稱
在k8snode1節(jié)點執(zhí)行上面獲取到的值,并添加參數(shù)–ignore-preflight-errors=SystemVerification
kubeadm join 172.27.0.10:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:5d85ecacdc1520befa8fc33dfac4f16d03893888ba65949a02c293b26336efc4 –ignore-preflight-errors=SystemVerification
出現(xiàn)下列截圖證明成功加入了
安裝kubernetes網(wǎng)絡(luò)組件-Calico
鏡像已經(jīng)在 “上傳calico.tar.gz到k8smaster1上” 這一步上傳了
仍需上傳calico.yaml到k8smaster1上,使用yaml文件安裝calico 網(wǎng)絡(luò)插件 。
鏈接:https://pan.baidu.com/s/1MzhaKeNdaHB7gwvhPTCMOg?pwd=91vs
提取碼:91vs
kubectl apply -f calico.yaml
#注:在線下載配置文件地址是:https://docs.projectcalico.org/manifests/calico.yaml
等兩分鐘查看集群狀態(tài)
kubectl get pod -n kube-system
kubectl get nodes
#STATUS狀態(tài)是Ready,說明k8s集群正常運行了
可以把k8snode1的ROLES變成work
可以看到k8snode1的ROLES角色為空,就表示這個節(jié)點是工作節(jié)點。
按照如下方法:
kubectl label node k8snode1 node-role.kubernetes.io/worker=worker
測試在k8s創(chuàng)建pod是否可以正常訪問網(wǎng)絡(luò)
把busybox-1-28.tar.gz上傳到k8snode1、k8snode2節(jié)點,手動解壓
鏈接:https://pan.baidu.com/s/1HdG5Zv3LThn4H5n6-bOxDQ?pwd=kyue
提取碼:kyue
busybox要用指定的1.28版本,不能用最新版本,最新版本,nslookup會解析不到dns和ip
k8smaster1和k8snode1節(jié)點都需要執(zhí)行文章來源:http://www.zghlxwxcb.cn/news/detail-614955.html
ctr -n k8s.io images import busybox-1-28.tar.gz
在k8smaster1 執(zhí)行文章來源地址http://www.zghlxwxcb.cn/news/detail-614955.html
kubectl run busybox --image docker.io/library/busybox:1.28 --image-pull-policy=IfNotPresent --restart=Never --rm -it busybox -- sh
ping www.baidu.com
到了這里,關(guān)于學(xué)習(xí)筆記十三:云服務(wù)器通過Kubeadm安裝k8s1.25,供后續(xù)試驗用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!