ubuntu18 安装k8s、openyurt
k8s 安装
参考链接
ubuntu部署k8s https://blog.csdn.net/SHELLCODE_8BIT/article/details/122192034
ubuntu 永久关闭swap https://blog.csdn.net/Marco_90/article/details/121491195
虚拟机组网 https://www.jianshu.com/p/e6684182471b
https://www.cnblogs.com/wwph/p/14203626.html#!comments
k8s 1.24.3的安装,可以直接参考这两个链接
https://blog.csdn.net/weixin_43501172/article/details/125869017
https://www.pudn.com/news/6287bcd2b305d84a4f93d74d.html#2577_worker_node_1731
kubeedge 安装 ,参考
https://blog.csdn.net/qq_42007073/article/details/124959523?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165724359016780366535829%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165724359016780366535829&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-124959523-null-null.142v32new_blog_pos_by_title,185v2tag_show&utm_term=kubeedge%20ubuntu&spm=1018.2226.3001.4187
https://v1-9.docs.kubeedge.io/zh/docs/setup/keadm_zh/
sedna 安装
https://blog.csdn.net/MacWx/article/details/130200209
sedna 案例
https://blog.csdn.net/weixin_40944277/article/details/120537050
现在flannel 网络有问题
1、关闭swap 内存
free -m 命令可以查看是否开内存交换
2、docker
加粗样式## 2.1 安装docker
参考 https://blog.csdn.net/x7536987/article/details/124808845
我的版本如下
2.2 docker 配置
docker cgroup 需要用systemd,20.10以上版本默认应该是systemd
# 查看Cgroup版本
docker info | grep Cgroup
如果不是 systemd
那么
sudo vi /etc/docker/daemon.json
打开后输入以下内容:
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn"
],
"exec-opts": [ "native.cgroupdriver=systemd" ]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
3、虚拟机组网,保证ssh能访问
3.1 master、node设置静态ip
参考链接 https://www.idcspy.com/37633.html
3.2 两台电脑设置hostname
k8s-master、k8s-node-01
# 查看当前的hostname
hostname 或hostnamectl
# 修改hostname
hostnamectl set-hostname k8s-master # master节点的主机名
hostnamectl set-hostname k8s-node1 # node1节点的主机名
# 在两台机器上打开/etc/hosts加入
192.168.129.203 k8s-master kube-apiserver
192.168.129.202 k8s-node1
3.3 设置ssh,想要免密访问的node
sudo vi ~/.ssh/config
#指定node别名为 k8s-node1
Host k8s-node1
# 指定node目标 ip
hostname 192.168.129.202
# 指定登录用户名
user martin
验证ssh
master 就可以直接ssh登录k8s-node-01
免密钥登录
参考 http://t.zoukankan.com/orange911-p-8669096.html
4 安装k8s
安装完了 docker 就可以下载 k8s 的三个主要组件kubelet、kubeadm以及kubectl了。这一步master、node都需要进行安装。先来简单介绍一下这三者:
kubelet: k8s 的核心服务
kubeadm: 这个是用于快速安装 k8s 的一个集成工具,我们在master1和worker1上的 k8s 部署都将使用它来完成。
kubectl: k8s 的命令行工具,部署完成之后后续的操作都要用它来执行
其实这三个的下载很简单,直接用apt-get就好了,但是因为某些原因,它们的下载地址不存在了。所以我们需要用国内的镜像站来下载,也很简单,依次执行下面五条命令即可:
# 更改net.bridge.bridge-nf-call-iptables的值为1
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
# 安装kubeadm kubeadm kubectl
sudo apt-get update && sudo apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo tee /etc/apt/sources.list.d/kubernetes.list <<EOF
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt-get update
apt-cache madison kubelet 可以先查看一下版本,建议不要装最新的
apt-get install -y kubelet=1.18.6-00 kubeadm=1.18.6-00 kubectl=1.18.6-00
sudo apt-mark hold kubelet kubeadm kubectl # master、node都要运行这些命令
# 启动 master运行这个命令
kubeadm init --kubernetes-version=v1.18.6 --image-repository registry.aliyuncs.com/google_containers
# node 运行这个命令
kubeadm join 192.168.129.203:6443 --token wwl30a.5cgtfylfrywb8faw \
--discovery-token-ca-cert-hash sha256:e414b291dea9f318869b6f4b79f24c470423c3986c64282578ef33e1f96ce083 #这条命令来自于master 成功后的最下方。可以在master节点上使用kubeadm token create --print-join-command命令来重新生成一条
一定要注意版本,默认最新版本一直装不上,因为这个版本问题,我卡住了三天了,他妈的
然后就成功了
到这里,master、node就可以了
5 配置cni网络
kubectl get nodes 查看节点,发现节点notready
$ kubectl get nodes -o wide |grep NotReady
$ kubectl describe node [node-ip] #查看节点状态,会发现跟notready 跟 cni有关系,需要配置cni网络
参考链接 https://blog.csdn.net/yangshihuz/article/details/113585122
6 测试master、node
- 添加 cni 配置(云端管控节点和树莓派都需要配置),本文搭建的集群使用主机网络。创建 cni 配置文件 /etc/cni/net.d/0-loopback.conf,并将如下内容拷贝到该文件中。
{
“cniVersion”: “0.3.0”,
“name”: “lo”,
“type”: “loopback”
}
- 删除 master node 的CoreDNS(本文 Demo 中 CoreDNS 不需要使用),并将 master 节点的 taints 去掉(方便后续部署 OpenYurt 组件)。
kubectl delete deployment coredns -n kube-system
kubectl taint node master-node http://node-role.kubernetes.io
# 原生 K8s 集群在边缘场景中的问题
基于上述环境,我们来测试一下原生 K8s 在云管边架构中对云边运维的支持和对云边网络断开时的反应。首先,我们从云端部署一个测试应用 nginx,在 master 节点上执行 kubectl apply -f nginx.yaml,具体的部署 yaml 如下。
> 注意:nodeSelector 选择 k8s-node1 节点,主机网络配置为 true,并配置 pod 的容忍时间为 5s(默认 5min, 此处配置便于演示 pod 驱逐)。
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
tolerations:
- key: "node.kubernetes.io/unreachable"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 5
- key: "node.kubernetes.io/not-ready"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 5
nodeSelector:
kubernetes.io/hostname: k8s-node1
containers:
- name: nginx
image: nginx
hostNetwork: true
#查看部署结果:
kubectl get pods -owide
kubectl logs nginx
kubectl exec -it nginx sh
kubectl port-forward pod/nginx 8888:80
7、安装openyurt
首先是配置/etc/hosts ,配置ip和github 的对应,参考下面这个
# 构建yurtctl工具
git clone https://github.com/openyurtio/openyurt.git
cd openyurt
export GOOS=linux GOARCH=amd64
make build WHAT=cmd/yurtctl # 需要先安装golang 环境,再执行这个命令
# 安装golang环境,才能编译yurtctl工具
wget https://dl.google.com/go/go1.16.14.linux-amd64.tar.gz
sudo tar -zxvf go1.16.14.linux-amd64.tar.gz -C /usr/local/software
vim $HOME/.profile
export GOROOT=/usr/local/go/software
export PATH=$PATH:$GOROOT/bin
# 激活profile
source $HOME/.profile
或则
修改etc/environment文件,在PATH=后面的字符串中添加:/usr/local/software/go/bin ,这样做go环境永久生效
# 记得设置代理,不然编译yurtctl 的时候 ,proxy.golang.org/github.com 这个地址会一直timeout
go env -w GOPROXY=https://goproxy.cn
# 检查go version
go version
# 编译openyurt 工具
cd /usr/local/software/openyurt
make build WHAT=cmd/yurtctl
在 make build 的过程中,会多次 i/o timeout ,需要配置ip 和 地址的对应关系,参照上面的 ip和github对应关系,然后修改/etc/hosts,修改之后刷新网络
# 刷新网络
sudo service network-manager restart
# 再编译openyurt 工具
make build WHAT=cmd/yurtctl
初始化 master 节点 报错
1、unknown service runtime.v1alpha2.RuntimeService
参考链接 https://blog.csdn.net/weixin_40668374/article/details/124849090
2、报错超时
然后用 journalctl -xeu kubelet、 用kubectl get node 查看节点
参考链接 https://blog.csdn.net/CEVERY/article/details/108753379
3、8080端口错误、 6443 端口错误
https://blog.csdn.net/CEVERY/article/details/108753379
https://blog.csdn.net/sinat_28371057/article/details/109895159
kubeadm init 报错
https://blog.51cto.com/u_15082391/3536718
更多推荐
所有评论(0)