Kubernetes_v1.18.2环境搭建 博主亲自实践可用

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: Kubernetes_v1.18.2环境搭建 博主亲自实践可用

环境要求

  • 至少2台 2核4G 的服务器
  • 不能使用 localhost 作为hostname
  • 所有节点网络必须互通

博主这边准备的是 3台 2核4G的ubuntu18.04 虚拟机。

切换apt为阿里云源

  • /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

修改hostname

vi /etc/hostname

禁用交换内存

这个会导致某个程序占用过多导致机器死机 少用交换内存

swapoff -a

设置桥接流量要求

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

安装docker 这里直接用ubuntu apt的

  • docker
apt install docker.io

配置docker阿里云加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://9fx2xqey.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

安装kubeadm

  • kubeadm:引导集群的命令。
  • kubelet:在群集中所有计算机上运行的组件,它执行诸如启动Pod和容器之类的操作。
  • kubectl:用于与您的集群通信的命令行工具。

在上述安装 kubeadm 的过程中,kubeadm 和 kubelet、kubectl、kubernetes-cni 这几个二进制文件都会被自动安装好。

阿里提供了镜像,方便大家下载 详情看https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.3e221b11VlJoux

apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF  
apt-get update
apt-get install -y kubeadm

提前拉起所需镜像

sudo docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.18.2
sudo docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.18.2
sudo docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.18.2
sudo docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.18.2
sudo docker pull registry.aliyuncs.com/google_containers/pause:3.2
sudo docker pull registry.aliyuncs.com/google_containers/etcd:3.4.3-0
sudo docker pull registry.aliyuncs.com/google_containers/coredns:1.6.7

将阿里云的惊喜重新打上tag 让kubuadm可以识别到

sudo docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.18.2 k8s.gcr.io/kube-apiserver:v1.18.2
sudo docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.18.2 k8s.gcr.io/kube-controller-manager:v1.18.2
sudo docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.18.2 k8s.gcr.io/kube-scheduler:v1.18.2
sudo docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.18.2 k8s.gcr.io/kube-proxy:v1.18.2
sudo docker tag registry.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
sudo docker tag registry.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
sudo docker tag registry.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7

虚拟机可以开始复制了。

环境说明

  • node1 192.168.28.131
  • node2 192.168.28.100
  • node3 192.168.28.99

集群搭建

创建Master节点

  • 查看Kubernetes版本
kubelet --version
Kubernetes v1.18.2
  • 查看搭建k8s所需镜像
kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.18.2
k8s.gcr.io/kube-controller-manager:v1.18.2
k8s.gcr.io/kube-scheduler:v1.18.2
k8s.gcr.io/kube-proxy:v1.18.2
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.7

因为这些都在国外,所以我们要在国内下载,并能让kubuadm识别到,这些镜像是可以在初始化master之前提前下载的。

初始化

sudo systemctl enable docker.service # 启动docker服务
vim /etc/docker/daemon.json  # k8s要求cgroups为systemd
{
  "registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
  • Master开搞
sudo kubeadm init
# 有些人在初始化的时候就指定了pod的ip等。我们这里还没有安装网络插件 等会我们再弄 先直接初始化 有想了解一下默认值的可以去看官网
# 成功了
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.28.131:6443 --token 1e0gpf.tnph6fuvlf1rphxy \
    --discovery-token-ca-cert-hash sha256:3de217f1be9b6cb646d9fe1b68ed04a49be25103ee33062d6fc63a0ca750ccd5
  • 使用集群 普通用户执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • root 用户 执行
export KUBECONFIG=/etc/kubernetes/admin.conf

安装网络插件

Kubernetes为了网络的扩展性,有一套网络插件的接口(CNI),具体流行插件实现有:FlannelCalicoCanalWeave 等等

这些网络主要是为我们的Pod提供统一网络

我们这里先选择 Weave,后面再来说一下这些网络插件的差别

  • 安装 Weave
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
kubectl get pods -n kube-system # 查看系统pod是否正常运行 全部正常运行就可以啦
kubectl get pods #能正常运行就代表ok
kubectl get pods --all-namespaces # 查看一下网络pod是否正常运行

部署worker节点

worker node很简单,不需要初始化那些master节点的东西,只需安装dockerkubeadm即可。

node2node3上执行加入集群命令

kubeadm join 192.168.28.131:6443 --token 1e0gpf.tnph6fuvlf1rphxy \
    --discovery-token-ca-cert-hash sha256:3de217f1be9b6cb646d9fe1b68ed04a49be25103ee33062d6fc63a0ca750ccd5

Master 上查看集群节点

kubect get nodes

查错命令

# 查看日志
journalctl -f -u kubelet
# 删除集群节点
kubectl delete node node3
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
存储 运维 Kubernetes
服务搭建篇(十二) Kubernetes集群的安装及部署
在所有k8s node机器执行上图第三个红框里的命令 将node节点加入进master节点的集群里,复制上图第三个红框里的命令执行(执行自己的命令)
311 0
|
6月前
|
Web App开发 Kubernetes 数据可视化
Kubernetes Dashboard 可视化插件部署 博主亲自实践可用
Kubernetes Dashboard 可视化插件部署 博主亲自实践可用
129 0
|
6月前
|
Kubernetes 监控 API
第一章 Kubernetes 简介
第一章 Kubernetes 简介
56 3
|
6月前
|
canal Kubernetes Docker
Kubernetes_v1.18.2环境搭建 博主亲自实践可用
Kubernetes_v1.18.2环境搭建 博主亲自实践可用
84 0
|
11月前
|
域名解析 存储 Kubernetes
kubernets学习 -环境搭建
kubernets学习 -环境搭建
|
Kubernetes Cloud Native 容器
《深入浅出Kubernetes》下载
《深入浅出Kubernetes》分为理论篇和实践篇,12篇技术文章帮你了解集群控制、集群伸缩原理、镜像拉取等理论,一次搞懂6个核心原理吃透基础理论,实现从基础概念的准确理解到上手实操的精准熟练,深入浅出使用Kubernetes!
230 0
 《深入浅出Kubernetes》下载
|
监控 Kubernetes Perl
Kubernetes版快速入门的实验报告-9
Kubernetes版快速入门的实验报告-9
109 0
Kubernetes版快速入门的实验报告-9
|
运维 Kubernetes Shell
Kubernetes常用命令大全(持续更新)(下)
create 根据文件或标准输入(stdin)创建资源。
|
Kubernetes 应用服务中间件 nginx
Kubernetes常用命令大全(持续更新)(上)
create 根据文件或标准输入(stdin)创建资源。
|
Kubernetes Linux 网络安全
『Kubernetes』Linux安装K8S集群过程笔记
📣读完这篇文章里你能收获到 - K8S安装全过程 - 博主自己实操笔记带你跳过所有坑
684 0
『Kubernetes』Linux安装K8S集群过程笔记