搭建k8s集群

字號+ 編輯: 国内TP粉 修訂: 种花家 來源: Go语言中文网 linuGo 2023-09-23 我要說兩句(0)

網上轉載的k8s搭建筆記。

在公司一直用的現成的kubernetes環境,封裝的組件很多,這次嘗試自己搭一個輕量級的環境,踩了好多坑,下面經驗奉上。

前置要求:兩台主機,可以是雲服務器、虛擬機,網路要互通,内存最好大於2GB,主機上都要提前安裝Docker。

下面我使用的兩台主機。

主機名(centos)    ip    角色    

test-50    192.168.9.50    Master

test-51    192.168.9.51    slave

搭建過程

1、首先在兩台主機配置阿裡雲鏡像源地址

#進入root用戶
sudo su
#配置鏡像地址
cat </etc/yum.repos.d/kubernetes.repo [kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF

2、設置兩台主機SELinux爲disable,設置swap進禁用

#禁用SELinux
setenforce 0
#禁用swap,由於啓動swap會産生性能問題,所以k8s默認禁用
swapsed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a

3、在兩台主機分別安裝kubeadm,kubelet,kubectl

yum install -y kubelet kubeadm kubectl

4、兩台主機設置開機自啓

systemctl enable kubelet.service

5、創建集群

#在準備作爲master節點的主機運行命令
kubeadm init \
  --kubernetes-version=v1.19.0 \
  --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
  --pod-network-cidr=10.24.0.0/16 \
  --ignore-preflight-errors=Swap# --kubernetes-version 指定版本
# --image-repository 由於牆的問題,使用阿裡雲的鏡像地址
# --pod-network-cidr 設置pod區間,不設置也可正常工作
# --ignore-preflight-errors 如果預檢出現錯誤可以忽略

此時可以看到各個組件已經啓動起來了

如果上一步出現錯誤,需要重置kubeadm

kubeadm reset

6、但是此時kubectl命令行不能用,需要將kubeconfig複制到指定位置

#切回普通用戶
su centos
#拷貝文档
mkdir ~/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

此時查看集群信息

kubectl get node

可以看到是NotReady,原因是沒有準備CNI網路插件

7、安裝CNI網路插件

這裡安裝的weave

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
~ $ kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n' )"
serviceaccount/weave-net created
clusterrole.rbac.authorization.k8s.io/weave-net created
clusterrolebinding.rbac.authorization.k8s.io/weave-net created
rolebinding.rbac.authorization.k8s.io/weave-net created
daemonset.apps/weave-net created

等待安裝完成。

稍候再查看master,狀態爲Ready

~$ kubectl get node

NAME  STATUS  ROLES  AGE  VERSION

test-50  Ready  master  57m  v1.19.3

8、node節點的加入

#首先在master獲取token,在master執行
kubeadm token list
#如果token已經過期,體現爲找不到token,執行以下命令生成token
kubeadm token create #生成token
~$ kubeadm token list
TOKEN  TTL  EXPIRES
dw7q0r.3ru1vrmwo84kprwd  22h  2020-12-29T19:16:37+08:00
  token

在master獲取ca证書sha256編碼hash值

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
80b4e8b8445f748e76161b52ebea99933ad7c4c1397d35b07c035ce765528a22

在slave上執行kubeadm join

sudo su #進入root用戶

kubeadm join <master-ip:port> \ #master-ip:port爲kubeconfig文档的ip和port

--token  <token> \ #上一步的token

--discovery-token-ca-cert-hash sha256:<hash>#上一步的hash

查看終耑

[root@guozha0-51 script]# kubeadm join 10.0.0.208:6443 -- token k69336,gpgqoki sbyux8ek1 -- discovery- token-ca-c
[preflight] Running pre-flight checks
        [WARNING I sDockerSys temdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended drive
        [WARNING Hos tname]: hos tname "guozhao-51" could not be reached
        [WARNING Hos tname] : hos tname "guozhao-51": lookup guozhao-51 on 10.0.0. 40:53: no such host
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with ' kubectl -n kube-system get Cm kubeadm-config -oyaml'
[kubelet-start] Wri ting kubelet configuration to file "/var/lib/ kubelet/config. yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var /lib/ kubelet/ kubeadm- flags . env",jp:port
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Boots trap...
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 control-plane to see this node join the cluster.

注:如果遇到下面錯誤

[ERROR FileContent--proc-sys-net-bridge-nf-call-iptables] /proc/sys/net/bridge/bridge-nf-call-iptables content are ...

執行命令:

echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables

9、在node節點使用kubeconfig

將master節點的kubeconfig文档複制到slave節點普通用戶的~/.kube下

10、查看節點情況

#開始可能會出現node節點NotReady,等待鏡像拉取完畢會變爲Ready
kubectl get node
~ $ kubectl get node
NAME  STATUS  ROLES  AGE  VERSION
test-50  Ready  master  40m  v1.19.3
test-51  Ready  <none>  8m8s  v1.19.3

此時一主一從的k8s集群已經搭建完畢。

閲完此文,您的感想如何?
  • 有用

    0

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • 防止退出linux終耑退出之後導致的nohup進程強制退出

  • Linux系統下word文档轉成pdf的辦法

  • ubuntu和debian安裝nginx或者tengine報錯, 找不到pcre依賴庫的解決辦法

  • 常見的web中間件請求返回狀態碼

我要說說
網上賓友點評