k8s 環(huán)境搭建

k8s 安裝指南

介紹

  • kubectl用于運行Kubernetes集群命令的管理工具。
  • kubelet是主要的節(jié)點代理,它會監(jiān)視已分配給節(jié)點的pod裸违,具體功能:
  • kubeadm Kubeadm 是一個工具

本次安裝版本為:

  • Kubernetes v1.19.2
  • Docker

環(huán)境準備

  • 操作系統(tǒng)

  • 集群配置

    IP 角色 cpu 內(nèi)存
    192.168.31.121 k8smaster 1 4G
    192.168.31.131 k8snode1 1 4G
    192.168.31.132 k8snode2 1 4G

192.168.31.121 k8smaster
192.168.31.131 k8snode1
192.168.31.132 k8snode2

系統(tǒng)配置

  • 禁用selinux
  • 禁用swap
  • 設(shè)置rpm鏡像源

安裝docker

  • 設(shè)置containerd.io源
     wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
     yum install containerd.io-1.2.6-3.3.el7.x86_64.rpm
    
  • 安裝docker
    curl -sSL https://get.daocloud.io/docker | sh
    
  • 設(shè)置阿里云加速器并設(shè)置docker以systemd驅(qū)動啟動
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "exec-opts":["native.cgroupdriver=systemd"],   
    "log-driver": "json-file",
        "log-opts": {
        "max-size": "100m"
     },
    "storage-driver": "overlay2",
    "storage-opts": [
        "overlay2.override_kernel_check=true"
    ], 
    "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  • 啟動容器
    sudo systemctl restart docker
    

添加阿里kubernetes源

所有電腦

# 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

k8s master 安裝

yum install kubectl kubelet kubeadm
systemctl enable kubelet

初始化集群

kubeadm init --kubernetes-version=1.19.2  \
--apiserver-advertise-address=192.168.31.121   \
--image-repository registry.aliyuncs.com/google_containers  \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16

參數(shù)說明:

  • apiserver-advertise-address: k8smaster ip地址
  • image-repository 用來拉取 k8s 的鏡像倉庫地址
  • service-cidr 指明用 Master 的哪個 interface 與 Cluster 的其他節(jié)點通信。
  • pod-network-cidr Pod 網(wǎng)絡(luò)的范圍

初始化完畢返回如下信息表示成功:

Your Kubernetes control-plane 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/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.31.121:6443 --token 8gkv2e.futyk4tc5ekh9p1g \
    --discovery-token-ca-cert-hash sha256:55931b102e704c98ce1acc63a0052789579ddbc9c2dcfccbc8fb7f9bb8f51573 

查看狀態(tài)

kubectl get node
kubectl get pod --all-namespaces

node節(jié)點為NotReady冕香,因為corednspod沒有啟動,缺少網(wǎng)絡(luò)pod

安裝網(wǎng)絡(luò)

這里選擇calico網(wǎng)絡(luò)

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

安裝完網(wǎng)絡(luò)后后豫,等待片刻查看狀態(tài)發(fā)現(xiàn)都啟動成功了悉尾。

[root@k8smaster .kube]# kubectl get pod --all-namespaces
NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-c9784d67d-8p2qd   1/1     Running   0          2m59s
kube-system   calico-node-drm2r                         1/1     Running   0          2m59s
kube-system   coredns-6d56c8448f-gp4n9                  1/1     Running   0          14m
kube-system   coredns-6d56c8448f-hsmkm                  1/1     Running   0          14m
kube-system   etcd-k8smaster                            1/1     Running   0          14m
kube-system   kube-apiserver-k8smaster                  1/1     Running   0          14m
kube-system   kube-controller-manager-k8smaster         1/1     Running   0          14m
kube-system   kube-proxy-n2vzn                          1/1     Running   0          14m
kube-system   kube-scheduler-k8smaster                  1/1     Running   0          14m
[root@k8smaster .kube]# kubectl get node
NAME        STATUS   ROLES    AGE   VERSION
k8smaster   Ready    master   15m   v1.19.2

安裝dashborad

  • 安裝
    wget  https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
    kubectl apply -f recommended.yaml
    
  • 自定義token生成
    mkdir dashboard-certs
    cd dashboard-certs/
    #創(chuàng)建命名空間
    kubectl create namespace kubernetes-dashboard
    # 創(chuàng)建key文件
    openssl genrsa -out dashboard.key 2048
    #證書請求
    openssl req -days 36000 -new -out dashboard.csr -key dashboard.key -subj '/CN=dashboard-cert'
    #自簽證書
    openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
    #創(chuàng)建kubernetes-dashboard-certs對象
    kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard
    
  • 設(shè)置管理員
#創(chuàng)建賬號:
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: dashboard-admin
  namespace: kubernetes-dashboard

---
#為用戶分配權(quán)限:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dashboard-admin-bind-cluster-role
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: dashboard-admin
  namespace: kubernetes-dashboard

使管理員生效

kubectl apply dashboard-admin.yaml
  • 查看dashboard-admin賬戶的登錄 token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')

工作站點接入

  1. 將主節(jié)點中的【/etc/kubernetes/admin.conf】文件拷貝到從節(jié)點相同目錄下
  2. 執(zhí)行腳本
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

參考文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市挫酿,隨后出現(xiàn)的幾起案子构眯,更是在濱河造成了極大的恐慌,老刑警劉巖早龟,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惫霸,死亡現(xiàn)場離奇詭異猫缭,居然都是意外死亡,警方通過查閱死者的電腦和手機壹店,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門猜丹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人硅卢,你說我怎么就攤上這事居触。” “怎么了老赤?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長制市。 經(jīng)常有香客問我抬旺,道長,這世上最難降的妖魔是什么祥楣? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任开财,我火速辦了婚禮,結(jié)果婚禮上误褪,老公的妹妹穿的比我還像新娘责鳍。我一直安慰自己,他們只是感情好兽间,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布历葛。 她就那樣靜靜地躺著,像睡著了一般嘀略。 火紅的嫁衣襯著肌膚如雪恤溶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天帜羊,我揣著相機與錄音咒程,去河邊找鬼。 笑死讼育,一個胖子當(dāng)著我的面吹牛帐姻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播奶段,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼饥瓷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了痹籍?” 一聲冷哼從身側(cè)響起扛伍,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎词裤,沒想到半個月后刺洒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鳖宾,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年逆航,在試婚紗的時候發(fā)現(xiàn)自己被綠了鼎文。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡因俐,死狀恐怖拇惋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情抹剩,我是刑警寧澤撑帖,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站澳眷,受9級特大地震影響胡嘿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钳踊,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一衷敌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拓瞪,春花似錦缴罗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蛆橡,卻和暖如春侧但,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背航罗。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工禀横, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粥血。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓柏锄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親复亏。 傳聞我的和親對象是個殘疾皇子趾娃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354