ubuntu安裝Kubernetes1.20.0

一、概述

由於業務需求,需要安裝版本比較高的k8s,比如:1.20.0

 

二、環境介紹

操作系統:ubuntu-18.04.6-server-amd64

配置:2核3g

ip地址:192.168.1.12

主機名:k8smaster

 

操作系統:ubuntu-18.04.6-server-amd64

配置:2核4g

ip地址:192.168.1.13

主機名:k8snode1

 

基礎環境配置

安裝docker

apt-get install docker.io

如果需要配置爲開機啓動,可執行以下命令

systemcd enable docker
systemcd start docker

 

配置 Docker 鏡像加速,編輯配置文件

vi /etc/docker/daemon.json

內容如下:

{
    "registry-mirrors": ["https://registry.docker-cn.com"]
}

 

重啓 Docker,使配置生效

sudo systemctl daemon-reload
sudo systemctl restart docker

 

修改主機名

比如修改master節點的,注意主機名不要帶有特殊字符

hostnamectl set-hostname k8smaster

添加hosts文件

192.168.1.12 k8smaster
192.168.1.13 k8snode1

 

關閉swap

臨時關閉

swapoff -a

 

永久關閉

修改 /etc/fstab 文件,註釋掉 SWAP 的自動掛載(永久關閉swap,重啓後生效)

# 註釋掉以下帶有swap字段的一行
/dev/mapper/cl-swap     swap                    swap    defaults        0 0

 

三、安裝kubeadm,kubelet,kubectl

添加更新源,修改文件

vi /etc/apt/sources.list

最後一行增加

deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main

 

安裝 https 工具以及 k8s

apt-get update && apt-get install -y apt-transport-https curl
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add 
apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated

 

下載鏡像

由於初始化時,需要連接到google,所以可能無法下載內容。

我們可以通過使用 kubeadm config images list 命令,列舉需要拉取的鏡像。我們來手動通過 Docker 拉取。這個過程比較麻煩,還需要手動修改鏡像名稱。

拉取方法 docker pull {鏡像名稱}

Google 訪問不了,不過 DockerHub 已經備份好需要的鏡像。

mirrorgooglecontainers 這個倉庫備份了相應的鏡像。遺憾的是,鏡像不一定都是最新的備份。阿里雲上面的 google_containers 倉庫應該是備份最新的。

 

新建腳本pullk8s.sh,內容如下:

for  i  in  `kubeadm config images list`;  do
    imageName=${i#k8s.gcr.io/}
    docker pull registry.aliyuncs.com/google_containers/$imageName
    docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
    docker rmi registry.aliyuncs.com/google_containers/$imageName
done;

執行腳本

bash pullk8s.sh

 

初始化

請根據實際情況,修改kubernetes-version和apiserver-advertise-address參數。

kubernetes-version是k8s版本,apiserver-advertise-address是k8s master節點ip

kubeadm init --kubernetes-version=1.20.0 --apiserver-advertise-address=192.168.1.12 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.1.0.0/16 --pod-network-cidr=10.222.0.0/16 --ignore-preflight-errors=Swap --ignore-preflight-errors=NumCPU

 

初始化成功後,會輸出一段信息,注意自己保存好。

配置kubectl工具

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

 

安裝flannel

使用谷歌瀏覽器下載文件,地址如下:

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

將yaml文件上傳到linux,然後執行安裝

kubectl apply -f kube-flannel.yml

 

設置開機啓動

systemctl enable kubelet

 

命令補全

apt-get install -y bash-completion

source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
source  ~/.bashrc

 

四、node加入集羣

注意:node節點,只需要安裝docker和kubeadm,kubelet,kubectl即可。

注意主機名已經修改正確,加入節點

kubeadm join 192.168.1.12:6443 --token sx0dph.jthe8rswjpozchsu \
    --discovery-token-ca-cert-hash sha256:f5325f7abf26ad375e139e231e587848c3ec41270f7bef2828b8adf428c3bc92 

 

登錄master節點,查看

root@k8smaster:~# kubectl get nodes
NAME        STATUS   ROLES                  AGE     VERSION
k8smaster   Ready    control-plane,master   3h38m   v1.20.0
k8snode1    Ready    <none>                 3h10m   v1.20.0

 

五、使用yaml發佈應用

以flaskapp爲例子

登錄k8smaster執行

flaskapp-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: flaskapp-1
spec:
  selector:
    matchLabels:
      run: flaskapp-1
  replicas: 1
  template:
    metadata:
      labels:
        run: flaskapp-1
    spec:
      containers:
      - name: flaskapp-1
        image: jcdemo/flaskapp
        ports:
        - containerPort: 5000
View Code

 

flaskapp-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: flaskapp-1
  labels:
    run: flaskapp-1
spec:
  type: NodePort
  ports:
  - port: 5000
    name: flaskapp-port
    targetPort: 5000
    protocol: TCP
    nodePort: 30005
  selector:
    run: flaskapp-1
View Code

 

加載yml文件

kubectl apply -f flaskapp-service.yaml 
kubectl apply -f flaskapp-deployment.yaml 

 

查看pod狀態

root@k8smaster:~# kubectl get pods 
NAME                          READY   STATUS    RESTARTS   AGE
flaskapp-1-84fbb4f499-646rw   1/1     Running   2          172m

等待幾分鐘,確保爲Running狀態

 

訪問頁面

使用master ip+nodeport訪問

http://192.168.1.12:30005/

效果如下:

 

 

 

本文參考鏈接:
https://www.cnblogs.com/bruce1992/p/15849111.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章