騰訊輕量云服務(wù)器搭建k8s環(huán)境

前言

該文章是關(guān)于k8s環(huán)境的一個(gè)搭建過(guò)程,k8s的搭建有很多種方式,像單機(jī)搭建,虛擬機(jī)搭建等都可以,本次是基于騰訊輕量云服務(wù)器搭建的一個(gè)過(guò)程。

前期準(zhǔn)備

  • 至少兩臺(tái)服務(wù)器,官方上說(shuō)最低配置是要求2C2G的,但是我準(zhǔn)備的一臺(tái)是1C2G,一臺(tái)是4C4G的也沒(méi)問(wèn)題。
  • 熟悉linux基本命令

host配置

4C4G機(jī)器設(shè)置為k8smaster節(jié)點(diǎn),另外一臺(tái)機(jī)器設(shè)置為k8snode節(jié)點(diǎn)

hostnamectl set-hostname k8smaster
hostnamectl set-hostname k8snode

分別進(jìn)入兩臺(tái)的/ect/hosts目錄,設(shè)置r如下host

# 這里實(shí)際上配置的是公網(wǎng)ip,為了不泄露ip,所以寫了兩個(gè)假的IP
192.168.1.1 k8smaster
192.168.2.2 k8snode

由于k8s內(nèi)部節(jié)點(diǎn)之間的通訊使用的是內(nèi)網(wǎng)ip,我們需要把內(nèi)網(wǎng)ip的重定向到公網(wǎng)ip上

iptables -t nat -A OUTPUT -d 10.0.1.1 -j DNAT --to-destination 192.168.1.1 (node節(jié)點(diǎn)執(zhí)行,使得node在訪問(wèn)master的內(nèi)網(wǎng)ip的時(shí)候,轉(zhuǎn)發(fā)到公網(wǎng)ip)
iptables -t nat -A OUTPUT -d 10.0.2.2 -j DNAT --to-destination 192.168.2.2
(master節(jié)點(diǎn)執(zhí)行,使得master在訪問(wèn)node內(nèi)網(wǎng)ip的時(shí)候,都轉(zhuǎn)發(fā)到公網(wǎng)ip)

端口開放

由于兩臺(tái)機(jī)器是處于公網(wǎng)環(huán)境,且k8s節(jié)點(diǎn)之間需要通訊,所以需要開放一些端口,端口配置可以直接進(jìn)到騰訊云控制臺(tái)進(jìn)行配置

以下是官網(wǎng)要求的master節(jié)點(diǎn)的端口配置

可以進(jìn)入騰訊云服務(wù)器的防火墻配置開放相應(yīng)端口,端口可以限定來(lái)源,只允許node節(jié)點(diǎn)(192.168.2.2)訪問(wèn)

1.png

以下是官網(wǎng)要求的node節(jié)點(diǎn)的端口配置

同理,也設(shè)置node節(jié)點(diǎn)的端口

k8s-2.png

組件安裝

master節(jié)點(diǎn)需要安裝

  • docker
  • kubectl 集群命令行交互工具
  • kubeadm 集群初始化工具

node節(jié)點(diǎn)需要安裝

  • docker
  • kubelet 管理 Pod 和容器,確保他們健康穩(wěn)定運(yùn)行
  • kube-proxy 網(wǎng)絡(luò)代理,負(fù)責(zé)網(wǎng)絡(luò)相關(guān)的工作

添加安裝源(所有節(jié)點(diǎn))

# 添加 k8s 安裝源
cat <<EOF > kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
mv kubernetes.repo /etc/yum.repos.d/

# 添加 Docker 安裝源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安裝命令

yum install -y kubelet kubeadm kubectl docker-ce

設(shè)置開機(jī)啟動(dòng)

systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

修改docker配置(所有節(jié)點(diǎn))

# kubernetes 官方推薦 docker 等使用 systemd 作為 cgroupdriver,否則 kubelet 啟動(dòng)不了
cat <<EOF > daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://ud6340vz.mirror.aliyuncs.com"]
}
EOF
mv daemon.json /etc/docker/

# 重啟生效
systemctl daemon-reload
systemctl restart docker

啟動(dòng)k8s

組件安裝完成后就可以啟動(dòng)了,首先啟動(dòng)master節(jié)點(diǎn),然后讓node節(jié)點(diǎn)加入master幾點(diǎn)即可。

在master節(jié)點(diǎn)使用kubeadm初始化集群

這里需要保存token,token是用于node節(jié)點(diǎn)加入maste節(jié)點(diǎn)的憑證

# 初始化集群控制臺(tái) Control plane
# 失敗了可以用 kubeadm reset 重置
# 記得把 kubeadm join xxx 保存起來(lái)
# 忘記了重新獲?。簁ubeadm token create --print-join-command

kubeadm init --image-repository=registry.aliyuncs.com/google_containers

node節(jié)點(diǎn)加入master節(jié)點(diǎn)

kubeadm join 192.168.1.1:6443 --token xxx --discovery-token-ca-cert-hash xxx

安裝網(wǎng)絡(luò)插件,否則node是NotReady狀態(tài)(主節(jié)點(diǎn)跑)

# 很有可能國(guó)內(nèi)網(wǎng)絡(luò)訪問(wèn)不到這個(gè)資源,你可以網(wǎng)上找找國(guó)內(nèi)的源安裝 flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

master節(jié)點(diǎn)查看結(jié)果

kubectl get nodes

k8s-3.png

參考資料

https://k8s.easydoc.net/docs/dRiQjyTY/28366845/6GiNOzyZ/nd7yOvdY
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容