ubuntu20.04.04搭建docker,k8s

以下均在root用户下操作,个人学习使用,部署环境时均使用官网最新版本。

1、修改配置能信息

1)查看swap是否关闭,

输入free -m,若Swap一栏均为0,则已关闭;

#关闭swap(临时关闭防火墙,)

swapoff -a 

 #关闭swap(永久,重启系统生效)

sed -ri 's/.*swap.*/#&/' /etc/fstab

最新k8s版本是否支持swap,可参考官方文档。

2)查看防火墙是否关闭,

输入ufw status,若显示为Status: inactive,则已关闭;

ufw disable,关闭防火墙,

3)iptables配置,

#将桥接的IPV4流量传递到iptables链中,

cat >> /etc/sysctl.d/k8s.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

#net.ipv4.ip_forward = 1

#user.max_user_namespaces=28633

EOF

带#的部分,目前我没有配置。

输入:sysctl --system,或 sysctl -p /etc/sysctl.d/k8s.conf 生效,

#允许 iptables 检查桥接流量,

cat <<EOF | tee /etc/modules-load.d/k8s.conf

br_netfilter

EOF

输入:sysctl --system,或modprobe br_netfilter 生效,

4)设置主机hosts,

cat >> /etc/hosts << EOF

10.0.0.55 k8smaster

EOF

2、安装docker,

1)先备份,cp /etc/apt/sources.listcp /etc/apt/sources.list /etc/apt/sources.list.bak

安装依赖:apt-get -y install apt-transport-https ca-certificates curl softwareproperties-common

安装证书:curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/

gpg | sudo apt-key add -

添加源:add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/

docker-ce/linux/ubuntu $(lsb_release -cs) stable"

更新,

apt-get -y update

安装 Docker:apt -y install docker-ce

2)配置docker镜像,

tee /etc/docker/daemon.json<<-'EOF'

{"registry-mirror": [

    "https://8jkycesx.mirror.aliyuncs.com"],

"exec-opts": ["native.cgroupdriver=systemd"]

}

EOF

systemctl daemon-reload

systemctl restart docker

docker --version

3、安装k8s kubelet kubeadm kubectl

# 安装基础软件并设置源

1)apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl

2)curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

3)tee /etc/apt/sources.list.d/kubernetes.list <<EOF

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

EOF

# 刷新软件列表,然后直接安装,

apt-get update

apt-get install -y kubelet kubeadm kubectl

# 列出k8s需要的镜像,

kubeadm config images list

k8s.gcr.io/kube-apiserver:v1.24.3

k8s.gcr.io/kube-controller-manager:v1.24.3

k8s.gcr.io/kube-scheduler:v1.24.3

k8s.gcr.io/kube-proxy:v1.24.3

k8s.gcr.io/pause:3.7

k8s.gcr.io/etcd:3.5.3-0

k8s.gcr.io/coredns/coredns:v1.8.6

# 使用docker命令将对应版本镜像拉取下来,并重新打标签,

docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.24.3

docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.24.3 k8s.gcr.io/kube-apiserver:v1.24.3

...

# 完成所有镜像操作后,进行初始化

3.1 在master节点执行kubeadm初始化命令,

kubeadm init --control-plane-endpoint=10.0.0.55 --pod-network-cidr=10.244.0.0/16 --cri-socket=/run/containerd/containerd.sock --image-repository=registry.aliyuncs.com/google_containers

初始化过程中遇到的问题:

1)容器运行时 Containerd未部署,

apt-get install -y containerd.io

containerd -v

mkdir -p /etc/containerd/

containerd config default | tee /etc/containerd/config.toml

修改/etc/containerd/config.toml:

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]

  ...

  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]

    SystemdCgroup = true

再修改 /etc/containerd/config.toml 中的

[plugins."io.containerd.grpc.v1.cri"]

  ...

  # sandbox_image = "k8s.gcr.io/pause:3.6"

  sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.7"

systemctl start containerd

systemctl enable containerd

3.2 使用yaml文件进行初始化,新建kubeadm-config.yaml,

内容如:

apiVersion: kubeadm.k8s.io/v1beta3

bootstrapTokens:

- groups:

  - system: bootstrappers:kubeadm:default-node-token

  token: abcdef.0123456789abcdef

  ttl: 24h0m0s

  usages:

  - signing

  - authentication

kind: InitConfiguration

localAPIEndpoint:

  advertiseAddress: 10.0.0.55

  bindPort: 6443

nodeRegistration:

  criSocket: /var/run/dockershim.sock

  imagePullPolicy: IfNotPresent

  name: master

  taints:

  - effect: PreferNoSchedule

    key: node-role.kubernetes.io/master

---

apiServer:

  timeoutForControlPlane: 4m0s

apiVersion: kubeadm.k8s.io/v1beta3

certificatesDir: /etc/kubernetes/pki

clusterName: kubernetes

controllerManager: {}

dns: {}

etcd:

  local:

    dataDir: /var/lib/etcd

imageRepository: registry.aliyuncs.com/google_containers

kind: ClusterConfiguration

kubernetesVersion: 1.24.3

networking:

  dnsDomain: cluster.local

  serviceSubnet: 10.96.0.0/12

  podSubnet: 10.244.0.0/16

scheduler: {}

---

apiVersion: kubelet.config.k8s.io/v1beta1

kind: KubeletConfiguration

cgroupDriver: systemd

failSwapOn: false

---

apiVersion: kubeproxy.config.k8s.io/v1alpha1

kind: KubeProxyConfiguration

mode: ipvs

ubuntu格式化yaml文件,

vim kubeadm-config.yaml

vim下,输入":set paste",再进入insert模式,编辑保存,

kubeadm init --config kubeadm-config.yaml

3.3 1)配置环境变量

以便你能正常使用 kubectl 进行集群的操作,对于常规用户用如下命令,

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id-u):$(id-g) $HOME/.kube/config

对于 root 用户,执行如下命令

exportKUBECONFIG=/etc/kubernetes/admin.conf

第二件事:将节点加入集群

后面要将 worker 节点加入集群,就要执行这条命令,

kubeadm join 10.0.0.55:6443 --token abcdef.0123456789abcdef        --discovery-token-ca-cert-hash sha256:abff18ed13b8f78c5b157da3b67445aa0112b563e0892b4a737631ac26b14502

kubeadm token create --print-join-command 可以更新上述命令。

3.4 部署 calico

kubectl apply -f https://projectcalico.docs.tigera.io/v3.23/manifests/calico.yaml

kubectl get pod -A

等待网络 ok 后,再次确认下集群的环境,

所有的 Pod 均已 Running,所有的 node 均已 Ready

3.5创建一个简单的 redis pod。

参考https://kubernetes.io/zh-cn/docs/tutorials/configuration/configure-redis-using-configmap/

3.6部署dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.0/aio/deploy/recommended.yaml

再参考下述链接,创建用户,

https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容