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
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
加载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