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

 

posted @ 2022-05-20 17:53  肖祥  阅读(422)  评论(0编辑  收藏  举报