使用國內(nèi)的鏡像源搭建 kubernetes(k8s)集群

1. 概述

老話說的好:努力學(xué)習(xí)玲献,提高自己汗茄,讓自己知道的比別人多娃豹,了解的別人多啥酱。

言歸正傳褒颈,之前我們聊了 Docker菲嘴,隨著業(yè)務(wù)的不斷擴(kuò)大叭首,Docker 容器不斷增多谋梭,物理機(jī)也不斷增多赶舆,此時(shí)我們會(huì)發(fā)現(xiàn)哑姚,登錄到每臺機(jī)器去手工操作 Docker 是一件很麻煩的事情。

這時(shí)涌乳,我們需要一個(gè)好用的工具來管理 Docker蜻懦,幫我們創(chuàng)建、運(yùn)行夕晓、調(diào)整宛乃、銷毀這些容器,幫我們監(jiān)控哪個(gè)容器宕掉了蒸辆,然后重新啟動(dòng)這個(gè)容器等等征炼。

kubernetes(k8s)就是一個(gè)很好的選擇,今天我們先來聊聊 kubernetes(k8s)是如何搭建的躬贡。

2. 場景說明

服務(wù)器A IP:192.168.1.12

服務(wù)器B IP:192.168.1.11

服務(wù)器C IP:192.168.1.15

服務(wù)器A hostname:zhuifengren2

服務(wù)器B hostname:zhuifengren3

服務(wù)器C hostname:zhuifengren4

準(zhǔn)備三臺服務(wù)器谆奥,CentOS7 操作系統(tǒng)。

三臺服務(wù)器都已安裝了 Docker拂玻,關(guān)于 Docker 的安裝可參見我的另一篇文章《Docker 急速入門》(http://www.reibang.com/p/b5188600c268

服務(wù)器A 作為 Master 節(jié)點(diǎn)酸些,服務(wù)器B 和 服務(wù)器C 作為數(shù)據(jù)節(jié)點(diǎn)。

3. kubernetes(k8s)安裝(CentOS7)

3.1 官網(wǎng)地址

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

3.2 服務(wù)器配置要求

內(nèi)存至少2G

CPU至少2核

硬盤至少20G

3.3 關(guān)閉 SELinux

方式一:

# setenforce 0
# sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

方式二:

# vim /etc/sysconfig/selinux

SELINUX=enforcing 改為 SELINUX=disabled

重啟服務(wù)器

3.4 設(shè)置路由

# cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf

br_netfilter
EOF

# cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

# sysctl --system

3.5 關(guān)閉系統(tǒng)的 Swap

# swapoff -a

# vi /etc/fstab

注釋掉 SWAP 的自動(dòng)掛載

# vi /etc/sysctl.d/k8s.conf

添加下面一行:
vm.swappiness=0

# sysctl -p /etc/sysctl.d/k8s.conf

3.6 安裝并啟動(dòng) kubernetes(K8s)

# cat <<EOF > /etc/yum.repos.d/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
exclude=kube*
EOF

# yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

# systemctl enable kubelet

# systemctl restart kubelet

3.3 到 3.6 的步驟在3臺服務(wù)器上都執(zhí)行

4. kubernetes(k8s)集群搭建(CentOS7)

4.1 修改 Docker 配置

# cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
],
"data-root": "/data/docker"
}
EOF

# systemctl daemon-reload
# systemctl restart docker

4.2 查看需要的鏡像

# kubeadm config images list

k8s.gcr.io/kube-apiserver:v1.22.3
k8s.gcr.io/kube-controller-manager:v1.22.3
k8s.gcr.io/kube-scheduler:v1.22.3
k8s.gcr.io/kube-proxy:v1.22.3
k8s.gcr.io/pause:3.5
k8s.gcr.io/etcd:3.5.0-0
k8s.gcr.io/coredns/coredns:v1.8.4

4.3 從國內(nèi)源拉取鏡像

由于 k8s.cgr.io 無法訪問檐蚜,因此我們需要先使用國內(nèi)鏡像源拉下來魄懂,再改tag

執(zhí)行下面腳本:

#/bin/bash
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.22.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.22.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.22.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.22.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.0-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.4
docker pull quay.io/coreos/flannel:v0.15.1-amd64

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.22.3 k8s.gcr.io/kube-apiserver:v1.22.3
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.22.3 k8s.gcr.io/kube-controller-manager:v1.22.3
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.22.3 k8s.gcr.io/kube-scheduler:v1.22.3
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.22.3 k8s.gcr.io/kube-proxy:v1.22.3
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5 k8s.gcr.io/pause:3.5
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.0-0 k8s.gcr.io/etcd:3.5.0-0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.4 k8s.gcr.io/coredns/coredns:v1.8.4

docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.22.3
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.22.3
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.22.3
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.22.3
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.0-0
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.4

4.1 4.2 4.3 的步驟在三臺服務(wù)器都需要執(zhí)行

4.4 初始化集群

在 Master 節(jié)點(diǎn)執(zhí)行

# kubeadm init --apiserver-advertise-address=192.168.1.12 --pod-network-cidr=10.244.0.0/16

其中,192.168.1.12 是 Master 節(jié)點(diǎn)的 IP 地址闯第,可根據(jù)實(shí)際情況修改市栗。

4.5 Get "http://localhost:10248/healthz": dial tcp [::1]:10248: connect: connection refused 報(bào)錯(cuò)解決

初始化集群時(shí),如果報(bào)以上的錯(cuò)誤,在 Master 節(jié)點(diǎn)按以下步驟操作即可:

# vi /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf

增加:
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --fail-swap-on=false"

cat > /var/lib/kubelet/config.yaml <<EOF
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
EOF

# systemctl daemon-reload
# systemctl restart kubelet
# kubeadm reset -f

4.6 再次執(zhí)行集群初始化命令

在 Master 節(jié)點(diǎn)執(zhí)行

# kubeadm init --apiserver-advertise-address=192.168.1.12 --pod-network-cidr=10.244.0.0/16

出現(xiàn)以下信息填帽,說明初始化成功:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.1.12:6443 --token x0u0ou.q6271pyjm7cv5hxl \
--discovery-token-ca-cert-hash sha256:907ffb03d73f7668b96024c328880f95f4249e98da1be44d1caeb01dd62173da

4.7 根據(jù)上一步的信息 export config 文件 及設(shè)置網(wǎng)絡(luò)

# export KUBECONFIG=/etc/kubernetes/admin.conf

這里我們使用 flannel 網(wǎng)絡(luò)

# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

到此為止蛛淋,Master 節(jié)點(diǎn)搭建完畢。

4.8 根據(jù) 4.6 步驟的信息篡腌,將兩個(gè)數(shù)據(jù)節(jié)點(diǎn)加入集群

在 服務(wù)器B 和 服務(wù)器C褐荷,執(zhí)行如下命令(來源于 4.6 步驟的信息):

# kubeadm join 192.168.1.12:6443 --token x0u0ou.q6271pyjm7cv5hxl \
--discovery-token-ca-cert-hash sha256:907ffb03d73f7668b96024c328880f95f4249e98da1be44d1caeb01dd62173da

如果執(zhí)行不成功,或者數(shù)據(jù)節(jié)點(diǎn)始終是 NotReady 狀態(tài)嘹悼,則參見 4.5 步驟诚卸,修改配置。

4.9 在 Master 節(jié)點(diǎn)绘迁,查看集群信息

# kubectl get node

如果狀態(tài)都是 Ready合溺,則 Kubernetes(K8s)集群搭建成功。

image

5. 綜述

今天聊了一下 如何使用國內(nèi)的鏡像源搭建 kubernetes(k8s)集群 缀台,希望可以對大家的工作有所幫助棠赛。

歡迎幫忙點(diǎn)贊、評論膛腐、轉(zhuǎn)發(fā)睛约、加關(guān)注 :)

關(guān)注追風(fēng)人聊Java,每天更新Java干貨哲身。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辩涝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子勘天,更是在濱河造成了極大的恐慌怔揩,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脯丝,死亡現(xiàn)場離奇詭異商膊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)宠进,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門晕拆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人材蹬,你說我怎么就攤上這事实幕。” “怎么了堤器?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵昆庇,是天一觀的道長。 經(jīng)常有香客問我吼旧,道長凰锡,這世上最難降的妖魔是什么未舟? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任圈暗,我火速辦了婚禮掂为,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘员串。我一直安慰自己勇哗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布寸齐。 她就那樣靜靜地躺著欲诺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪渺鹦。 梳的紋絲不亂的頭發(fā)上扰法,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機(jī)與錄音毅厚,去河邊找鬼塞颁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吸耿,可吹牛的內(nèi)容都是我干的祠锣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼咽安,長吁一口氣:“原來是場噩夢啊……” “哼伴网!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起妆棒,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤澡腾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后糕珊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛋铆,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年放接,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刺啦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纠脾,死狀恐怖玛瘸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苟蹈,我是刑警寧澤糊渊,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站慧脱,受9級特大地震影響渺绒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一宗兼、第九天 我趴在偏房一處隱蔽的房頂上張望躏鱼。 院中可真熱鬧,春花似錦殷绍、人聲如沸染苛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茶行。三九已至,卻和暖如春登钥,著一層夾襖步出監(jiān)牢的瞬間畔师,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工牧牢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茉唉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓结执,卻偏偏與公主長得像度陆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子献幔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容