前言
該文章是關(guān)于k8s環(huán)境的一個搭建過程,k8s的搭建有很多種方式,像單機(jī)搭建舟扎,虛擬機(jī)搭建等都可以,本次是基于騰訊輕量云服務(wù)器搭建的一個過程悴务。
前期準(zhǔn)備
- 至少兩臺服務(wù)器睹限,官方上說最低配置是要求2C2G的,但是我準(zhǔn)備的一臺是1C2G,一臺是4C4G的也沒問題讯檐。
- 熟悉linux基本命令
host配置
4C4G機(jī)器設(shè)置為k8smaster節(jié)點(diǎn)羡疗,另外一臺機(jī)器設(shè)置為k8snode節(jié)點(diǎn)
hostnamectl set-hostname k8smaster
hostnamectl set-hostname k8snode
分別進(jìn)入兩臺的/ect/hosts目錄,設(shè)置r如下host
# 這里實(shí)際上配置的是公網(wǎng)ip别洪,為了不泄露ip叨恨,所以寫了兩個假的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在訪問master的內(nèi)網(wǎng)ip的時候痒钝,轉(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在訪問node內(nèi)網(wǎng)ip的時候晕换,都轉(zhuǎn)發(fā)到公網(wǎng)ip)
端口開放
由于兩臺機(jī)器是處于公網(wǎng)環(huán)境午乓,且k8s節(jié)點(diǎn)之間需要通訊,所以需要開放一些端口闸准,端口配置可以直接進(jìn)到騰訊云控制臺進(jìn)行配置
以下是官網(wǎng)要求的master節(jié)點(diǎn)的端口配置
可以進(jìn)入騰訊云服務(wù)器的防火墻配置開放相應(yīng)端口益愈,端口可以限定來源,只允許node節(jié)點(diǎn)(192.168.2.2)訪問
以下是官網(wǎng)要求的node節(jié)點(diǎn)的端口配置
同理,也設(shè)置node節(jié)點(diǎn)的端口
組件安裝
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ī)啟動
systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker
修改docker配置(所有節(jié)點(diǎn))
# kubernetes 官方推薦 docker 等使用 systemd 作為 cgroupdriver,否則 kubelet 啟動不了
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
啟動k8s
組件安裝完成后就可以啟動了摸袁,首先啟動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)的憑證
# 初始化集群控制臺 Control plane
# 失敗了可以用 kubeadm reset 重置
# 記得把 kubeadm join xxx 保存起來
# 忘記了重新獲确浯蟆:kubeadm 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)跑)
# 很有可能國內(nèi)網(wǎng)絡(luò)訪問不到這個資源蝶怔,你可以網(wǎng)上找找國內(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
參考資料
https://k8s.easydoc.net/docs/dRiQjyTY/28366845/6GiNOzyZ/nd7yOvdY
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/