部署單點k8s集群(非翻墻)

基礎(chǔ)環(huán)境:centos7
當(dāng)前k8s版本: v1.13
集群清單:

節(jié)點 IP
master 192.168.0.101
worker01 192.168.0.102

1. 準(zhǔn)備工作

創(chuàng)建服務(wù)器的時候矛洞,系統(tǒng)盤不要小于50G,另外再分配個不小于100G的獨立硬盤,內(nèi)存不要小于16G(master節(jié)點配置可以適當(dāng)調(diào)低,內(nèi)存8G,硬盤20G+20G)

  • 關(guān)閉selinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
  • 關(guān)閉swap

使用free指令查看系統(tǒng)swap是否有開啟拴孤,如果開啟了,編輯 /etc/fstab甲捏,直接刪除掉swap列

  • 給docker分配獨立硬盤
mkdir -p /var/lib/docker
fdisk -l
fdisk /dev/vdb     # n p 3個回車 w
mkfs.ext4 /dev/vdb1 
cat << EOF >> /etc/fstab
/dev/vdb1 /var/lib/docker ext4 defaults 1 1
EOF
mount -a
  • 內(nèi)核參數(shù)修改
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
  • 防火墻端口開放
    一般生產(chǎn)環(huán)境可以簡單的關(guān)閉防火墻來開放接口演熟,最后通過云管理平臺來約束物理節(jié)點的端口訪問
service firewalld stop
systemctl disable firewalld

2. 安裝 k8s組件

  • kubeadm: 用來創(chuàng)建集群的工具,隨k8s版本升級司顿,易用性會越來越強
  • kubelet: 以服務(wù)模式運行芒粹,可以理解為k8s在物理節(jié)點上的代理,k8s通過它來控制分配在節(jié)點上的所有容器
  • kubectl: 日常和k8s對話的工具
# 使用阿里鏡像
cat <<EOF > /etc/yum.repos.d/k8s.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

cat >/etc/sysconfig/kubelet<<EOF
KUBELET_EXTRA_ARGS="--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1"
EOF
# 安裝
yum install -y docker kubelet kubeadm kubectl
systemctl enable docker kubelet

建議安裝成功以后大溜,打一個基礎(chǔ)鏡像化漆,后面的物理節(jié)點可以直接克隆鏡像

3. 部署master節(jié)點

k8s的節(jié)點名稱顯示都是使用節(jié)點的主機名,所以所有的物理節(jié)點都需要按照集群架構(gòu)設(shè)置合理的主機名

hostnamectl set-hostname master

kubeadm init是初始化指令钦奋,目前的版本座云,k8s初始化的時候,第一件事是通知docker拉鏡像付材,時間會比較長朦拖,命令行也不會有提示,官方給的建議厌衔,先執(zhí)行如下指令預(yù)加載鏡像
官方推薦使用flannel做為集群內(nèi)部網(wǎng)絡(luò)模式璧帝,設(shè)置cidr為10.244.0.0/16,k8s將使用flannel模式初始化集群

cat <<EOF > kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1alpha3
kind: ClusterConfiguration
kubernetesVersion: stable
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
networking:
    podSubnet: "10.244.0.0/16"
EOF
kubeadm config images pull --config kubeadm-config.yaml
kubeadm init --config kubeadm-config.yaml

在初始化過程中如果出現(xiàn)錯誤富寿,必須執(zhí)行kubeadm reset 重置才能再次初始化睬隶,安裝成功以后會出現(xiàn)如下消息提示

Your Kubernetes master 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

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/

You can now join any number of machines by running the following on each node
as root:

  kubeadm join 192.168.0.101:6443 --token yu6t36.bitufx18dfy10od6 --discovery-token-ca-cert-hash sha256:bb247916192cd029421de621d7af3fee0894f96b77f216b8317f25d2c319ed52

提示里面的信息很重要锣夹!

其中kubeadm join 是工作節(jié)點加入集群的指令,第一次創(chuàng)建集群需要把這行代碼復(fù)制下來苏潜,后面需要使用到银萍,當(dāng)然萬一丟失了也沒關(guān)系,后面會介紹補救方法恤左。

我們需要將k8s系統(tǒng)生產(chǎn)的admin.conf拷貝到~/.kube/config砖顷,kubectl才能正常工作,否則kubectl執(zhí)行的錯誤如下:

[root@master ~]# kubectl get nodes
The connection to the server localhost:8080 was refused - did you specify the right host or port?

正常的執(zhí)行結(jié)果如下:

[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES    AGE   VERSION
master   NotReady   master   12m   v1.13.1

接下來需要安裝flannel組件赃梧,這樣master節(jié)點才能變成Ready狀態(tài)

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

執(zhí)行正常屏幕會輸出

clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.extensions/kube-flannel-ds-amd64 created
daemonset.extensions/kube-flannel-ds-arm64 created
daemonset.extensions/kube-flannel-ds-arm created
daemonset.extensions/kube-flannel-ds-ppc64le created
daemonset.extensions/kube-flannel-ds-s390x created

等一會使用kubectl可以看到master已經(jīng)處于Ready狀態(tài)

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE     VERSION
master   Ready    master   6m29s   v1.13.1

4. 工作節(jié)點加入集群

使用鏡像創(chuàng)建工作節(jié)點,記得將節(jié)點改個名字

hostnamectl set-hostname worker01

使用上面master初始化成功屏幕輸出的kubeadm join...指令即可加入集群

kubeadm join 192.168.0.101:6443 --token yu6t36.bitufx18dfy10od6 --discovery-token-ca-cert-hash sha256:bb247916192cd029421de621d7af3fee0894f96b77f216b8317f25d2c319ed52

此步一般不會出錯豌熄,屏幕會出如下提示

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the master to see this node join the cluster.

我們回到master上去看看節(jié)點狀態(tài)

[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES    AGE     VERSION
master   Ready      master   17m     v1.13.1
worker01   NotReady   <none>   3m30s   v1.13.1

屏幕顯示節(jié)點已經(jīng)正常加入了授嘀,但是狀態(tài)是NotReady,此時master會通知節(jié)點創(chuàng)建2個pod(kube-flannel, kube-proxy)锣险,我們在master上可以通過kubectl觀測pod的創(chuàng)建進度

[root@master ~]# kubectl get pods -n kube-system -o wide |grep worker
kube-flannel-ds-amd64-pd9xv      1/1     Running   0          16m   192.168.0.102   worker01   <none>
kube-proxy-b4pgl                 1/1     Running   0          16m   192.168.0.102   worker01   <none>

pod處于running以后蹄皱,工作節(jié)點狀態(tài)就會變成Ready了

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE     VERSION
master   Ready    master   20m     v1.13.1
worker01   Ready    <none>   7m11s   v1.13.1
  • 如果kubeadm join需要的token參數(shù)過期或者遺失怎么辦:

在master上執(zhí)行

[root@master ~]# kubeadm token create
TOKEN                     TTL       EXPIRES                     USAGES                   DESCRIPTION   EXTRA GROUPS
qbyhi6.p8zg6r3eir4xqqmn   23h       2018-11-16T16:37:19+08:00   authentication,signing   <none>        system:bootstrappers:kubeadm:default-node-token
[root@master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
dfc5b832302e76b277ca2bf79ba86d43d5337d15b3abdaf90be052ad58f0f2a9

拼接出來的join指令如下

kubeadm join --token qbyhi6.p8zg6r3eir4xqqmn --discovery-token-ca-cert-hash sha256:dfc5b832302e76b277ca2bf79ba86d43d5337d15b3abdaf90be052ad58f0f2a9  192.168.0.101:6443
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市芯肤,隨后出現(xiàn)的幾起案子巷折,更是在濱河造成了極大的恐慌,老刑警劉巖崖咨,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锻拘,死亡現(xiàn)場離奇詭異,居然都是意外死亡击蹲,警方通過查閱死者的電腦和手機署拟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歌豺,“玉大人推穷,你說我怎么就攤上這事±噙郑” “怎么了馒铃?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長痕惋。 經(jīng)常有香客問我区宇,道長,這世上最難降的妖魔是什么值戳? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任萧锉,我火速辦了婚禮,結(jié)果婚禮上述寡,老公的妹妹穿的比我還像新娘柿隙。我一直安慰自己叶洞,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布禀崖。 她就那樣靜靜地躺著衩辟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪波附。 梳的紋絲不亂的頭發(fā)上艺晴,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音掸屡,去河邊找鬼封寞。 笑死,一個胖子當(dāng)著我的面吹牛仅财,可吹牛的內(nèi)容都是我干的狈究。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼盏求,長吁一口氣:“原來是場噩夢啊……” “哼抖锥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起碎罚,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤磅废,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后荆烈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拯勉,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年憔购,在試婚紗的時候發(fā)現(xiàn)自己被綠了谜喊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡倦始,死狀恐怖斗遏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鞋邑,我是刑警寧澤诵次,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站枚碗,受9級特大地震影響逾一,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肮雨,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一遵堵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦陌宿、人聲如沸锡足。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舶得。三九已至,卻和暖如春爽蝴,著一層夾襖步出監(jiān)牢的瞬間沐批,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工蝎亚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留九孩,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓发框,卻偏偏與公主長得像躺彬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缤底,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

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