使用kubeadm快速部署一個K8s集群

kubeadm是官方社區(qū)推出的一個用于快速部署kubernetes集群的工具缺厉。

這個工具能通過兩條指令完成一個kubernetes集群的部署:

# 創(chuàng)建一個 Master 節(jié)點
$ kubeadm init

# 將一個 Node 節(jié)點加入到當前集群中
$ kubeadm join <Master節(jié)點的IP和端口 >

1. 安裝要求

在開始之前,部署Kubernetes集群機器需要滿足以下幾個條件:

  • 一臺或多臺機器人灼,操作系統(tǒng) CentOS7.x-86_x64
  • 硬件配置:2GB或更多RAM,2個CPU或更多CPU葛账,硬盤30GB或更多
  • 可以訪問外網(wǎng)椿胯,需要拉取鏡像,如果服務器不能上網(wǎng)魂爪,需要提前下載鏡像并導入節(jié)點
  • 禁止swap分區(qū)

2. 準備環(huán)境

kubernetes?????????
角色 IP
k8s-master 192.168.31.61
k8s-node1 192.168.31.62
k8s-node2 192.168.31.63
# 關閉防火墻
systemctl stop firewalld
systemctl disable firewalld

# 關閉selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 臨時

# 關閉swap
swapoff -a  # 臨時
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

# 根據(jù)規(guī)劃設置主機名
hostnamectl set-hostname <hostname>

# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.31.71 k8s-master
192.168.31.72 k8s-node1
192.168.31.73 k8s-node2
EOF

# 將橋接的IPv4流量傳遞到iptables的鏈
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system  # 生效

# 時間同步
yum install ntpdate -y
ntpdate time.windows.com

3. 所有節(jié)點安裝Docker/kubeadm/kubelet

Kubernetes默認CRI(容器運行時)為Docker先舷,因此先安裝Docker。

3.1 安裝Docker

$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce-18.06.1.ce-3.el7
$ systemctl enable docker && systemctl start docker
$ docker --version
Docker version 18.06.1-ce, build e68fc7a
$ cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

3.2 添加阿里云YUM軟件源

$ cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

3.3 安裝kubeadm滓侍,kubelet和kubectl

由于版本更新頻繁蒋川,這里指定版本號部署:

$ yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
$ systemctl enable kubelet

4. 部署Kubernetes Master

在192.168.31.61(Master)執(zhí)行。

$ kubeadm init \
  --apiserver-advertise-address=192.168.31.61 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.18.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16

由于默認拉取鏡像地址k8s.gcr.io國內(nèi)無法訪問撩笆,這里指定阿里云鏡像倉庫地址捺球。

使用kubectl工具:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl get nodes

5. 加入Kubernetes Node

在192.168.31.62/63(Node)執(zhí)行。

向集群添加新節(jié)點夕冲,執(zhí)行在kubeadm init輸出的kubeadm join命令:

$ kubeadm join 192.168.31.61:6443 --token esce21.q6hetwm8si29qxwn \
    --discovery-token-ca-cert-hash sha256:00603a05805807501d7181c3d60b478788408cfe6cedefedb1f97569708be9c5

默認token有效期為24小時氮兵,當過期之后,該token就不可用了歹鱼。這時就需要重新創(chuàng)建token泣栈,操作如下:

kubeadm token create --print-join-command

6. 部署CNI網(wǎng)絡插件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
sed -i -r "s#quay.io/coreos/flannel:.*-amd64#lizhenliang/flannel:v0.11.0-amd64#g" kube-flannel.yml

默認鏡像地址無法訪問,sed命令修改為docker hub鏡像倉庫醉冤。

kubectl apply -f kube-flannel.yml

kubectl get pods -n kube-system
NAME                          READY   STATUS    RESTARTS   AGE
kube-flannel-ds-amd64-2pc95   1/1     Running   0          72s

7. 測試kubernetes集群

在Kubernetes集群中創(chuàng)建一個pod秩霍,驗證是否正常運行:

$ kubectl create deployment nginx --image=nginx
$ kubectl expose deployment nginx --port=80 --type=NodePort
$ kubectl get pod,svc

訪問地址:http://NodeIP:Port

8. 部署 Dashboard

$ wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml

默認Dashboard只能集群內(nèi)部訪問篙悯,修改Service為NodePort類型蚁阳,暴露到外部:

$ vi recommended.yaml
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001
  type: NodePort
  selector:
    k8s-app: kubernetes-dashboard

kubectl apply -f recommended.yaml
$ kubectl get pods,svc -n kubernetes-dashboard
NAME                                             READY   STATUS              RESTARTS   AGE
pod/dashboard-metrics-scraper-694557449d-z8gfb   1/1     Running             0          2m18s
pod/kubernetes-dashboard-9774cc786-q2gsx         1/1     Running             0          2m19s

NAME                                TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE
service/dashboard-metrics-scraper   ClusterIP   10.0.0.141   <none>        8000/TCP        2m19s
service/kubernetes-dashboard        NodePort    10.0.0.239   <none>        443:30001/TCP   2m19s

訪問地址:https://NodeIP:30001

創(chuàng)建service account并綁定默認cluster-admin管理員集群角色:

kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

使用輸出的token登錄Dashboard。

image
image
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸽照,一起剝皮案震驚了整個濱河市螺捐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌矮燎,老刑警劉巖定血,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诞外,居然都是意外死亡澜沟,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門峡谊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茫虽,“玉大人刊苍,你說我怎么就攤上這事”粑觯” “怎么了正什?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長号杏。 經(jīng)常有香客問我婴氮,道長,這世上最難降的妖魔是什么盾致? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任主经,我火速辦了婚禮,結果婚禮上绰上,老公的妹妹穿的比我還像新娘旨怠。我一直安慰自己,他們只是感情好蜈块,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布鉴腻。 她就那樣靜靜地躺著,像睡著了一般百揭。 火紅的嫁衣襯著肌膚如雪爽哎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天器一,我揣著相機與錄音课锌,去河邊找鬼。 笑死祈秕,一個胖子當著我的面吹牛渺贤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播请毛,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼志鞍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了方仿?” 一聲冷哼從身側響起固棚,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仙蚜,沒想到半個月后此洲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡委粉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年呜师,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贾节。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡汁汗,死狀恐怖趟紊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碰酝,我是刑警寧澤霎匈,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站送爸,受9級特大地震影響铛嘱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜袭厂,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一墨吓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纹磺,春花似錦帖烘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至式矫,卻和暖如春乡摹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背采转。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工聪廉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人故慈。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓板熊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親察绷。 傳聞我的和親對象是個殘疾皇子干签,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

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