手動(dòng)搭建 K8S 環(huán)境搭建
首先前期我們準(zhǔn)備好三臺(tái) Centos7 機(jī)器,配置如下:
主機(jī)名 | IP | 系統(tǒng)版本 |
---|---|---|
k8s-master | 192.168.41.141 | Centos7 |
k8s-node1 | 192.168.41.142 | Centos7 |
k8s-node2 | 192.168.41.143 | Centos7 |
前期準(zhǔn)備
首先在三臺(tái)機(jī)器上都執(zhí)行如下的命令
# 關(guān)閉防火墻
systemctl stop firewalld
systemctl disable firewalld
# 永久關(guān)閉 selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 永久關(guān)閉 swap
sed -ri 's/.*swap.*/#&/' /etc/fstab
# 修改/etc/hosts
vim /etc/hosts
192.168.41.141 k8s-master
192.168.41.142 k8s-node1
192.168.41.143 k8s-node2
# 將橋接的IPv4流量傳遞到iptables的鏈
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 生效
sysctl --system
# 時(shí)間同步
yum install ntpdate -y
ntpdate time.windows.com
然后在三臺(tái)機(jī)器上都配置阿里云的 K8s 源,執(zhí)行如下的命令
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
然后在三臺(tái)機(jī)器上均安裝 docker、kubeadm、kubelet、kubectl
安裝 docker,在三臺(tái)機(jī)器上均執(zhí)行如下的命令一鍵安裝
curl -s https://get.docker.com/ | sh
如下所示安裝完成:
配置docker鏡像下載加速器,執(zhí)行如下的命令:
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
#查看docker信息,進(jìn)行確認(rèn)
systemctl restart docker
docker info
出現(xiàn)如下信息則顯示配置完成
接著執(zhí)行如下命令安裝 kubelet、kubeadm 和 kubectl
#安裝 kubelet、kubeadm 和 kubectl
yum install -y kubelet-1.21.0 kubeadm-1.21.0 kubectl-1.21.0
#設(shè)置 kubelet 開(kāi)機(jī)自啟
systemctl enable kubelet
部署 K8S-master
在 master 節(jié)點(diǎn)執(zhí)行如下命令初始化 master
kubeadm init --apiserver-advertise-address=192.168.41.141 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.21.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all
--apiserver-advertise-address 集群通告地址
--image-repository 由于默認(rèn)拉取鏡像地址k8s.gcr.io國(guó)內(nèi)無(wú)法訪問(wèn),這里指定阿里云鏡像倉(cāng)庫(kù)地址
--kubernetes-version K8s版本,與上面安裝的一致
--service-cidr 集群內(nèi)部虛擬網(wǎng)絡(luò),Pod統(tǒng)一訪問(wèn)入口
--pod-network-cidr Pod網(wǎng)絡(luò),與下面部署的CNI網(wǎng)絡(luò)組件yaml中保持一致
或者使用配置文件引導(dǎo):
vi kubeadm.conf
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.21.0
imageRepository: registry.aliyuncs.com/google_containers
networking:
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
然后執(zhí)行以下的命令初始化
kubeadm init --config kubeadm.conf --ignore-preflight-errors=all
初始化完成后,最后會(huì)輸出一個(gè) join命令,先記住,下面用
然后拷貝kubectl使用的連接k8s認(rèn)證文件到默認(rèn)路徑:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
部署 K8S-node
在兩個(gè) node 節(jié)點(diǎn)(192.168.41.142/143)執(zhí)行如下命令即可加入 K8S 集群
kubeadm join 192.168.41.141:6443 --token sec4pk.nnihf0tismgn6kax --discovery-token-ca-cert-hash sha256:a8a0adf8b5fd9adb6ac8a2977456bd1671055146ed5711eaab5280d6541986fd
默認(rèn)token有效期為24小時(shí),當(dāng)過(guò)期之后,該token就不可用了。這時(shí)就需要重新創(chuàng)建token,可以直接使用命令快捷生成:
kubeadm token create --print-join-command
部署容器網(wǎng)絡(luò)(CNI)
部署網(wǎng)絡(luò) Calico 是一個(gè)純?nèi)龑拥臄?shù)據(jù)中心網(wǎng)絡(luò)方案,是目前 Kubernetes 主流的網(wǎng)絡(luò)方案,執(zhí)行以下的命令下載YAML:
wget https://docs.projectcalico.org/v3.19/manifests/calico.yaml --no-check-certificate
下載完后還需要修改里面定義 Pod 網(wǎng)絡(luò)(CALICO_IPV4POOL_CIDR),與之前
kubeadm init 的 --pod-network-cidr 指定的一樣
vim calico.yaml
默認(rèn) calico.yaml 中所使用的鏡像都來(lái)源于 docker.io 國(guó)外鏡像源,這里我們可以刪除 docker.io 前綴以使鏡像從國(guó)內(nèi)鏡像加速站點(diǎn)下載
cat calico.yaml |grep 'image:'
sed -i 's#docker.io/##g' calico.yaml
修改完后文件后,部署:
#部署
kubectl apply -f calico.yaml
#查看狀態(tài),執(zhí)行完上一條命令需要等一會(huì)才全部 running
kubectl get pods -n kube-system
等Calico Pod都Running,節(jié)點(diǎn)也會(huì)準(zhǔn)備就緒
部署 Dashboard
Dashboard 是官方提供的一個(gè) Web UI,可用于基本管理 K8s 資源,執(zhí)行如下命令下載 yaml 文件。默認(rèn) Dashboard 只能集群內(nèi)部訪問(wèn),修改 Service 為NodePort 類型,暴露到外部:
wget https://github.com/kubernetes/dashboard/releases/tag/v2.4.0/aio/deploy/recommended.yaml
修改如下,nodePort 的端口范圍為 30000-32767,這里設(shè)置為 31000,并且添加 type:NodePort
vim recommended.yaml
執(zhí)行如下命令應(yīng)用
kubectl apply -f recommended.yaml
在 master 節(jié)點(diǎn)創(chuàng)建 service account 并綁定默認(rèn) cluster-admin 管理員集群角色,執(zhí)行如下的命令
# 創(chuàng)建用戶
kubectl create serviceaccount dashboard-admin -n kube-system
# 用戶授權(quán)
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin -
-serviceaccount=kube-system:dashboard-admin
# 獲取用戶 Token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret |
awk '/dashboard-admin/{print $1}')
然后我們獲得如下的token,然后使用輸出的 token 登錄 Dashboard 就好了
eyJhbGciOiJSUzI1NiIsImtpZCI6IjNpbzFJbTg4UjlpcjFBdS1rb1J3NzFtY3BETlhtVkQ3S0hXZWwwU0MwN1UifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tYzdzcHAiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZjAyMTE1OWMtZjcyMC00YTZlLWFiY2MtYzIzYWRhZjBiZjk5Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.aD_ZtS0domXxtWz-2BaGmZebJMqoNvWqHgJ4K7kQ9eir5JvIqTsrxM14dNrUrEFRZC2hw6Gn_xz7Nezy81XPU64HHcbGiNvNU8K7OwvTWwTOpDBRPho1CaxJsKBrlQwoNf1pzoShqO-JdL4kVfJUmKthjUqv8QduwVzEkCWeTXgcHOoPnsOaJSXJzwanAC4e5pIovcjMGQJU4W87T8uVW4bdO4w48c-101-mMYHMouKVRxF8OOTuGHFXUDpYCKAOvfA73gtwoyi_4wiSqS7NSZZTGwFfppUYDomjoA3FUFubZ2xLoc8fN2GoFzzTcylxFHTCfupJM2nUVs9vxQbJw
然后我們?yōu)g覽器訪問(wèn) URL:https://master:31000或者 https://node:31000 均可
輸入獲得的token,就可以完成登陸了文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-656682.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-656682.html
到了這里,關(guān)于云安全攻防(十二)之 手動(dòng)搭建 K8S 環(huán)境搭建的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!