四、Kubernetes集群安裝

參見(jiàn):https://www.cnblogs.com/syuee/p/15057847.html

1、集群安裝

一颊埃、 主機(jī)準(zhǔn)備

1、設(shè)置主機(jī)名以及host文件的相互解析:?

hostnamectl set-hostname k8s-master01? ?

vi /etc/hosts? ? ? ? 192.168.66.10? k8s-master01? (在大型環(huán)境建議通過(guò)DNS的方式俯在,讓主機(jī)名和ip能夠相互解析)

2竟秫、安裝必要的依賴包

yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

3、設(shè)置防火墻為Iptables并設(shè)置空規(guī)則?

iptables 是一個(gè)功能強(qiáng)大的網(wǎng)絡(luò)包過(guò)濾和轉(zhuǎn)發(fā)工具跷乐,它可以幫助管理員配置和管理系統(tǒng)的網(wǎng)絡(luò)安全策略肥败,實(shí)現(xiàn)防火墻、網(wǎng)絡(luò)地址轉(zhuǎn)換和數(shù)據(jù)包修改等功能愕提。通過(guò)合理配置 iptables 規(guī)則馒稍,可以增強(qiáng)系統(tǒng)的網(wǎng)絡(luò)安全性和靈活性。

systemctl stop firewalld && systemctl disable firewalld

yum -y install ipatbles-service && systemctl start iptables && systemctl enable ipatbles && ipatbles -f && service ipatables save

(安裝 iptables 服務(wù)浅侨,啟動(dòng)該服務(wù)纽谒。并設(shè)置 iptables 服務(wù)在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng)。最后如输,它會(huì)刷新規(guī)則鼓黔、保存配置)

4、關(guān)閉SELINUX

swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab? ? ?

(禁用系統(tǒng)上的所有 Swap 分區(qū)不见。在?/etc/fstab?文件中找到包含關(guān)鍵字 "swap" 的行澳化,并將其替換為以 "#" 開(kāi)頭的注釋行。)

setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config?

(這個(gè)命令用于將 SELinux 安全模塊設(shè)置為 "Permissive" 模式稳吮。SELinux 是一種強(qiáng)制訪問(wèn)控制(MAC)機(jī)制缎谷,用于加強(qiáng) Linux 系統(tǒng)的安全性。通過(guò)將 SELinux 設(shè)置為 "Permissive" 模式灶似,系統(tǒng)仍然會(huì)記錄違規(guī)行為列林,但不會(huì)阻止它們。這樣可以臨時(shí)禁用 SELinux 的強(qiáng)制訪問(wèn)控制酪惭,以便進(jìn)行一些需要臨時(shí)關(guān)閉 SELinux 的操作希痴。將?/etc/selinux/config?文件中的?SELINUX?參數(shù)的值修改為 "disabled",從而永久禁用 SELinux撞蚕。)??

5润梯、調(diào)整內(nèi)核參數(shù),對(duì)于k8s

cat > kubernetes.conf <<EOF

net.bridge.bridge-nf-call-iptables=1 #開(kāi)啟網(wǎng)橋模式

net.bridge.bridge-nf-call-ip6tables=1 #開(kāi)啟網(wǎng)橋模式

net.ipv4.ip_forward=1 #設(shè)置包轉(zhuǎn)發(fā)

net.ipv4.tcp_tw_recycle=0

vm.swappiness=0 # 禁止使用 swap 空間,只有當(dāng)系統(tǒng) OOM 時(shí)才允許使用它

vm.overcommit_memory=1 # 不檢查物理內(nèi)存是否夠用

vm.panic_on_oom=0 # 開(kāi)啟 OOM

fs.inotify.max_user_instances=8192

fs.inotify.max_user_watches=1048576

fs.file-max=52706963

fs.nr_open=52706963

net.ipv6.conf.all.disable_ipv6=1 #關(guān)閉IPV6協(xié)議

net.netfilter.nf_conntrack_max=2310720

EOF

cp kubernetes.conf /etc/sysctl.d/kubernetes.conf

sysctl -p /etc/sysctl.d/kubernetes.conf? ? 手動(dòng)刷新生效

6纺铭、調(diào)整系統(tǒng)時(shí)區(qū)

# 設(shè)置系統(tǒng)時(shí)區(qū)為 中國(guó)/上海

timedatectl set-timezone Asia/Shanghai

# 將當(dāng)前的 UTC 時(shí)間寫(xiě)入硬件時(shí)鐘

timedatectl set-local-rtc 0

# 重啟依賴于系統(tǒng)時(shí)間的服務(wù)

systemctl restart rsyslog

systemctl restart crond

7寇钉、關(guān)閉系統(tǒng)不需要服務(wù)

Postfix 是一個(gè)郵件傳輸代理(MTA),它用于發(fā)送、接收和路由電子郵件。

systemctl stop postfix && systemctl disable postfix

8坟漱、設(shè)置 rsyslogd 和 systemd journald

rsyslogd?和?systemd journald?是兩種不同的日志管理系統(tǒng),用于收集撵溃、存儲(chǔ)和管理系統(tǒng)日志。主要區(qū)別:

rsyslogd?是傳統(tǒng)的 syslog 系統(tǒng)锥累,而?systemd journald?是 systemd 系統(tǒng)的一部分缘挑。

rsyslogd?使用文本文件存儲(chǔ)日志,而?systemd journald?使用二進(jìn)制格式存儲(chǔ)日志桶略。

rsyslogd?支持更廣泛的日志轉(zhuǎn)發(fā)和處理選項(xiàng)语淘,而?systemd journald?提供了更強(qiáng)大的查詢和過(guò)濾功能。

rsyslogd?可以與其他日志處理工具集成际歼,而?systemd journald?是 systemd 系統(tǒng)的默認(rèn)日志管理工具惶翻。

mkdir /var/log/journal # 持久化保存日志的目錄

mkdir /etc/systemd/journald.conf.d

cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF

[Journal]

# 持久化保存到磁盤

Storage=persistent

# 壓縮歷史日志

Compress=yes

SyncIntervalSec=5m

RateLimitInterval=30s

RateLimitBurst=1000

# 最大占用空間 10G

SystemMaxUse=10G

# 單日志文件最大 200M

SystemMaxFileSize=200M

# 日志保存時(shí)間 2 周

MaxRetentionSec=2week

# 不將日志轉(zhuǎn)發(fā)到 syslog

ForwardToSyslog=no

EOF

systemctl restart systemd-journald

9、升級(jí)系統(tǒng)內(nèi)核為4.44

CentOS 7.x 系統(tǒng)自帶的 3.10.x 內(nèi)核存在一些 Bugs鹅心,導(dǎo)致運(yùn)行的 Docker吕粗、Kubernetes 不穩(wěn)定,例如: rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

# 安裝完成后檢查 /boot/grub2/grub.cfg 中對(duì)應(yīng)內(nèi)核 menuentry 中是否包含 initrd16 配置旭愧,如果沒(méi)有颅筋,再安裝 一次!

yum --enablerepo=elrepo-kernel install -y kernel-lt

# 設(shè)置開(kāi)機(jī)從新內(nèi)核啟動(dòng)

grub2-set-default 'CentOS Linux (4.4.189-1.el7.elrepo.x86_64) 7 (Core)'

grub2-set-default 'CentOS Linux (4.4.218-1.el7.elrepo.x86_64) 7 (Core)'

grub2-set-default 'CentOS Linux (4.4.219-1.el7.elrepo.x86_64) 7 (Core)'

查看所有可用內(nèi)核

awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

grub2-set-default 'CentOS Linux (4.4.248-1.el7.elrepo.x86_64) 7 (Core)'

二、 kube-proxy 開(kāi)啟ipvs的前置條件

modprobe br_netfilter

cat > /etc/sysconfig/modules/ipvs.modules << EOF

#!/bin/bash

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack_ipv4

EOF

(modprobe -- ip_vs:這個(gè)命令用于加載名為?ip_vs?的內(nèi)核模塊输枯。ip_vs?模塊是 Linux 內(nèi)核中的一個(gè)模塊垃沦,提供了 IP 虛擬服務(wù)器(IPVS)的功能,用于實(shí)現(xiàn)負(fù)載均衡和集群服務(wù)用押。

modprobe -- ip_vs_rr、modprobe -- ip_vs_wrr靶剑、modprobe -- ip_vs_sh:這些命令用于加載與 IPVS 相關(guān)的調(diào)度器模塊蜻拨。ip_vs_rr?是基于輪詢的調(diào)度器,ip_vs_wrr?是基于加權(quán)輪詢的調(diào)度器桩引,ip_vs_sh?是基于散列的調(diào)度器缎讼。這些調(diào)度器用于決定負(fù)載均衡時(shí)數(shù)據(jù)包的路由方式。

modprobe -- nf_conntrack_ipv4:這個(gè)命令用于加載名為?nf_conntrack_ipv4?的內(nèi)核模塊坑匠。nf_conntrack_ipv4?模塊是 Linux 內(nèi)核中的一個(gè)模塊血崭,提供了 IPv4 連接跟蹤的功能,用于跟蹤和管理網(wǎng)絡(luò)連接狀態(tài)。)

chmod 755 /etc/sysconfig/modules/ipvs.modules && \bash /etc/sysconfig/modules/ipvs.modules &&\lsmod | grep -e ip_vs -e nf_conntrack_ipv4

(加載和配置一些 IPVS 相關(guān)的內(nèi)核模塊 夹纫。使用?lsmod?命令列出當(dāng)前加載的內(nèi)核模塊咽瓷,并通過(guò)?grep?命令進(jìn)行過(guò)濾,只顯示包含?ip_vs?或?nf_conntrack_ipv4?的模塊信息舰讹。)

三茅姜、 安裝docker軟件

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager \

--add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum update -y && yum install -y docker-ce? ?##先更新系統(tǒng)中已安裝的軟件包到最新版本,然后安裝 Docker 社區(qū)版月匣。

此時(shí)k8s的版本可能已經(jīng)更改钻洒,uname -r 查看是否之前設(shè)置的4.44,如果不是锄开,重新設(shè)置默認(rèn)版本素标,再重啟。grub2-set-default 'CentOS Linux (4.4.189-1.el7.elrepo.x86_64) 7 (Core)'??&& reboot?

systemctl start docker? ##重啟docker

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

mkdir /etc/docker??## 創(chuàng)建 /etc/docker 目錄

# 配置 daemon.

cat > /etc/docker/daemon.json <<EOF

{

"exec-opts": ["native.cgroupdriver=systemd"],???##?指定了 Docker 守護(hù)進(jìn)程使用?systemd?作為 cgroup 驅(qū)動(dòng)程序萍悴,用于管理容器的資源限制和隔離头遭。?

"log-driver": "json-file",? ???##指定了 Docker 容器的日志驅(qū)動(dòng)程序?yàn)?json-file,即將容器的日志輸出到文件中退腥。

"log-opts": {

"max-size": "100m"

}

}

EOF

mkdir -p /etc/systemd/system/docker.service.d

# 重啟docker服務(wù)

systemctl daemon-reload && systemctl restart docker && systemctl enable docker

四任岸、 安裝kubeadm(主從配置)

kubeadm是?Kubernetes 官方提供的一個(gè)命令行工具,用于在 Kubernetes 集群中初始化控制平面節(jié)點(diǎn)(Master 節(jié)點(diǎn))和加入工作節(jié)點(diǎn)(Worker 節(jié)點(diǎn))狡刘。

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

EOF

yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1

systemctl enable kubelet.service

五享潜、 初始化主節(jié)點(diǎn)?

注意,此處可以先導(dǎo)入下載好的kubeadm?鏡像(谷歌下載)

初始化 Kubernetes 集群嗅蔬,并根據(jù)指定的配置文件生成秘鑰

kubeadm config print init-defaults > kubeadm-config.yaml

#更改kubeadm-config.yaml 文件

localAPIEndpoint:

advertiseAddress: 192.168.66.10 #更改為master的ip地址

kubernetesVersion: v1.15.1 #更改版本為當(dāng)前版本

networking:

? podSubnet: "10.244.0.0/16" #添加flannel 網(wǎng)絡(luò)不然后面麻煩

? serviceSubnet: 10.96.0.0/12

---

apiVersion: kubeproxy.config.k8s.io/v1alpha1

kind: KubeProxyConfiguration

featureGates:

? SupportIPVSProxyMode: true

mode: ipvs

做初始化并生成秘鑰

kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log

六剑按、查看kubeadm-init.log \加入主節(jié)點(diǎn)以及其余工作節(jié)點(diǎn)

vim??kubeadm-init.log (如果第5步前,沒(méi)有導(dǎo)入鏡像澜术,通過(guò)下載方式獲取鏡像艺蝴,時(shí)間會(huì)比較久。防止卡主鸟废,可以開(kāi)個(gè)子終端猜敢,通過(guò)docker images 查看鏡像是否有新增)

通過(guò)觀察日志,發(fā)現(xiàn)需要做以下操作:

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf???$HOME/.kube/config

sudo chown $(id -u):?$(id -g)?$HOME/.kube/config

此時(shí)可以查看當(dāng)前節(jié)點(diǎn):kubectl get node

七盒延、 部署網(wǎng)絡(luò)缩擂,安裝flannel

mkdir install-k8s

ls

mv?kubeadm-init.log?kubeadm-config.ymal install-k8s/

cd??install-k8s

mkdir core

mv *core/

mkdir plugin

cd plugin/

mkdir flannel

cd??flannel

wget?https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube- flannel.yml

kubectl?create -f??kube- flannel.yaml

kubectl get pod -n kube-system

備注:

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

kubectl apply -f 是在原有基礎(chǔ)上升級(jí)

kubectl create -f 是直接新建

八、 加入其他節(jié)點(diǎn)

加入其他節(jié)點(diǎn)(在子節(jié)點(diǎn)執(zhí)行 )(在主節(jié)點(diǎn)的日志文件里面找到命令):

kubeadmjoin192.168.66.10:6443--token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:ed81ab06be57fa61df388ddce02b4a6d70d0e6a0be91b7b7382d8fd82970c964

kubectl get pod -n kube-system -o wide

kubectl get pod -n kube-system -w

mv install-k8s/ /usr/local/?

rm -rf? *?install-k8s



2添寺、配置私有倉(cāng)庫(kù)Harbor

Harbor 提供了一個(gè)安全胯盯、可靠的容器鏡像倉(cāng)庫(kù),幫助組織和團(tuán)隊(duì)有效地存儲(chǔ)计露、管理和分發(fā)容器鏡像博脑,并提供了訪問(wèn)控制憎乙、安全掃描和審計(jì)等功能,以增強(qiáng)容器化應(yīng)用的安全性和可管理性叉趣。

一泞边、安裝docker

在 CentOS 系統(tǒng)上安裝 Docker 和 Docker Compose,并升級(jí) Python pip 工具君账。

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum install docker-ce -y

yum install python-pip -y

pip install --upgrade pip

pip install docker-compose (單機(jī)編排工具)

二繁堡、更改vim /etc/docker/daemon.json 讓其信任syuee.com 這個(gè)域名

注意,k8s機(jī)器也更改如下配置

{

? "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file",

? "log-opts": {

? ? "max-size": "100m"

? },

? "registry-mirrors": ["https://f4573wwn.mirror.aliyuncs.com"],

? "insecure-registries": ["https://hub.syuee.com"]? ?##認(rèn)為它是安全的證書(shū),省掉購(gòu)買證書(shū)環(huán)節(jié)

}

yum -y install lrzsz? ##lrzsz?是一個(gè)用于在終端中進(jìn)行文件傳輸?shù)墓ぞ呦缡С滞ㄟ^(guò)串口椭蹄、Telnet、SSH 等協(xié)議進(jìn)行文件傳輸净赴。

將docker-compose拖進(jìn)服務(wù)器

mv docker-compose /usr/local/bin/

chmod a+x /usr/local/bin/?docker-compose

三绳矩、創(chuàng)建證書(shū)

openssl genrsa -des3 -out server.key 2048? ??#生成私鑰輸入兩次密碼(4位以上)

openssl req -new -key server.key -out server.csr? ??#創(chuàng)建一個(gè)證書(shū)的請(qǐng)求

#第一個(gè)國(guó)家名:CN

#第二個(gè)省:SH

#第三個(gè)市:SH

#第四個(gè)組織:syuee

#第五個(gè)機(jī)構(gòu):syuee

#完全合規(guī)域名:hub.syuee.com

#管理員郵箱:sivan@syuee.com

#是否要改密碼

cp server.key server.key.org? ?#備份私鑰

openssl rsa -in server.key.org -out server.key? ?#去掉密碼

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt??#簽名生成證書(shū)

mkdir /data/cert #創(chuàng)建/data/cert 目錄 (存儲(chǔ)ssl的目錄)

chmod -R 777 /data/cert

四玖翅、上傳harbor并解壓

將habor-offline-installer-v1.2.0.tgz拖進(jìn)服務(wù)器

tar -zvf?habor-offline-installer-v1.2.0.tgz

mv harbor /usr/local/

更改配置文件vim /usr/local/harbor/harbor.cfg

cd?/usr/local/harbor?

vim harbor.cfg

更改hostname

hostname = hub.syuee.com

更改訪問(wèn)為https

ui_url_protocol = https

默認(rèn)證書(shū)的位置是

ssl_cert = /data/cert/server.crt

ssl_cert_key = /data/cert/server.key

安裝harbor

./install.sh

五翼馆、其他配置

配置hosts 解析(包含Harbor本機(jī)以及其他k8s服務(wù)器)

C:\Windows\System32\drivers\etc 的hosts? 默認(rèn)賬號(hào)密碼是 admin\Harbor12345

cat /etc/hosts

echo "192.168.66.100 hub.syuee.com" >>? /etc/hosts

docker ps -a #查看運(yùn)行的容器

啟動(dòng)后:https://hub.syuee.com 訪問(wèn)倉(cāng)庫(kù)

六、更改其他docker 指定倉(cāng)庫(kù)

{

? "exec-opts": ["native.cgroupdriver=systemd"],

? "log-driver": "json-file",

? "log-opts": {

? ? "max-size": "100m"

? },

? "insecure-registries": ["https://hub.syuee.com"]

}

七金度、驗(yàn)證

1应媚、測(cè)試推送鏡像到倉(cāng)庫(kù)

docker login https://hub.syuee.com???#測(cè)試docker是否能訪問(wèn)倉(cāng)庫(kù)? ?admin\Harbor12345

docker pull nginx? #下載一個(gè)鏡像

docker tag nginx:latest hub.syuee.com/library/nginx:v1? ?#anHarbor標(biāo)準(zhǔn),推送鏡像需要?重新打標(biāo)簽

docker push hub.syuee.com/library/nginx:v1? #推送到倉(cāng)庫(kù)

hub.syuee.com/library/ingress-nginx-controller:v0.44.0

2猜极、測(cè)試從k8s上拉取倉(cāng)庫(kù)中鏡像

kubectl run nginx-deployment --image=hub.syuee.com/library/nginx:v1 --port=80 --replicas=1? ? ? #在 Kubernetes 集群中創(chuàng)建一個(gè)名為?nginx-deployment?的部署(Deployment)對(duì)象中姜,并使用指定的鏡像、端口和副本數(shù)量進(jìn)行配置跟伏。從 Kubernetes 1.18 開(kāi)始丢胚,kubectl run?命令的行為發(fā)生了變化。在新版本中受扳,kubectl run?命令默認(rèn)創(chuàng)建的是一個(gè) Pod携龟,而不是 Deployment。如果你使用的是較新的 Kubernetes 版本勘高,可以使用?kubectl create deployment?命令來(lái)創(chuàng)建部署對(duì)象峡蟋。

kubectl get deployment? ?#獲取當(dāng)前 Kubernetes 集群中的部署(Deployment)對(duì)象的信息。包含就緒副本數(shù)华望、最新副本數(shù)和可用副本數(shù)等信息层亿。

kubectl get rs? ?#rs?是要獲取信息的資源類型,表示 ReplicaSet 對(duì)象立美。包含期望副本數(shù)、當(dāng)前副本數(shù)和可用副本數(shù)等信息

kubectl get pod

kubectl get pod -0 wide


3方灾、k8s集群網(wǎng)絡(luò)訪問(wèn)設(shè)置

kubectl scale --replicas=3 deployment/nginx-deployment? #對(duì)pod擴(kuò)容成3個(gè)副本

kubectl get svc? #Service 是 Kubernetes 中用于提供網(wǎng)絡(luò)訪問(wèn)和負(fù)載均衡的對(duì)象建蹄,用于將一組 Pod 暴露給集群內(nèi)外的其他組件或用戶碌更。

問(wèn)題1:怎么訪問(wèn)三個(gè)pod?傳統(tǒng)通過(guò)nginx的upstream洞慎。k8s通過(guò)IPVS服務(wù)

kubectl expose deployment nginx-deployment --port=30000 --target-port=80? #在 Kubernetes 將創(chuàng)建一個(gè) Service 對(duì)象痛单,并將其與指定的 Deployment 對(duì)象關(guān)聯(lián)起來(lái)。該 Service 對(duì)象將使用指定的端口號(hào)(這里是 30000)暴露服務(wù)劲腿,并將流量轉(zhuǎn)發(fā)到與 Deployment 關(guān)聯(lián)的 Pod 的指定端口號(hào)(這里是 80)旭绒。這樣,通過(guò)訪問(wèn) Service 的 IP 地址和端口號(hào)(例如焦人,http://<Service-IP>:30000)挥吵,可以訪問(wèn)到運(yùn)行在 Deployment 中的 Pod 提供的服務(wù)。

ipvsadm -Ln | grep 10.97.154.59? #使用 ipvsadm 工具來(lái)列出 IPVS(IP Virtual Server)的配置花椭。查找與指定 IP 地址相關(guān)的負(fù)載均衡規(guī)則或配置信息忽匈。通過(guò)執(zhí)行該命令,可以查看與指定 IP 地址相關(guān)的負(fù)載均衡配置矿辽,例如目標(biāo)服務(wù)器的 IP 地址丹允、端口號(hào)、負(fù)載均衡算法等袋倔。

ipvsadm -Ln?

問(wèn)題2:怎么通過(guò)外網(wǎng)訪問(wèn)nginx-deployment 雕蔽?10.97.154.59是內(nèi)網(wǎng)地址,無(wú)法訪問(wèn)宾娜,但是可以 通過(guò)將svc的type改為NodePort類型批狐,自動(dòng)暴露端口 。注意碳默,此時(shí)通過(guò)https://192.168.66.10?:31859 贾陷、https://192.168.66.20?:31859 、https://192.168.66.21 :31859?可以訪問(wèn)到NodePord節(jié)點(diǎn)

NodePort:

NodePort 是一種 Service 類型嘱根,它在每個(gè)節(jié)點(diǎn)上使用一個(gè)固定的端口(NodePort)來(lái)公開(kāi)服務(wù)髓废。

當(dāng)創(chuàng)建一個(gè) NodePort 類型的 Service 時(shí),Kubernetes 集群會(huì)為該 Service 在每個(gè)節(jié)點(diǎn)上選擇一個(gè)端口该抒,并將該端口映射到該 Service 的目標(biāo)端口(TargetPort)慌洪。

外部用戶可以通過(guò)訪問(wèn)任何節(jié)點(diǎn)的?<NodeIP>:<NodePort>?來(lái)訪問(wèn) Service,流量會(huì)被轉(zhuǎn)發(fā)到 Service 底層的 Pod凑保。

NodePort 類型的 Service 具有兩個(gè) IP 地址:一個(gè)是 Service 的 ClusterIP(集群內(nèi)部 IP)冈爹,用于在集群內(nèi)部訪問(wèn) Service;另一個(gè)是每個(gè)節(jié)點(diǎn)的 IP 地址欧引,用于在集群外部訪問(wèn) Service频伤。

ClusterIP:

ClusterIP 是另一種 Service 類型,它為 Service 分配一個(gè)虛擬 IP 地址(ClusterIP)芝此。

ClusterIP 類型的 Service 只能在集群內(nèi)部訪問(wèn)憋肖,外部用戶無(wú)法直接訪問(wèn)該 Service因痛。

ClusterIP 類型的 Service 將流量轉(zhuǎn)發(fā)到底層的 Pod,但不會(huì)公開(kāi)給集群外部岸更。

ClusterIP 類型的 Service 可以通過(guò)其他 Service 或 Ingress 對(duì)象來(lái)公開(kāi)給集群外部鸵膏。

在 Kubernetes 中,NodePort怎炊、Port 和 TargetPort 是 Service(服務(wù))對(duì)象中用于定義端口映射和流量轉(zhuǎn)發(fā)的不同屬性谭企。

NodePort:

NodePort 是 Service 對(duì)象的一個(gè)屬性,用于指定在每個(gè)節(jié)點(diǎn)上公開(kāi)服務(wù)的端口评肆。

它是一個(gè)大于30000且小于32767的整數(shù)值债查,由 Kubernetes 集群自動(dòng)分配。

外部用戶可以通過(guò)訪問(wèn)任何節(jié)點(diǎn)的?<NodeIP>:<NodePort>?來(lái)訪問(wèn) Service糟港,流量會(huì)被轉(zhuǎn)發(fā)到 Service 底層的 Pod攀操。

NodePort 是一種公開(kāi)服務(wù)給集群外部訪問(wèn)的方式。

Port:

Port 是 Service 對(duì)象的另一個(gè)屬性秸抚,用于指定 Service 對(duì)象的端口號(hào)速和。

它定義了 Service 對(duì)象的入口端口,用于接收流量剥汤。

Port 是 Service 對(duì)象對(duì)外公開(kāi)的端口颠放,可以在集群內(nèi)外使用該端口來(lái)訪問(wèn) Service。

TargetPort:

TargetPort 是 Service 對(duì)象的另一個(gè)屬性吭敢,用于指定將流量轉(zhuǎn)發(fā)到 Service 底層 Pod 的端口碰凶。

它定義了 Service 對(duì)象將流量轉(zhuǎn)發(fā)到哪個(gè) Pod 的端口。

TargetPort 是 Service 對(duì)象與后端 Pod 之間的通信端口鹿驼。

總結(jié):

NodePort 是用于在每個(gè)節(jié)點(diǎn)上公開(kāi)服務(wù)的端口欲低,用于集群外部訪問(wèn)。

Port 是 Service 對(duì)象對(duì)外公開(kāi)的端口畜晰,用于接收流量砾莱。

TargetPort 是 Service 對(duì)象將流量轉(zhuǎn)發(fā)到后端 Pod 的端口。

? 外網(wǎng)------------------------Service --------------------------pod

NodePort?? ? ------------? ? ??Port? ? ? ?? ------------? ???TargetPort?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凄鼻,一起剝皮案震驚了整個(gè)濱河市腊瑟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌块蚌,老刑警劉巖闰非,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異峭范,居然都是意外死亡财松,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門纱控,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)辆毡,“玉大人政敢,你說(shuō)我怎么就攤上這事∨咂龋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵唾那,是天一觀的道長(zhǎng)访锻。 經(jīng)常有香客問(wèn)我,道長(zhǎng)闹获,這世上最難降的妖魔是什么期犬? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮避诽,結(jié)果婚禮上龟虎,老公的妹妹穿的比我還像新娘。我一直安慰自己沙庐,他們只是感情好鲤妥,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著拱雏,像睡著了一般棉安。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上铸抑,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天贡耽,我揣著相機(jī)與錄音,去河邊找鬼鹊汛。 笑死蒲赂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的刁憋。 我是一名探鬼主播滥嘴,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼职祷!你這毒婦竟也來(lái)了氏涩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤有梆,失蹤者是張志新(化名)和其女友劉穎是尖,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體泥耀,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饺汹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了痰催。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兜辞。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡迎瞧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逸吵,到底是詐尸還是另有隱情凶硅,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布扫皱,位于F島的核電站足绅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏韩脑。R本人自食惡果不足惜氢妈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望段多。 院中可真熱鬧首量,春花似錦、人聲如沸进苍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)琅捏。三九已至生百,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間柄延,已是汗流浹背蚀浆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搜吧,地道東北人市俊。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像滤奈,于是被迫代替她去往敵國(guó)和親摆昧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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