




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Module 6 Unit 1 You have got a letter from New York(教學(xué)設(shè)計(jì))-2024-2025學(xué)年外研版(三起)英語六年級(jí)上冊(cè)
- 2025年高性能傳輸線纜項(xiàng)目合作計(jì)劃書
- 滄州學(xué)校塑膠跑道施工方案
- 第三單元 物質(zhì)構(gòu)成的奧秘 課題2 原子的結(jié)構(gòu) 教學(xué)設(shè)計(jì)-2024-2025學(xué)年九年級(jí)上學(xué)期化學(xué)(人教版2024)標(biāo)簽標(biāo)題
- 五年級(jí)下冊(cè)語文要素歸納
- Unit1 Whats he like(教學(xué)設(shè)計(jì))五年級(jí)英語上冊(cè)同步備課系列人教PEP版·2024
- 2025年錢包、座套相關(guān)皮革制品項(xiàng)目合作計(jì)劃書
- 三年級(jí)數(shù)學(xué)因數(shù)中間或末尾有零的乘法自我檢測(cè)模擬題
- 三年級(jí)數(shù)學(xué)兩位數(shù)乘一位數(shù)計(jì)算題過關(guān)測(cè)試模擬題帶答案
- Unit 5 Here and now Section A 1a ~ pronunciation 教學(xué)設(shè)計(jì) -2024-2025學(xué)年人教版(2024)七年級(jí)英語下冊(cè)
- 市政道路改造工程施工組織設(shè)計(jì)(最新)11623
- 疑似預(yù)防接種異常反應(yīng)(AEFI)監(jiān)測(cè)與處理PPT課件
- 電纜生產(chǎn)所需原材料采購(gòu)規(guī)范匯總
- ANKYLOS機(jī)械并發(fā)癥處理方法
- 道路橋梁實(shí)習(xí)日記12篇
- 第十章運(yùn)動(dòng)代償
- 氬弧焊機(jī)保養(yǎng)記錄表
- 《企業(yè)經(jīng)營(yíng)統(tǒng)計(jì)學(xué)》課程教學(xué)大綱
- 如何做好健康沙龍
- 交通安全設(shè)施養(yǎng)護(hù)技術(shù).ppt
- 環(huán)錘式碎煤機(jī)使用說明書(參考)
評(píng)論
0/150
提交評(píng)論