存在了一台虚拟机UbuntuServer = Master
启动node_one
click node_one for two once
Ubuntu_Server Install Begin
Enter
输入用户名
密码
Login Sucessful
input : ss- antp
确认点: SSH have Installed
input : ip addr
确认点:IP IS 192.17.197.21
WIN + R CMD 远程连接 Ubuntu Server
input: ssh [email protected]
input : yes
input : your password
确认点 : connect successful
Now Install Docker !
input : curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
input : your password
output:ok
input : sudo add-apt-repository “deb https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable”
output:
input: apt update && apt install docker-ce
–更新并安装 docker-ce 非企业版
input: docker run hello-world
output: command ‘docker’ not found
–根据提示
input: sudo apt install docker.io
output:
input:Y
Download Begin
Docker Installed
Now to test !
input : docker run hello-world
output:
–安装成功
Now Install kubernetes !
–首先配置更新源头
input: ls /etc/apt/sources.list.d
–确认目录 是否软件 kubernetes,同样作为确定安装成功/失败的手段
input : echo “deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main” | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
output:
–访问阿里云镜像成功
input : sudo gpg --keyserver keyserver.ubuntu.com --recv-keys BA07F4FB #对安装包进行签名
input: sudo gpg --export --armor BA07F4FB | sudo apt-key add -
output:
input: sudo apt-get update
input : ls /etc/apt/sources.list.d
output:
kubernetes show in list
update source sucessful !
–更新源配置成功
input :
nano /etc/fstab #永久关闭,注释掉swap那一行,推荐永久关闭
output:
–Now Step two Install kubernetes !–
–k8s 的 4个部分
input:
sudo apt-get install kubelet
output:
Y
input:
sudo apt-get install kubeadm
output:
Y
input:
sudo apt-get install kubectl
output:
input:
sudo apt-get install kubernetes-cni
output:
以上,安装完毕;
设置开机启动:
input:
sudo systemctl enable kubelet && systemctl start kubelet
–kubelet contorl docker
output:
查看kubectl版本:
input : kubectl version
output:
共配置三台虚拟机,分别为:
winning_8201
node_one
node_two
use vi editor for
主节点 | 子节点1 | 子节点2 |
---|---|---|
unbuntuserver | node_one | node_two |
click Esc 退出编辑模式
click 半角 分号 :
input: wq
input: cd /etc/netplan/
注:查看当前文件夹下的列表
output:
进入vi编辑器
通过之前 ip addr 确认的ip 进行输入
输入ifconfig
inet = ip
broadcast = gateway4
input:
network:
ethernets:
eth0:
addresses: [172.17.197.25/28] #ip && 子网掩码
dhcp4: false
gateway4: 172.17.197.25 #网关
# nameservers:
# addresses: [172.17.197.25]
#optional : true
version: 2
- - 因为没有外网所以不需要输入DNS
click : Esc
shift + :
input : wq
input : sudo vi /etc/hosts
进行如下修改:
172.17.197.25 gcr.io
172.17.197.25 k8s.gcr.io
172.17.197.25 quay.io
172.17.197.25 cr.zdgk.com.cn
172.17.197.21 node_one
172.17.197.22 node_two
每台机器配置完毕后,进行netplan的重启;
input : sudo netplan apply
配置Master节点的k8s网络
创建工作目录:
input : mkdir ~/k8s
input: cd ~/k8s
生成配置文件:(这部操作仅在master下执行)
在~/k8s$ 的路径下
input: kubeadm config print init-defaults ClusterConfiguration > kubeadm.conf
output:
在~/k8s$ 的路径下
input: vi kubeadm.conf
修改advertiseAddress为自己的ip地址,初始化为 1.2.3.4
advertiseAddress: 172.17.197.25
#配置pod地址
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
output:
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.18.0
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {}
“kubeadm.conf” 39L, 865C
拉取k8s需要的镜像
– 由于官方镜像地址被墙,所以我们需要首先获取所需镜像以及它们的版本。然后从国内镜像站获取。
在~/k8s$ 的路径下
input:
kubeadm config images list --config kubeadm.conf
获取镜像地址
以上参考
https://blog.csdn.net/zhangpeterx/article/details/104118210
虽然不够基础,但有一定的帮助;到镜像下载部分,由于版本升级,导致我这边无法效仿,采用以下方式;
input:
vi k8s_imgs.sh
output:
按照以下格式对文件进行调整 对齐
–给k8s_imgs.sh 赋予权限
input:ls
output: 我们可以看到 k8s 目录下(目录是蓝色的)
有了一个可执行的 k8s_imgs.sh(可执行文件是绿色)文件
下面进行 一些配置的补全
补全之后进行 ./k8s_imgs.sh + master ip 地址 进行镜像的下载
这边是准备进行Hostname配置的一个修改
参考机上的路径为 : vi /etc/cloud/cloud.conf
而我的机器上打开却是 空白的 如下图
这边初步判断为应该是名字不同
输入 cd /etc/cloud/
输入 ls 确认该路径下有什么
看到了俩个文件 cloud.cfg 与模板最为相近
/etc/cloud/路径下
input: sudo vi cloud.cfg
change:
preseve hostname: false - > true
hostname 为主机名
input:hostnamectl set-hostname node_two
–修改你指定的主机名
input: sudo su
–切换为超级用户root
input:reboot 重启
ssh 连接虚拟机
input:hostname
output:node_two
Install Docker:
添加配置文件
input: sudo su
input:
cat > /etc/docker/daemon.json <
“insecure-registries” : [“172.17.197.25”, “gcr.io”, “k8s.gcr.io”, “quay.io”],
“registry-mirrors”: [“https://wgs2temd.mirror.aliyuncs.com”],
“exec-opts”: [“native.cgroupdriver=systemd”],
“log-driver”: “json-file”,
“log-opts”: {
“max-size”: “100m”
},
“storage-driver”: “overlay2”
}
EOF
–以上ip地址为当前虚拟机的地址
–所有node的地址都指向master 就是ip地址均为master的
input :
systemctl daemon-reload && systemctl restart docker
input : systemctl status docker
output:
Active(runnning) 绿色
–点击Q 同 Ctrl + c 均可退出
input:
echo br_netfilter >> /etc/modules-load.d/modules.conf
modprobe br_netfilter
input:
#Check kernel module
lsmod | grep br_netfilter
cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
访问不了外网
ping www.baidu.com
sudo vi /etc/netplan/50-cloud-init.yaml
是这个配置文件导致的
docker 登记 仅需在master上执行
input : docker pull registry:2
output:
input:docker run -d -p 80:5000 --restart=always -v /mnt/registry:/var/lib/registry --name registry registry:2
output:
获取注册码:
cb1c5fa6f20c7e5c33482bbf03e1fb2940f2107be87ac1dd74576c61fe408ac2
修改imgs.sh 文件 进行正确下载
input:
vi imgs.sh
input:
#!/bin/bash
urls=($1/pause:3.2=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
$1/kube-controller-manager:v1.18.3=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.3
$1/kube-scheduler:v1.18.3=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.3
$1/kube-proxy:v1.18.3=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.3
$1/kube-apiserver:v1.18.3=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.3
$1/etcd:3.4.3-0=registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
$1/coredns:1.6.7=registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7
$1/kubernetes-ingress-controller/nginx-ingress-controller:0.31.0=registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.31.0)
function prepare_k8s_images() {
for url in u r l s [ @ ] ; d o I F S = ′ = ′ r e a d − r k e y v a l u e < < < " {urls[@]}; do IFS='=' read -r key value <<<" urls[@];doIFS=′=′read−rkeyvalue<<<"url"
docker pull ${value} && docker tag ${value} ${key} && docker push ${key} && docker rmi ${key} && docker rmi ${value} done
}
if [ $# -ne 1 ]; then
echo "Usage: $0 "
exit 1
fi
prepare_k8s_images
~
补全之后进行 ./k8s_imgs.sh + master ip 地址 进行镜像的下载
input: ./imgs.sh 172.17.197.25
output:
前提虚拟机最底要求两核
对hosts 文件进行修改
input:
172.17.197.25 gcr.io
172.17.197.25 k8s.gcr.io
172.17.197.25 quay.io
172.17.197.25 cr.zdgk.com.cn
172.17.197.25 cluster-endpoint
172.17.197.21 node_one
172.17.197.22 node_two
input:
sudo kubeadm init --image-repository=172.17.197.25 --control-plane-endpoint=cluster-endpoint --kubernetes-version=1.18.3 --pod-network-cidr=10.96.0.0/16 --upload-certs
–172.17.197.25 master ip地址
– 如果执行此操作中间发生了中断,需要重启集群配置,sudo kubeadm reset
output:
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 ( i d − u ) : (id -u): (id−u):(id -g) $HOME/.kube/config
此段输出用于 Node 加入集群 或者 其他Master 加入集群
kubeadm join cluster-endpoint:6443 --token psv9rp.yui74mjclmhp2cgp
–discovery-token-ca-cert-hash sha256:25ba8a2c293762982a5bb5aeec452ed1f4bf9711a01d04ed4d869fb6932bc1b5
–control-plane --certificate-key 16114039102d2ef2785a48a67624c6b47eb9579c62145cb07f9ef60f60cab047
– Kubernetes control-plane 成功!
– 以用户角色执行
input:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown ( i d − u ) : (id -u): (id−u):(id -g) $HOME/.kube/config
–导入方法
D:>scp calico.yml [email protected]:~/
[email protected]’s password:
calico.yml
input: kubectl config get-contexts
output:
这里我们可以看到
kubectl AUTHINFO
处已经产生了值:kubernetes-admin 说明 3. 这一步真正的执行成功
input:
kubectl apply -f calico.yml
sudo kubeadm join 172.17.197.25:6443 --token psv9rp.yui74mjclmhp2cgp
–discovery-token-ca-cert-hash sha256:25ba8a2c293762982a5bb5aeec452ed1f4bf9711a01d04ed4d869fb6932bc1b5