阿里云镜像地址

docker-ce镜像

Ubuntu系列:

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]

centos系列

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ee.repo
#   将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]

k8s镜像

Ubuntu系列

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 kubelet kubeadm kubectl

centos系列

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1        ### 可以设置为0,后续就不用了
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

正式安装

关闭selinux

关闭IP tables/firewalld

网络时间同步:

yum install ntpdate -y
ntpdate  0.cn.pool.ntp.org 
时区设置(CST):
mv /etc/localtime /etc/localtime-bak
cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

将桥接的IPv4流量传递到iptables

cat > /etc/sysctl.d/k8s.conf << EOF
   net.bridge.bridge-nf-call-ip6tables = 1
   net.bridge.bridge-nf-call-iptables = 1
   EOF
sysctl --system
 或者:
 echo 1 >  /proc/sys/net/bridge/bridge-nf-call-ip6tables
 echo 1 >  /proc/sys/net/bridge/bridge-nf-call-iptables
 echo 1 >  /proc/sys/net/ipv4/ip_forward

k8s-master下载

yum install kubeclt kubelet kubuadm docker-ce -y 
由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y --nogpgcheck kubelet kubeadm kubectl 安装
systemctl enable kubelet
systemctl enable docker

kubeadm init \
  --kubernetes-version=v1.17.0  \
  --image-repository registry.aliyuncs.com/google_containers \
  --service-cidr=10.96.0.0/16  \
  --pod-network-cidr=10.244.0.0/16
 安装成功之后,使用kubectl get nodes 发现master status is NotReady
 原因是:没有安装网络组件,可以安装flannel。
 地址:https://github.com/coreos/flannel
 位置:Deploying flannel manually
 在master端执行:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml	
 
 客户端添加进集群使用kubeadm join ********,不用自行安装网络组件。
 

节点删除

master: kubectl delete node 节点名
被删node:
	kubeadm reset
	ifconfig cni0 down
	ip link delete cni0
	ifconfig flannel.1 down
	ip link delete flannel.1
	rm -rf /var/lib/cni/
	systemctl stop kubele

kube-proxy 开启 ipvs

master: yum install ipvsadm -y 
以下所有节点都需要执行
vim /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
chmod +x /etc/sysconfig/modules/ipvs.modules
source /etc/sysconfig/modules/ipvs.modules


#查看是否生效
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
kubectl edit cm kube-proxy -n kube-system
...
    ipvs:
      excludeCIDRs: null
      minSyncPeriod: 0s
      scheduler: ""
      strictARP: false
      syncPeriod: 30s
    kind: KubeProxyConfiguration
    metricsBindAddress: 127.0.0.1:10249
    mode: "ipvs"
    nodePortAddresses: null
    oomScoreAdj: -999
    portRange: ""
    resourceContainer: /kube-proxy
...

configmap/kube-proxy edited
查看:
kubectl get pods -n kube-system|grep proxy
批量删除 kube-proxy:
kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
由于你已经通过ConfigMap修改了kube-proxy的配置,所以后期增加的Node节点,会直接使用ipvs模式。
ipvsadm测试,可以查看之前创建的Service已经使用LVS创建了集群。
ipvsadm -Ln

token过期

注意:token默认有效期为24小时,当过期之后,当前token就不可用了。
解决方法如下

1:查看当前token
kubeadm token list
TOKEN                     TTL         EXPIRES                     USAGES                   DESCRIPTION                                                EXTRA GROUPS
4fgj9q.grqusxes57y8x96o   22h         2019-12-29T15:50:15+08:00   authentication,signing   The default bootstrap token generated by 'kubeadm init'.   system:bootstrappers:kubeadm:default-node-token

1.1:在master节点查看集群的token值
kubeadm token create --print-join-command
kubeadm join 172.19.79.159:6443 --token ys9im8.xroi5dom07ts6d4d     --discovery-token-ca-cert-hash sha256:687b53693c5ae0e2b6cca90e064b9ddd8f16eb80195434aa56136802be8ae8d9

2:如果过期则重新生成新的token
kubeadm token create
[kubeadm] WARNING: starting in 1.8, tokens expire after 24 hours by default (if you require a non-expiring token use --ttl 0)
s78sf6.8b4cghc8ed26c34f
3:获取ca证书sha256编码的hash值
[root@walker-1 kubernetes]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
0fd95a9bc67a7bf0ef42da968a0d55d92e52898ec37c971bd77ee501d845b538
4:节点加入集群
kubeadm join 192.168.31.10:6443 --token 4fgj9q.grqusxes57y8x96o \
    --discovery-token-ca-cert-hash sha256:b00cf8a4cbb0c99ef3590aadd367e5ac93aa15e41ae4301a09797fab13e838e4 

docker国内镜像加速地址

 #Docker 官方中国区
https://registry.docker-cn.com
#网易
http://hub-mirror.c.163.com
#ustc
https://docker.mirrors.ustc.edu.cn
#aliyun
http://registry.aliyuncs.com/

vim /etc/docker/daemon.json
内容示例
{
“registry-mirrors”: [“http://hub-mirror.c.163.com”]
}
systemctl daemon-reload
systemctl restart docker
##阿里云镜像加速设置参考
https://help.aliyun.com/document_detail/60750.html

flannel下的k8s下的pod及容器无法跨主机通信,ping kubenetes 无法解析等。

在这里插入图片描述
上图为创建的busybox无法解析server,和nginx容器;

 这是由于linux还有底层的iptables,所以在node上分别执行
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -L -n
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐