k8s操作手冊(cè)資料_第1頁(yè)
k8s操作手冊(cè)資料_第2頁(yè)
k8s操作手冊(cè)資料_第3頁(yè)
k8s操作手冊(cè)資料_第4頁(yè)
k8s操作手冊(cè)資料_第5頁(yè)
已閱讀5頁(yè),還剩61頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

k8s操作手冊(cè)

前言:

1.藍(lán)色字體表示命令行命令,止式執(zhí)行時(shí)不要復(fù)制前面的#號(hào),#號(hào)只是提示應(yīng)該使用root

權(quán)限操作

2.綠色字體表示注釋,有時(shí)注釋太多就不用綠色表示了

3.注意:本文檔的所有操作請(qǐng)先在在測(cè)環(huán)境進(jìn)行實(shí)踐,請(qǐng)不要直接在真實(shí)的服務(wù)器中操作!

版權(quán)聲明:

本文檔以開源的形式發(fā)布,所有條款如下:

1.無擔(dān)保:作者不保證文檔內(nèi)容的準(zhǔn)確無誤,亦不承擔(dān)由于使用此文檔所導(dǎo)致的任何后果

2.自由使用:任何人可以出于任何目的而自由地閱讀/槌接/打印/轉(zhuǎn)教/引用/出創(chuàng)作此文檔,無需任何附加條件

若您閱讀/鏈接/打印/轉(zhuǎn)載/引用/再創(chuàng)作本文檔,則說明接受以上2個(gè)條款。

作者:李茂福

更新日期:2023-02-23

第。章、K8s集群搭建準(zhǔn)備工作

①k8s對(duì)系統(tǒng)要求,linux內(nèi)核在3.10及以上,服務(wù)器規(guī)格2核cpu,2G內(nèi)存及以上,可以

裝在虛擬機(jī)里,也可以裝在實(shí)體機(jī)上

②規(guī)劃主機(jī)名及ip

k8s的服務(wù)器使用固定ip地址,配置主機(jī)名,要求能解析相應(yīng)的主機(jī)名(master結(jié)點(diǎn))到對(duì)

應(yīng)的ip地址,可以使用內(nèi)網(wǎng)集群的dns服務(wù)器或?qū)懭?etc/host$文件里。如:

主機(jī)名ip地址

k8s-masterl1

k8s-master22

k8s-master33

k8s-node011

k8s-node022

規(guī)劃Pod網(wǎng)絡(luò):/16

規(guī)劃Service網(wǎng)絡(luò):/16

#hostnamectlset-hostnamek8s-masterl#設(shè)置主機(jī)名稱

#cat?/etc/hosts?EOF

1k8s-masterl

2k8s-master2

3k8s-master3

EOF

③關(guān)閉seLinux,若不會(huì)配置selinux,則可關(guān)閉

#sed-i7ASELINUX/s/enforcing/disabled/'/etc/selinux/config

#setenforce0

?ulimit設(shè)置

#cat?vi/etc/security/limits.conf?EOF

*softnofile10C0000

*hardnofile10C0000

*softcoreuniiirited

*hardcoreuniinited

*softmemlockuniimited

*softmemlockuniimited

*softnproc40960

*hardnproc40960

EOF

#要重啟系統(tǒng)才生效

⑤關(guān)閉swap

#cat?/etc/sysctl.conf?EOF

vm.swappiness=0

EOF

#swapon-s#查看swap掛載情況,如果有swap掛載,則需要去/etc/fstab里取消掛載

@NTP服務(wù)需要開啟,使用集群內(nèi)的ntpserver,確保集群時(shí)間的一致性

⑦設(shè)置網(wǎng)絡(luò)參數(shù)

#cat?/etc/sysctl.conf?EOF

net.bridge,bridge-nf-eall-ip6tables=1

net.bridge,bridge-nf-cal1-iptables=1

net.bridge.bridge-nf-cal1-arptables=1

net.ipv4.ip_forward=1

EOF

#前3行表示bridge設(shè)備在二層轉(zhuǎn)發(fā)時(shí)也去調(diào)用iptables配置的三層規(guī)則(包含conntrack)

#sysctl-p#加載配置

⑧防火墻放行端口

TCP:6443,2379,2380.10250~10252,30000~32767

UDP:8285,8472

★最好是允許整個(gè)k8s的node網(wǎng)段以及pod網(wǎng)段入站

#firewall-cmd-add-rich-rule='rulefamily="ipv4"sourceaddress="/24"accept'

#firewall-cmd--add-rich-rule='rulefamily="ipv4"sourceaddress="/16"accept'

#firewall-cmd-runtime-to-permanent

★如果有硬件交換機(jī)做acl或基于云的安全組做訪問控制,則可關(guān)閉服務(wù)器上的防火墻軟件

#firewall-cmd--list-all

⑨加載ipvs模塊

#cat?/etc/rc.d/rc.local?EOF

modprobe-ip_vs

modprobe-iD_vs_sh

modprobe-ipvsrr

modprobe-ip_vs_wrr

modprobe-nf_conntrack_ipv4

EOF

#chmod+x/etc/rc.d/rc.local#添加可執(zhí)行權(quán)限

⑩安裝docker-ce并設(shè)置為systemd去管理服務(wù)

#yuminstalldocker-cedocker-ce-clicontainerd.io-y

[root@localhost-]#yuminstalldocker-cedocker-ce-clicontainerd.io

#systemctlenabledocker

#systemctlstartdocker

#dockerinfo

★配置docker服務(wù)使用systend去管理(以及信任本地鏡像倉(cāng)庫(kù))

#vi/etc/docker/daemon.json

{

“data-root”:*/docker_data*,

*registry-mirrors*:[”:5443”],

“insecure-registries":["cofTee.com:5443”],

*exec-opts*:[*native.cgroupdriver=systemd*]

#保存

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

#dockerinfo

NativeOverlayDiff:true

LoggingDriver:json-file

?docker會(huì)修改防火墻規(guī)則,導(dǎo)致pod網(wǎng)絡(luò)不通

#vi/usr/lib/systemd/system/dccker.service

在[Service]下的ExecStart=/usr/bin/dockerd-Hfd:〃這行下面添加一行:

ExecStartPost=/usr/sbin/iptables-PFORWARDACCEPT

#保存,

#systemctldaemon-reload

#systemctlrestartdocker

★默認(rèn)還加了DOCKER-USER這個(gè)forward鏈,默認(rèn)全部return,導(dǎo)致不通,也得放開,具體

的看下iptables規(guī)則)

#cat?/etc/rc.d/rc.local?EOF

sleep60

/usr/sbin/iptables-IDOCKER1-s/0-jACCEPT

/usr/sbin/iptables-1DOCKER-USER1-s/0-jACCEPT

/usr/sbin/iptables-IDOCKER-ISOLATION-STAGE-11-sO.O.O.O/O-jACCEPT

/usr/sbin/iptables-IDOCKER-ISOLATION-STAGE-21-sO.O.O.O/O-jACCEPT

EOF

★最后重啟服務(wù)器

#init6

#Ismod|grep-eip_vs-enf_conntrack#檢查是否已加載ip_vs模塊

[root0k8s-master1Ismod|grep-eip_vs-enf_conntrack

ip_vs_wrr126970

ip_vs_rr126000

ip_vs_sh126880

ip_vs1454586ip_vs_rr,ip_vs_sh,ip_vs_wrr

nf_conntrack_netlink363960

nf_conntrack_ipv6189357

nf_defrag_ipv6351041nf_conntrack_ipv6

nf_conntrack_ipv4150537

nf_defrag_ipv4127291nf_conntrack_ipv4

nfconntrack1392649ipvs,nfnatrnfnatipv4rnfnatipv6,xtconntrac

ntracknetlink,nfconntrackipv4,nfconntrackipv6

nfnetlink145193ip_set,nf_conntrack_netlink

libcrc32c126444xfs,ip_vs,nf_nat,nf_conntrack

第1章、master結(jié)點(diǎn)安裝k8s組件

k8s的組件有部分是以二進(jìn)制文件形式安裝在服務(wù)器上的,如kubectl,kubeadm,

kubelet,kubernets-cni之類的,k8s官方已打包為rpm軟件包,可配置國(guó)內(nèi)的yum源去安裝,

而其他的組件則做成了docker鏡像包了,先安裝二進(jìn)制rpm軟件包,再dockerpull下較當(dāng)

前k8s版本需要的鏡像包

①安裝k8s二進(jìn)制組件

#cat?/etc/yum.repos.d/k8s-ali.repo?EOF

[k8s-ali]

name=k8s-a)i

baseurl=

enabled=l

gpgcheck=O

EOF

#或者使用google的源:

#cat?/etc/yum.repos.d/k8s-google.repo?EOF

[k8s-google]

name=k8s-goog1e

baseur1=

enabled=l

gpgcheck=O

EOF

#yuminstallkubeletkubeadmkubectlkubernetes-cni-y#安裝k8s二進(jìn)制組件

#systemctlenablekubelet

#systemctlstartkubelet

②k8s集群初始化

#kubeadmversion#先查看k8s版本

(rooc9k8s-mA9terl-]IIrubeadmversion__________

kubeadmversion:aversion.Info(Major:Minor:"19",GitVersion:QB^SfirGitConmit:"d360454

GoVersion:?g:>l?15.2?,C。叩iler:"gc..Platform:?linux/a?d64.}

#看GitVersion:"vl.l9.4"

#kubeadmconfigimageslist#查看k8s其他組件的docker鏡像名,默認(rèn)用

k8s.gcr.io/的鏡像源地址

k8s.ger.io/kube-apiserver:v1.19.4

k8s.ger.io/kube-controllei-manager:vl.19.4

k8s.ger.io/kube-scheduler:vl.19.4

k8s.ger.io/kube-proxy:vl.19.4

k8s.ger.io/pause:3.2

k8s.ger.io/etcd:3.4.13-0

k8s.ger.io/coredns:1.7.0

#可以先下載以上7個(gè)鏡像,傳到每臺(tái)k8s服務(wù)器上,再dockerload導(dǎo)入,或者使用內(nèi)部registry

倉(cāng)庫(kù)

★直接使用命令行方式初始化集群:(以下是非HA模式的master初始化,如果要部署高

可用集群,則參考第3章)

kubeadminit-kubernetes-version=vl.l9.4\

-apiserver-advertise-address=1\#apiserver地it

-pod-network-cidr=/16\#pod容器網(wǎng)段

-service-cidr=/16\#service網(wǎng)段,即clusterip網(wǎng)段

-ignore-preflight-errors=Swap#忽略swap未關(guān)閉而導(dǎo)致的檢查錯(cuò)誤

還可使用以下參數(shù)指定使用的鏡像源:(指定為集群內(nèi)部的docker鏡像源地址,要提前在

docker的daemon.json文件里配置信任)

-image-repository=":5443/k8s"

★使用配置文件方式去初始化集群(和上面命令行方式二選一)

#kubeadmcontigprintinit-defcults>/etc/kubeadm-init.yaml#榆出初始化配置文件,并編輯

#vi/etc/kubeadm-init.yaml

apiVersion:kubeadm.k8s.ic/vlbeta2

boolstrapTokens:

-groups:

-system:bootstrappers:kubeadm:defau1t-node-token

token:abedef.abedef

ttl:24h0m0s

usages:

-signing

-authentication

kind:InitConfiguration

localAPIEndpoint:

advertiseAddress:10.99.1.51

bindPort:6443

nodeRegistration:

criSocket:/var/run/dockershim.sock

name:k8s-masterl

taints:

:-effect:NoSchcdulc

key:node-role,kubernetes.io/master

apiServer:

timeoutForControlPlane:4m0s

apiVersion:kubeadm.k8s.ic/vlbeta2

certificatesDir:/etc/kubernetes/pki

clusterName:kubernetes

controllerManager:{}

dns:

type:CoreDNS

etcd:

local:

dataDir:/var/1ib/etcd

imageRepository:cof-lee.com:5443/k8s

kind:ClusterConfiguration

kubernetesVersion:vl.19.4

networking:

dnsDomain:cluster,local

serviceSubnet:10.7.0.0/16

podSubnct:10.244.0.0/16

scheduler:{}

apiVersion:kubelet.config.k8s.io/vlbetal

kind:KubeletConfiguration

eg?oupDri\er:systemd

faiISwapOn:False

#保存,(修改參數(shù)及新增最后5行)

#kubeadmconfigimageslist-config/etc/kubeadm-init.yaml#查看需要的鏡像

cof-lee.com:5443/k8s/kube-apiserver:v1.19.4

cof-lee.com:5443/k8s/kube-controller-manager:vl.19.4

cof-lee.com:5443/k8s/kube-scheduler:vl.19.4

cof-lee.com:5443/k8s/kube-proxy:vl.19.4

cof-lee.com:5443/k8s/pause:3.2

cof-lee.com:5443/k8s/eted:3.4.13-0

#叮見鏡像名已由默認(rèn)的k8s.g”io/換成了配置文件里指定的docker鏡像源

#kubeadminit-config/e:c/kubeadm-init.yaml#初始化集群

Tostartusingyourcluster,youneedtorunthefollowingasaregularuser:

mkdir-pSHOME/.kube

sudocp-i/etc/kubernetes/admin.confSHOME/.ktibe/config

sudochown$(id-u):$(id-g)$HOME/.kube/config

Youshouldnowdeployapodnetworktothecluster.

RunMk\ibcc^lapply-£[podnctwork].yamlRwx^honoo£theoptionslisted:

https://kubernetes?io/docs/concepts/cluster-administration/addons/

Thenyoucanjoinanynumberofworkernodesbyrunningthefollowingoneachasroot:

pcubeadmjoin10.99.1.51:6443--tok?n27g2rz.fel9tsn7e6oyt8un\

|—discov?ry-tok?n-ca-《?rF-qashsha256:a2818d9ac38a6bba?£4220《1498065658f8ad2bo439161

當(dāng)出現(xiàn)YourKubernetescontro-planehasinitializedsuccessfully!這行時(shí)說明初始化k8s成功了

記住最后2行命令,是用來讓node結(jié)點(diǎn)加入集群的命令(含token)

③k8s認(rèn)證文件.kube/config

在剛剛安裝好的master結(jié)點(diǎn)上有操作整個(gè)k8s集群的認(rèn)證文件/etc/kubernetes/admin.conf

把它復(fù)制到需要使用kubectl命令的節(jié)點(diǎn)上的$1101\/^/.1<此0/目錄下并命令為config即可

[root8k8s-master1,*]f

[root0k8s-master111/etc/kubernetes/admin.conf

-rw---------.1rootroot5562Apr3006:45/etc/kubernetes/admin.conf

(root@k8s-masterl-]#mkdir-/.kube

[root@k8s-master1*]#cp/etc/kubernetes/admin.conf*/.kube/config

#mkdir~/.kube

#cp/etc/kubernetes/admin.conf~/.kube/config

[root6k8s-master1*]*

NAMESPACENAMEREAD:tSTATUSRESTARTSAGE

kube-systemcoredns-67bd7b9595-5npsn0/1Ponding06m23s

kube-systemcoredns-67bd7b9595-kkszl0/1Pending06m23s

kube-systemetcd-k8s-masterl-1/1Running06m38s

kube-systemkube-apiserver-k8s-masterl1/1Running06m38s

kube-systemkube-controller-manager-k8s-masterl1/1Running06m386

kube-systemkube-proxy-rssd71/1Running06m23s

kube-systemkubo-schGduler-k8s-mastorl1/1Running06m38s

如果有2個(gè)coredns的pod未啟動(dòng)就緒,因?yàn)閜od網(wǎng)絡(luò)組件還未部署,部署后再查看,如果

還未用動(dòng),則可能是網(wǎng)絡(luò)不通,防火墻要放通pod容器網(wǎng)段入站。

?service使用ipvs模式

#kubectleditcmkube-proxy-nkube-system#編輯confgMap

找至ljkind:KubeProxyConfiguration這行往下第2行的mode:在""寫入ipvs,保存退出

42kind:KubeProxyConfiguration

43metricsBindAddress:""

44mode:Mipvs|j

45nodePortAddresses:null

46oomScoreAdj:null

(前提是在準(zhǔn)備工作時(shí)已加載ipvs內(nèi)核模塊)

再刪除kube-proxy的所有pod(即重啟這些pod)

#kubectlgetpod-nkube-system|grepkube-proxy#倉(cāng)看名為kube-proxy*:J{Jpod

[root@k8s-masterl~】

kube-proxy-rssd71/1Running01

#kubectldeletepodkube-proxy-rssd7-nkube-system#冊(cè)」除pod

開啟了ipvs模式的k8s結(jié)點(diǎn)上ipadd會(huì)看到名為kube-ipvsO的接口名

voxxdXX.ULUX.DVD1口X.D1.DX.口

4:dummy。:<BROADCAST/NOARP>mtu1500qdiscnoopstateDO

link/etherle:03:Qd:cf:df:59brdff:ff:ff:ff

:IWHWSSB:<BROAD(AST,NOARP>mtu1500qdiscnoopstat

link/etherda:a4::9:9e:ac:78brdff:ff:ff:ff

inet0/32scopeglobalkube-ipvsO

valid_lftforexerpreferred_lftforever

inet/32icopeglobalkube-ipvsO

vaiid_ltttoreverpreferred_lftforever

⑤部署flannel網(wǎng)絡(luò)插件

flannel源碼地址:

flannel使得跨主機(jī)的Pod之間能通信,底層實(shí)現(xiàn)是使用了vxlan

#wget

#先下載flannel插件的k8s部署yml文件

#vikube-flanneLyml

#將里面的net-conf.json下面的Network網(wǎng)段改為規(guī)劃的pod網(wǎng)段

Ii.

1263nct-conf.json:|

127i{-------------------------

128"Network":"/16"

1295--?■?Backend":4

130卜?丁?"Type":"vxlan"

131\\}

^■L-}

1QQ一

#默認(rèn)使用的docker鏡像是quay.io/coreos/的倉(cāng)庫(kù),可改為自己集群的docker倉(cāng)庫(kù)

168$-name:install-cni

169image:quay,io/coreos/flannel:vO.13.0

170command:

171-cp

172args:

173--f

174-/etc/kube-flannel/cni-conf.json

175-/etc/cni/net.d/10-flannel.conflist

176volumeMounts:

177-name:cni

178mountPath:/etc/cni/net.d

179-name:flannel-cfg

180mountPath:/etc/kube-flannel/

181containers:

182i-name:kube-flannel

183image:quay,io/coreos/flannel:vO.13.0

184command:

保存,退出

#kubectlapply-fkube-flannel.yml#應(yīng)用flannel配置

[root?k8s-master1kubectlapply-fkube-flannel.yml

podsecuritypolicy.policy/psp.flannel.unprivilegedcreated

clusterrole.rbac.authorization.k8s.io/flannelcreated

clusterrolebinding.rbac.authorization.k8s.io/flannelcreated

serviceaccount/flannelcreated

configmap/kube-flannel-cfgcreated

daemonset.apps/kube-flannel-ds|created|

如果pod啟動(dòng)失敗了,查看日志

#kubectllogskube-flannel-ds-24tfm-nkube-system

1043011:16:34.5059521main.go:518]DeterminingIPaddressofdefaultinterface

E043011:16:34.5060621main.go:204]Failedtofindanyvalidinterfacetouse:failedto

getdefaultinterface:Unabletofinddefaultroute

原因是沒有找到有效的網(wǎng)卡,因?yàn)槟J(rèn)沒有在kube-flannel.yml指定vxlan的網(wǎng)卡,所以它根

據(jù)iprouteshow去查找defaultvia這行的網(wǎng)卡(有默認(rèn)路由的網(wǎng)絡(luò)接口),但我們測(cè)試環(huán)境

的服務(wù)器沒有配置網(wǎng)關(guān),所以它找不到默認(rèn)路由,導(dǎo)致flannel啟動(dòng)失敗

110申"plugins":[

111■{

112"type":"flannel1,,

1136"delegateR:{

114"hairpinM^de”:true,

115"isDcfaultGatcwayl":true

1161

解決方法是給服務(wù)加個(gè)網(wǎng)關(guān)(默認(rèn)路由)或者在kube-flannel.yml里指定vxlan綁定的網(wǎng)K設(shè)

備(不建議直接綁定網(wǎng)絡(luò)接口名,因?yàn)椴煌姆?wù)器接口名不太一樣,可匹配ip網(wǎng)段所在

的網(wǎng)絡(luò)接口)

#kubectldelete-fkube-flannel.yml#先刪除III的部署pod

#再在kube-flannel.yml部署配置文件里的-/opt/bin/flanneld下面的

args:這行下面再添加一行配置--iface-regex=10.99.1.*匹配要通信的ip網(wǎng)段

I--2一

X8

13-name:kube-flannel

A8image::5443/k8s/flannel:v0.13.0

XI84

185"command:

A:/gpt/bin/flanneld

±186

8

17

188-----ip-masq

±8

T9-----kube-subnet-mgr

1cI-----iface-regex=10.取L*

1八

#最后重:新部署flannel的deployment文件

#kubectlapply-fkube-flannel.yml

[root@k8s-masterl*]fkubectlgetpod-A

NAMESPACENAMEREADYSTATUSRESTARTSAGE

kube-systemcoredns-67bd7b9595-5npsn0/lRunning049m

kube-systemcoredns-67bd7b9595-kkszl0/lRunning04

kube-systemetcd-k8s-masterll/lRunning049m

kube-systemkube-apiserver-k8s-masterll/lRunning049m

kube-systemkuba-ccn七rc】lar-mAnagar-kHa-mmarlRunning-049m

kxibe-systemJI?—Jo3ml£

----------------

#可見flannel的pod啟動(dòng)了

#ip-dlinkshowflannel.l#查看vxlan信息,默認(rèn)使用8472/udp端口

(root9k8s-masterl-*]#ip-dlinkshowflannel.1

6:flannel.l:<BROADCASTrMULTICAST,UP,LOWER_UP>mtu1450qdiscnoqueuestateUNKNOWN

:ff:ff:ff:ffproniscuity0

8t1■山小-report00dstport8472nolearningageing

oesumrxaddrgenmodeeui64nimtxqueues1numrxqueues1gso_nax_size65536gso_max_seg:

第2章、Node結(jié)點(diǎn)安裝k8s組件并加入集群

node結(jié)點(diǎn)同master結(jié)點(diǎn)一樣也要做準(zhǔn)備工作,都是第0章的內(nèi)容

準(zhǔn)備工作做好后,安裝k8s二進(jìn)制包

#yuminstallkubeletkubeadmkubectlkubernetes-cni-y#安裝k8s.二進(jìn)制組件

#systemctlenablekubelet

#systemctlstartkubelet

再加入K8S集群(使用安裝第一個(gè)k8s的master結(jié)點(diǎn)時(shí)的最后2行命令kubeadmjoinxxx)

不過這命令的token默認(rèn)是2小時(shí)有效期,可重新生成token再去node結(jié)點(diǎn)上執(zhí)行

masteC結(jié)點(diǎn)#kubeadmtokengenerate#重新生成token,下面這?半字符

ka8k02.9f2uowba7j21qv0g

masterl結(jié)點(diǎn)#kubeadmtokencreateka8k02.9f2uowba7j21qv0g-print-join-command

#生成加入集群的命令

(root!k8s-mastorl*]0卜卷

“043010:24:01.1068563S70Suonnon.go:148]WARNINGzcouldnotobtainAbindAddzossforthoAPXSorvorznodo

faultroutosfoundin"/proc/not/rouzo"or*/proc/n?t/ipvS-routo";using:0.0.0.0

“043010:24:01.2S84423S70Sconfigiot.go:348]WARNING:kuboadmcannotvalidatoconponontconfigsforAPIgrou

p?Ikubolot.confiq.k8c.iokubQproxy.confiq.kBs,io)

Ikuboactaijoin10.99.1.51:6443—tokonka8k02.9f2uowba?j21qv0g—discovory-tokon-ca-cort-hashsha2S6:a2818d9a

|c38a6bba?f4220c849806S6S8f8ad2b04391501220b?3?11006c0f97

kroot?k8ig-asC0r1~】f■

再?gòu)?fù)制(kubeadmjoinxxxxx)命令到node結(jié)點(diǎn)上執(zhí)行:

node結(jié)點(diǎn)執(zhí)行#kubeadmjoin1039.1.51:5443-xokenka8k02.9f2uowba7j2iqv0g\

??discovery-token-cacert-hashSha256:a2818d9ac38a6bbaef4220cf8ad2bbe3ell006c0f97

出現(xiàn):Thisnodehasjoinedthecluster:這句提示說明加入成功,再去master結(jié)點(diǎn)上查看

[root@k8s-masterlkubectlgetnode#杳看集聚的所有結(jié)點(diǎn)

NAMESTATUSROLESAGEVERSION

k8s-masterlReadymaster3h49mvl.19.4

k8s-node01Ready<ncne>16svl.19.4#剛剛加入集群的node結(jié)點(diǎn)

★將node結(jié)點(diǎn)移出k8s集群

master#kubectltaintnode給點(diǎn)名keyrm:NoExecute也先打上污點(diǎn),驅(qū)逐pod

等幾分鐘,確認(rèn)目標(biāo)node結(jié)點(diǎn)上沒有工作pod運(yùn)行后,再刪除

master結(jié)點(diǎn)上#kubectldeletenodes結(jié)點(diǎn)、名#將目標(biāo)結(jié)點(diǎn)從集機(jī)里刪除

node結(jié)點(diǎn)上#kubeadmreset#node結(jié)點(diǎn)上重置kubeadm配置

第3章、K8s高可用集群搭建

前面第1章只裝了一臺(tái)master結(jié)點(diǎn),如果它出故障了,則整個(gè)k8s集群都不可用了,

需要部署至少3臺(tái)master結(jié)點(diǎn),準(zhǔn)備工作一樣都同第0章,只是還要規(guī)劃一個(gè)vip(虛擬ip)

在master的集群初始化這步需要指定control-plane-endpoint地力上為規(guī)戈ij的vip,前端的vip

可以使用任何負(fù)載工具軟件,反向代理到后端的每臺(tái)master結(jié)點(diǎn)的6443/tcp端口即可。

高可用集群拓?fù)鋱D:

反向轉(zhuǎn)發(fā)到

1:6443master1

客戶送訪問

4:6443

反向轉(zhuǎn)發(fā)到

2:6443

VIP設(shè)備:監(jiān)聽6449tcp

vip:4

VIP設(shè)備本身可有多臺(tái),master2

反向轉(zhuǎn)發(fā)到

虛擬出一個(gè)vip來

3:6443

★先配置HA高可用的反向代理

本例中vip為4(三臺(tái)masterip為1~53)使用haproxy做反向代理

frontendk8s_api_tcp_6443

bind*:6443

modetcp

default_backendmy_k8s_6443

backendmy_k8s_6443

modetcp

balanceroundrobin

serversi1:6443checkweight1inter2000rise2fall2

servers22:6443checkweight1inter2000rise2fall2

servers33:6443checkweight1inter2000rise2fall2

#如果vip設(shè)備就在這3臺(tái)master結(jié)點(diǎn)上,則監(jiān)聽的端口不能為6443,否則沖突了,可改為

其他端口號(hào)

★先安裝masterl

★使用命令行方式初始化集群

kubeadminit-kubernetes-version=vl.l9.4\

--apiserver-advertise-address=1\#apiserver十也址,masterl的nodeip

--pod-network-cidr=/16\#pod容器網(wǎng)段

-service-cidr=/16\#service網(wǎng)段,即clusterip網(wǎng)段

-image-repository=":5443/k8s"\#指定鏡像源

-control-plane-endpoint=4:6443\#指定控制面板vip與端口號(hào)

-ignore-preflight-errors=Swap\#忽略swap未關(guān)閉而導(dǎo)致的檢瓷錯(cuò)誤

-upload-certs#在后續(xù)執(zhí)行加入節(jié)點(diǎn)時(shí)自動(dòng)分發(fā)同步證巾

文件

★使用配置文件方式去初始化集群(和上面命令行方式二選一)

#kubeadmconfigprintinit-defcults>/etc/kubeadm-init.yaml#輸出初始化配置文件并編輯

#vi/etc/kubeadm-init.yaml

apiVersion:kubeadm.k8s.ic/vlbeta2

bootstrapTokens:

-groups:

-system:bootstrappers:kubeadm:default-node-token

token:abcdef.abcdef

111:24h0m0s

usages:

-signing

-authenlication

kind:InitConfiguration

localAPIEndpoint:

advertiseAddress:10.99.1.51

bindPort:6443

nodeRegistration:

criSocket:/var/run/dockershim.sock

name:k8s-masterl

taints:

-effect:NoSchedule

key:node-role,kubernetes.io/master

apiServer:

timenutForContro1P1ane:4m0s

apiVersion:kubeadm.k8s.ic/vlbeta2

certificatesDir:/etc/kubernetes/pki

clusterName:kubernetes

contolFUanc:dpoint.10.99.1.54;0443"

conlro11erManager:(}

dns:

type:CoreDNS

ctcd:

local:

dataDir:/var/1ib/etcd

imageRepository:cof-lee.com:5443/k8s

kind:ClustcrConfiguration

kubernetesVersion:vl.19.4

networking:

dnsDomain:cluster,local

serviceSubnet:10.7.0.0/16

podSubnet:10.244.0.0/16

scheduler:{}

apiVersion:kubelet.config.k8s.io/vlbetal

kind:KubeletConfiguraiion

cgroupDriver:systemd

failSwapOn:False

#保存

#kubeadmconfigimageslist-config/etc/kubeadm-init.yaml#杳行需'法的鏡像

#kubeadminit--config/e:c/kubeadm-init.yaml--upload-cels#初始化集群

KunKuoectiapply-tipounetworKj.yami-witnoneortneoptionslistedat:

hl【ps://kubpmeles.io/docs/concepts/cluster-adminislration/addons/

Youcannowjoinanynumberofthecontrol-planenoderunningthefollowingcommandoneachasroot:

liscoverjr-token-ca-cert-hashsha.

-control-plane--certificate-key9b77643809b701522a61c109d42d?

Asasjfetujrd,uploaded-certswillbedeletedintwohours;Ifnecessary?youcanuse

Mkubeadminitphaseupload-certs-upload-certsMtoreloadcertsafterward.

Thenyoucanjoinanynumberofworkernodesbyrunningthefollowingoneachasroot:

kubeadmjoin4:6443—tokenabedef.0123456789abcdef\

--discoverj^token-ca-cert-hashsha256:63b5f34842ec20dbl2fl9f6f4ca535b03€498e95842b97b452a04f9dc94bll51

Node結(jié)點(diǎn)加入集群時(shí)執(zhí)行的命令

kubeadmjoin4:6443-tokenabcdef.abcdef\

-discovery-token-wcert-hashsha256:63b5f34842ec2Odbl2fl9f6f4ca535bO3e498e95842b97b452aO4f9dc94bU51\

-control-plane--certificate-key9b776438>J9b701522a61cl09d42dcclb93edcd5a2e5d0cbbc0e619

kubeadmjoin4:6443-tokenabcdef.abcdef\

-discovery-token-ca-cert-hashsha256:63b5f34842ec20dbl2fl9f6f4ca535b03e498e95842b97b452a04f9dc94bll51

#mkdir~/.kube

#cp/etc/kubernetes/admin.conf~/.kube/config

★再參考第一章的以下2步:

?service使用ipvs模式

⑤部署flannel網(wǎng)絡(luò)插件

完成以上配置,再將master2,master3加入集群

#如果執(zhí)行加入命令時(shí)提示certificate-key過期了,執(zhí)行以下命令更新:

#kubeadminitphaseupload-certs-upload-certs

W050812:00:11.26548839063configset.go:348]WARNING:kubeadmcannot

nfig.k8s.iokubeproxy.config.k8s.io]

[upload-certs]StoringthecertificatesinSecret"kubeadm-certs"inthe

[upload?certs]Usingcertificatekey:

■「rcctaicclhcL■

將新生成的certificatekey替換II」的

#kubectl-nkube-systemgetcmkubeadm-config-oyaml#杳看集群配置

★etcd的配置更新

第3個(gè)master加入集群后,其etcd的配置是有3臺(tái)成員結(jié)點(diǎn),而前面的master!上面只有

一臺(tái)的信息,ma

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論