kubernetes + docker

環(huán)境準(zhǔn)備

bridge(橋接) 是 Linux 系統(tǒng)中的一種虛擬網(wǎng)絡(luò)設(shè)備,它充當(dāng)一個(gè)虛擬的交換機(jī)旦事,為集群內(nèi)的容器提供網(wǎng)絡(luò)通信功能,容器就可以通過這個(gè) bridge 與其他容器或外部網(wǎng)絡(luò)通信了。
# 開啟bridge網(wǎng)橋過濾
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

參數(shù)解釋:
net.bridge.bridge-nf-call-ip6tables = 1  //對(duì)網(wǎng)橋上的IPv6數(shù)據(jù)包通過iptables處理
net.bridge.bridge-nf-call-iptables = 1   //對(duì)網(wǎng)橋上的IPv4數(shù)據(jù)包通過iptables處理
net.ipv4.ip_forward = 1                       //開啟IPv4路由轉(zhuǎn)發(fā),來實(shí)現(xiàn)集群中的容器與外部網(wǎng)絡(luò)的通信

由于開啟bridge功能卷仑,需要加載br_netfilter模塊來允許在bridge設(shè)備上的數(shù)據(jù)包經(jīng)過iptables防火墻處理
modprobe br_netfilter && lsmod | grep br_netfilter

#會(huì)輸出以下內(nèi)容
br_netfilter           22256  0
bridge                151336  1 br_netfilter
命令解釋:
modprobe         //命令可以加載內(nèi)核模塊
br_netfilter            //模塊模塊允許在bridge設(shè)備上的數(shù)據(jù)包經(jīng)過iptables防火墻處理

加載配置文件,使上述配置生效
sysctl -p /etc/sysctl.d/k8s.conf

# 關(guān)閉SWAP交換分區(qū)
# 臨時(shí)關(guān)閉
swapoff -a
# 永久關(guān)閉
sed -ri 's/.*swap.*/#&/' /etc/fstab

一麸折、部署 docker + kubernetes

在每個(gè)節(jié)點(diǎn)(masternode節(jié)點(diǎn))上安裝Docker锡凝、kubelet、kubeadm和kubectl

1垢啼、docker

# 安裝 yum-utils 軟件包窜锯,從而使系統(tǒng)能夠使用一系列增強(qiáng)的 YUM 包管理工具來更好地管理軟件包、清理緩存
yum install -y yum-utils

# 向系統(tǒng)中添加 Docker 社區(qū)版的官方軟件倉庫配置芭析,以便使用 YUM 包管理工具從 Docker 官方源下載和安裝 Docker 軟件
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 通過 YUM 包管理工具自動(dòng)安裝 Docker 社區(qū)版及其相關(guān)組件
yum install docker-ce docker-ce-cli containerd.io -y

# 設(shè)置 Docker 開機(jī)自啟
systemctl enable docker

# 配置/etc/containerd/config.toml锚扎,配置 Containerd 容器運(yùn)行時(shí)的各種參數(shù)
--------------------------------------------------------------------
#disabled_plugins = ["cri"]

[grpc]
  address = "/run/containerd/containerd.sock"
  uid = 0
  gid = 0

[debug]
  address = "/run/containerd/debug.sock"
  uid = 0
  gid = 0
  level = "info"
--------------------------------------------------------------------

# 啟動(dòng) Docker 服務(wù)
systemctl start docker
輔助命令
# 關(guān)閉防火墻
systemctl stop firewalld
systemctl disable firewalld

# 查看防火墻狀態(tài)
sudo firewall-cmd --state

#列出正在運(yùn)行的 Docker 容器
docker ps

#列出本地的 Docker 鏡像
docker images

#停止并刪除容器(<container_name_or_id> 是你的Registry容器的名稱或ID)
docker stop <container_name_or_id>
docker rm <container_name_or_id>

#刪除鏡像(鏡像有多個(gè)版本加tag)
docker rmi <image_name>:<tag>
docker rmi <image_name>

#解壓縮和解包 tar 歸檔文件
#假設(shè)你有一個(gè)名為 archive.tar 的 tar 歸檔文件,你可以使用以下命令解包它:
tar -xvf archive.tar

tar:執(zhí)行 tar 命令馁启。
-x:選項(xiàng)表示解壓縮和提取文件
-v:顯示操作過程中的詳細(xì)信息驾孔。
-f:選項(xiàng)后緊跟著的參數(shù)指定要操作的歸檔文件名

#加載鏡像到本地 Docker 環(huán)境
#假設(shè)你有一個(gè)名為 my_images.tar 的 Docker 歸檔文件,其中包含了一些 Docker 鏡像惯疙。你可以使用以下命令將這些鏡像加載到你的 Docker 環(huán)境中:
docker load -i my_images.tar

2翠勉、kubernetes

# 創(chuàng)建一個(gè) Kubernetes YUM 倉庫配置文件,將阿里云的 Kubernetes 軟件倉庫添加到系統(tǒng)中螟碎。這樣眉菱,你就可以使用 YUM 包管理工具從該倉庫中下載和安裝 Kubernetes 相關(guān)的軟件包。通過運(yùn)行這個(gè)命令掉分,你可以為系統(tǒng)啟用 Kubernetes 的 YUM 倉庫俭缓,方便安裝、升級(jí)和管理 Kubernetes 軟件酥郭。
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 使用 YUM 包管理工具自動(dòng)安裝 Kubernetes 相關(guān)組件的指定版本(1.19.3)在系統(tǒng)中华坦,以便準(zhǔn)備好在你的系統(tǒng)上部署和管理 Kubernetes 集群
# kubeadm:用于初始化和管理 Kubernetes 集群的命令行工具。
# kubectl:用于與 Kubernetes 集群進(jìn)行交互的命令行工具不从。
# kubelet:Kubernetes 集群中每個(gè)節(jié)點(diǎn)上運(yùn)行的系統(tǒng)進(jìn)程惜姐,負(fù)責(zé)管理容器的生命周期。
yum install -y kubeadm-1.19.3-0 kubectl-1.19.3-0  kubelet-1.19.3-0

# 設(shè)置 kubelet 開機(jī)自啟
# kubelet 是 Kubernetes 集群中每個(gè)節(jié)點(diǎn)上運(yùn)行的系統(tǒng)進(jìn)程,負(fù)責(zé)管理容器的生命周期歹袁,因此需要在開機(jī)時(shí)自動(dòng)啟動(dòng)坷衍,以確保 Kubernetes 集群的正常運(yùn)行。
# kubeadm 和 kubectl 不需要在開機(jī)時(shí)自動(dòng)啟動(dòng)条舔。它們是命令行工具枫耳,用于在初始化 Kubernetes 集群、管理集群配置和與集群進(jìn)行交互孟抗。這些工具通常由管理員手動(dòng)運(yùn)行迁杨,不需要在每次開機(jī)時(shí)自動(dòng)啟動(dòng)。
systemctl enable kubelet

# 禁用swap(編輯 /etc/fstab 文件凄硼,找到包含 swap 的行(如果有的話)铅协,并在行首添加 # 來注釋掉該行)
# swap 是指計(jì)算機(jī)系統(tǒng)中用于虛擬內(nèi)存管理的一種技術(shù),通常在物理內(nèi)存(RAM)不足時(shí)摊沉,將一部分?jǐn)?shù)據(jù)暫時(shí)交換到硬盤上的一塊稱為 swap 分區(qū)或 swap 文件的存儲(chǔ)空間中狐史,以釋放物理內(nèi)存供其他程序使用。
# 在容器化環(huán)境中坯钦,特別是使用 Kubernetes 管理容器的集群中预皇,禁用 swap 是推薦的做法侈玄。Kubernetes 和容器通常需要嚴(yán)格的內(nèi)存管理婉刀,而 swap 的使用可能會(huì)導(dǎo)致不可預(yù)測的行為。因此序仙,禁用 swap 可以確保容器在物理內(nèi)存不足時(shí)更可靠地受限而不會(huì)頻繁地使用 swap突颊。
swapoff -a

# 在 Kubernetes 集群中初始化(只在 Master 節(jié)點(diǎn)執(zhí)行)一個(gè)新的 Kubernetes 控制平面
# --apiserver-advertise-address=10.0.0.4:這個(gè)參數(shù)用于指定 Kubernetes API 服務(wù)器(API Server)公開的 IP 地址。這里指定為 10.0.0.4潘悼,表示 API Server 將會(huì)使用這個(gè) IP 地址進(jìn)行公開律秃。
kubeadm init --apiserver-advertise-address=10.0.0.4 --kubernetes-version v1.19.3 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16

# 初始化集群后,按照輸出信息中的指示治唤,運(yùn)行以下命令來設(shè)置Kubernetes配置文件:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 將每個(gè)節(jié)點(diǎn)(在 Node 節(jié)點(diǎn)執(zhí)行)加入到 Kubernetes 集群中(kubeadm init 執(zhí)行之后會(huì)輸入棒动,直接復(fù)制即可)
kubeadm join 192.168.3.30:6443 --token i8q481.asaukyof1abw5j8n     --discovery-token-ca-cert-hash sha256:b4af288c70e6c7cb9054271696c9ee41123d4da48cce5b2feaabba43ba0f481f
# 在 Node 節(jié)點(diǎn)執(zhí)行
iptables-restore < /root/iptablesnode.v4

# 在 Mster 節(jié)點(diǎn)執(zhí)行
iptables-restore < /root/iptablesmaster.v4

# Master節(jié)點(diǎn)執(zhí)行,在 Kubernetes 集群中安裝 Tigera 和 Calico 組件宾添,用于網(wǎng)絡(luò)和安全策略的管理船惨。
kubectl create -f tigera-operator.yaml
kubectl apply -f calico-typha.yaml

# 重啟 kubelet,在 Master 節(jié)點(diǎn)中查看 Node 節(jié)點(diǎn)是否已經(jīng)加入集群
systemctl restart kubelet
kubectl get nodes

# 在 Kubernetes 集群中部署 Kubernetes Dashboard缕陕,這是一個(gè)用于管理和監(jiān)控集群的圖形用戶界面
kubectl create -f recommended.yaml

# 給 kubernetes-dashboard 賦值權(quán)限
kubectl create clusterrolebinding serviceaccount-cluster-admin --clusterrole=cluster-admin --user=system:serviceaccount:default:default

# 獲取 kubernetes-dashboard 登錄token粱锐,有過期時(shí)間,每次登錄都需要重新獲取
kubectl describe secret $(kubectl get secret -n kubernetes-dashboard | grep dashboard-admin | awk '{print $1}')
修改node節(jié)點(diǎn)主機(jī)名
# 獲取集群所有節(jié)點(diǎn)信息
[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE    VERSION
master   Ready    master   3d1h   v1.19.3
node1    Ready    <none>   3d     v1.19.3
node222    Ready    <none>   3d     v1.19.3

# 在 master 節(jié)點(diǎn)刪除想要修改主機(jī)名的子節(jié)點(diǎn)(比如node222)
kubectl delete node node222

# 將當(dāng)前節(jié)點(diǎn)還原到未初始化的狀態(tài)扛邑,從而清除節(jié)點(diǎn)上與 Kubernetes 相關(guān)的配置和數(shù)據(jù)
kubeadm reset
# 在當(dāng)前終端會(huì)話中切換到 root 用戶的身份
su root

# 修改子節(jié)點(diǎn)的主機(jī)名為 node2
hostnamectl set-hostname node2

# 在 maste 節(jié)點(diǎn)執(zhí)行怜浅,獲取子節(jié)點(diǎn)加入集群令牌,將輸出命令直接在 node 節(jié)點(diǎn)執(zhí)行
kubeadm token create --print-join-command

# 在被刪除的子節(jié)點(diǎn)蔬崩,執(zhí)行加入集群的命令
kubeadm join 192.168.3.30:6443 --token 0agh2z.2run9cjqd5q2m95j     --discovery-token-ca-cert-hash sha256:b4af288c70e6c7cb9054271696c9ee41123d4da48cce5b2feaabba43ba0f481f

# 在 mster 節(jié)點(diǎn)進(jìn)行驗(yàn)證
kubectl get nodes
輔助命令
# 在 kubernetes-dashboard 命名空間中獲取 Pod 和 Service 資源的信息
kubectl get pod,svc -o wide -n kubernetes-dashboard

# 用于在 Kubernetes 集群中創(chuàng)建一個(gè)令牌(Token)恶座,該令牌可用于讓其他節(jié)點(diǎn)加入集群搀暑。
kubeadm token create --print-join-command

# 關(guān)機(jī)重啟
shutdown -r now

# 重啟 kubelet
systemctl restart kubelet

二、部署 rabbitmq

# 在 CentOS 7 上安裝 unixODBC 軟件包跨琳,它提供了一個(gè)統(tǒng)一的接口來訪問不同的數(shù)據(jù)庫管理系統(tǒng)
yum install -y unixODBC
# 下載指定版本的 openssl-libs 軟件包
wget https://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/openssl-libs-1.0.2k-19.el7.x86_64.rpm
# 使用 rpm 工具安裝 openssl-libs 軟件包险掀,并使用 --force 選項(xiàng)強(qiáng)制安裝
rpm -ivh openssl-libs-1.0.2k-19.el7.x86_64.rpm --force
# 下載指定版本的 Erlang 軟件包
wget https://packages.erlang-solutions.com/erlang/rpm/centos/7/x86_64/esl-erlang_25.0.3-1~centos~7_amd64.rpm
# 使用 rpm 工具來升級(jí)或安裝下載的 Erlang 軟件包
rpm -Uvh esl-erlang_25.0.3-1~centos~7_amd64.rpm
# 使用 yum 包管理器安裝 Erlang 語言的軟件包
yum install -y erlang
# 使用 yum 包管理器安裝 socat 軟件包,它是一個(gè)多功能的網(wǎng)絡(luò)工具湾宙,可以用于在兩個(gè)數(shù)據(jù)流之間建立連接
yum install -y socat
# 從 GitHub 下載 RabbitMQ 3.11.11 版本的軟件包
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.11.11/rabbitmq-server-3.11.11-1.el8.noarch.rpm
# 使用 rpm 工具來安裝下載的 RabbitMQ 軟件包
rpm -Uvh rabbitmq-server-3.11.11-1.el8.noarch.rpm

修改hosts文件/etc/hosts
--------------------------------------------------------------------
192.168.3.100 master
192.168.3.101 node1
192.168.3.102 node2
--------------------------------------------------------------------

# 設(shè)置 rabbitmq 開啟自啟
systemctl enable rabbitmq-server
# 啟動(dòng) rabbitmq
systemctl start rabbitmq-server

--- 安裝 rabbitmq 管理頁面樟氢,端口號(hào)是15672---
# 啟用 RabbitMQ 管理插件,它允許您通過 Web 界面管理和監(jiān)控 RabbitMQ 服務(wù)器
rabbitmq-plugins enable rabbitmq_management
# 向 RabbitMQ 添加一個(gè)名為 "admin" 的用戶侠鳄,密碼也設(shè)置為 "admin"埠啃,可以根據(jù)需要修改用戶名和密碼
rabbitmqctl add_user admin admin
# 將 "admin" 用戶標(biāo)記為 "administrator",這樣該用戶就具有管理員權(quán)限伟恶,可以管理 RabbitMQ 服務(wù)器的配置和權(quán)限
rabbitmqctl set_user_tags admin administrator
# 為 "admin" 用戶設(shè)置權(quán)限碴开,允許其對(duì) "/" 虛擬主機(jī)中的所有資源擁有配置、寫入和讀取的權(quán)限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
# 啟用 RabbitMQ 的 Web MQTT 插件
rabbitmq-plugins enable rabbitmq_web_mqtt

三博秫、部署 redis

# 安裝 Remi 存儲(chǔ)庫潦牛,該存儲(chǔ)庫提供了許多流行的軟件包的更新版本,包括 Redis
yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# 使用 Remi 存儲(chǔ)庫來安裝 Redis 軟件包挡育,--enablerepo=remi 選項(xiàng)用于啟用 Remi 存儲(chǔ)庫巴碗,并使用 yum 包管理器自動(dòng)安裝 Redis 軟件包
yum --enablerepo=remi install redis -y

修改redis配置文件/etc/redis.conf
--------------------------------------------------------------------
bind 192.168.3.100
requirepass 123456
cluster-enabled yes
--------------------------------------------------------------------
# 設(shè)置 redis 開機(jī)自啟
systemctl enable redis
# 啟動(dòng) redis
systemctl start redis

四、部署 nginx

# 安裝 yum-utils 軟件包即寒,這是一組工具橡淆,可以幫助您管理 yum 包管理器的存儲(chǔ)庫和插件
yum install -y yum-utils
# 使用 cat 命令將一段文本添加到 /etc/yum.repos.d/nginx.repo 文件中。這段文本定義了兩個(gè) Nginx 存儲(chǔ)庫(nginx-stable 和 `nginx-mainline)母赵,并配置了存儲(chǔ)庫的詳細(xì)信息逸爵,包括存儲(chǔ)庫的基本 URL、GPG 校驗(yàn)和存儲(chǔ)庫的啟用狀態(tài)
cat <<EOF > /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/7/x86_64/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
# 安裝 Nginx 軟件包
yum install nginx -y
# 啟用 Nginx 服務(wù)的自啟動(dòng)
systemctl enable nginx
# 啟動(dòng) Nginx 服務(wù)
systemctl start nginx
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凹嘲,一起剝皮案震驚了整個(gè)濱河市师倔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌周蹭,老刑警劉巖趋艘,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谷醉,居然都是意外死亡致稀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門俱尼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抖单,“玉大人,你說我怎么就攤上這事∶妫” “怎么了耍休?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長货矮。 經(jīng)常有香客問我羊精,道長,這世上最難降的妖魔是什么囚玫? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任喧锦,我火速辦了婚禮,結(jié)果婚禮上抓督,老公的妹妹穿的比我還像新娘燃少。我一直安慰自己,他們只是感情好铃在,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布阵具。 她就那樣靜靜地躺著,像睡著了一般定铜。 火紅的嫁衣襯著肌膚如雪阳液。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天揣炕,我揣著相機(jī)與錄音帘皿,去河邊找鬼。 笑死祝沸,一個(gè)胖子當(dāng)著我的面吹牛矮烹,可吹牛的內(nèi)容都是我干的越庇。 我是一名探鬼主播罩锐,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼卤唉!你這毒婦竟也來了涩惑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤桑驱,失蹤者是張志新(化名)和其女友劉穎竭恬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熬的,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡痊硕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了押框。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岔绸。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盒揉,到底是詐尸還是另有隱情晋被,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布刚盈,位于F島的核電站羡洛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏藕漱。R本人自食惡果不足惜欲侮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肋联。 院中可真熱鬧锈麸,春花似錦、人聲如沸牺蹄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沙兰。三九已至氓奈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鼎天,已是汗流浹背舀奶。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斋射,地道東北人育勺。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像罗岖,于是被迫代替她去往敵國和親涧至。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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